Почему не работает этот код для подсчета количества слов каждой длины? - PullRequest
0 голосов
/ 14 апреля 2019

Подсчет количества слов каждой длины в заданном текстовом файле.Слово - это любая подстрока любых символов, кроме пробела и конца строки.Подстрока, которая является словом, должна быть ограничена пробелом, концом строки или концом файла.

Я не понимаю, почему и где моя программа не работает. В нашей системе автоматического тестирования, программа ниже проходит восемь тестов из двадцати (вы не можетесм тесты).

Выходные данные должны быть:

длина слова - количество слов этой длины в тексте

каждое на новой строке в возрастающем порядке.Если количество слов этой длины равно нулю, нам не нужно его печатать.Вывод должен быть записан в файл.

#include <stdio.h>

long int c[99999];
int main() {
    FILE *input;
    input = fopen("input.txt", "r");
    FILE *output;
    output = fopen("output.txt", "w");
    char state = 0;
    int s;
    long int l = 0;
    for (s = fgetc(input); (s != EOF); s = fgetc(input)) {
        if (((s == '\n') || (s == '\0') || (s == ' ')) && (state == 1)) { c[l]++; l = 0; state = 0; }
        if (!((s == '\n') || (s == '\0') || (s == ' ')) && (state == 1)) l++;
        if (!((s == '\n') || (s == '\0') || (s == ' ')) && (state == 0)) {state = 1; l++;}
    }
    if ((s == EOF) && (state == 1)) c[l]++;
    for (int i = 1; i < 99999; i++) if (c[i] > 0) fprintf(output, "%d - %d\n", i, c[i]);
    fclose(input);
    fclose(output);
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...