Загрузка...

You need to solve the problem in C ++

Thread in C/C++ created by Ic3Cr34M Nov 13, 2020. 265 views

  1. Ic3Cr34M
    Ic3Cr34M Topic starter Nov 13, 2020 Banned 510 May 6, 2017
  2. BRIKUS
    BRIKUS Nov 13, 2020 246 Nov 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
Loading...