Упражнение 1.11. Как бы вы протестировали программу подсчета слов? Какого рода входной поток скорее всего выявит ошибки в программе (если таковые есть)?
Дана программа:
/* подсчет строк, слов и символов во входном потоке */
#include "stdafx.h"
#define IN 1 /* внутри слова */
#define OUT 0 /* снаружи слова */
int main()
{
int c, state; // символ, состояние
int nl, nw, nc; // новая строка, новое слово, новый символ
state = OUT;
nl = nw = nc = 0;
while ((c = getchar()) != EOF) {
++nc;
if (c == '\n')
++nl;
if (c == ' ' || c == '\n' || c == '\t')
state = OUT;
else if (state == OUT) {
state = IN;
++nw;
}
}
printf("\n%d new characters\n%d new lines\n%d new words\n", nc, nl, nw);
}
Тестируем программу:
Программа утверждает, что мы напечатали 5 слов, на самом же деле слов здесь нет.
Вывод: ошибки выявит числовой входной поток или поток специальных символов.
|