Я собираюсь использовать «Язык программирования C» на K & R. Я пытаюсь выполнить упражнение 1-13, чтобы получить гистограмму длины слова ввода. Вот что я пробовал. Я не получаю последнюю длину слова. Как это исправить?Упражнение на языке программирования C 1 - 13
#define space ' '
#define maxLength 100
#include <stdio.h>
int main() {
int c, result[maxLength], count, i, maxWordLength;
count = maxWordLength = 0;
for (i = 0; i < maxLength; ++i)
result[i] = 0;
while ((c = getchar()) != '0') {
if (!((c == space) || (c == '\t') || (c == '\n')))
++count;
else {
++result[count];
if (count > maxWordLength)
maxWordLength = count;
count = 0;
}
}
for (i = 1; i <= maxWordLength; ++i)
printf("\n%d\t%d\n", i, result[i]);
return 0;
}
Ниже мой вход
1 12
123 1234 12345
1234560
и выход идет как это, не давая последнее слово длины
1 1
2 1
3 1
4 1
5 1
я понял, почему это произошло. Но как это исправить?
если размер последнего слова меньше, чем 'maxWordLenght'? – noufal
Ах, правда, это должно быть «count», затем, исправлено. Если после последнего слова есть пробел, и до окончания «0» программа теперь увеличит счетчик для слов длиной 0, но это значение, которое вы не используете, поэтому это не имеет значения. – Joni
и это тоже 'if (count> maxWordLength) maxWordLength = count;' right? – noufal