Загрузка...

Нужно решить задачу на C++

Тема в разделе C/C++ создана пользователем Ic3Cr34M 13 ноя 2020. 261 просмотр

  1. Ic3Cr34M
    Ic3Cr34M Автор темы 13 ноя 2020 Заблокирован(а) 510 6 май 2017
    13 ноя 2020 Изменено
  2. BRIKUS
    BRIKUS 13 ноя 2020 246 10 ноя 2020
    Вариант 1.
    Файл input.dat содержит несколько строк текста. Слова в тексте могут разделяться пробелами и знаками препинания. Переписать текст в файл output.dat, удалив, если необходимо, какое-то количество слов, так чтобы не осталось слов, имеющих одинаковое сочетание первых двух букв.

    Конечно, много вопросов есть по условию, что за текст (кириллица, латиница), что в условии подразумевается под знаками препинания, ну и главный вопрос, что значит сочетание первых двух букв? (сделал если буквы одинаковые). С помощью этого кода, остальные задачи делаются легко (немножко изменяя).

    Код ниже, либо скачать файл
    Скачать файл input dat
    Dev-C++
    C
    #include <iostream>
    #include <Windows.h>

    int main()
    {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    FILE* fin = fopen("input.dat", "rt");
    FILE* fout = fopen("output.dat", "wt");
    int isLet = 0;
    char word[255];
    int len = 0;
    int c = 0;
    char ch;
    while ((ch = getc(fin)) != EOF){
    if((ch != ' ') && (ch != ',') && (ch != '.') && (ch != '!') && (ch != '?')
    && (ch != '\n') && (ch != ';') && (ch != ':') && (ch != '-') && (ch != '(')
    && (ch != ')') && (ch != '\"')){
    if(!isLet){
    len = 0;
    isLet = 1;
    };
    word[len++] = ch;
    }
    else{
    if(isLet){
    word[len] = '\0';
    if(word[0] != word[1]) fprintf(fout, "%s", word);
    }
    isLet = 0;
    fprintf(fout, "%c", ch);
    };
    }
    fclose(fin);
    fclose(fout);
    return 0;
    }
     
Загрузка...
Top