Упражнение 1.11. Как протестировать программу подсчета слов? Какой
ввод вероятнее всего обнаружит ошибки, если они были допущены?
ввод вероятнее всего обнаружит ошибки, если они были допущены?
#include <stdio.h>
#define IN 1 //внутри слова
#define OUT 0 //вне слова
int main()
{
int c, nline, nword, nchar, state;
state=OUT;
nline=nword=nchar=0;
while((c=getchar()) != EOF)
{
++nchar;
if(c=='\n')
nline++;
if(c==' ' || c=='\n' || c=='\t')
state = OUT;
else if(state==OUT)
{
state = IN;
nword++;
}
}
printf("новых символов = %d\n\
новых предложений = %d\n\
новых слов = %d\n", nchar, nline, nword);
return 0;
}
Результат:
Тест: цифры воспринимаются как буквы, слова, предложения.
Скорее всего имелось ввиду не это. Надо было найти такую управляющую последоватеьность, при которой счетчик новых слов даст неверное значение (увеличится при отстутствии "слова" или проигнорирует его)
ОтветитьУдалитьstate=OUT;
ОтветитьУдалитьelse if(state==OUT){
state=IN;
++nw;
вот здесь поэксперементируй с "="
Проше прощения за любопытство, не могу понять по какой логике работает else if. Почему вообще state меняется на IN конкретно при пробелах, табах и переносах?
ОтветитьУдалить