Проверка

We use cookies. Read the Privacy and Cookie Policy

Проверка

     Так ли уж правильны наши рассуждения? Давайте проверим нашу функцию на учебной программе:

/* проверка функции getint( )*/

#define STOP - 1

#define NONUM 1

#define YESNUM 0

main( )

{

int num, status;

printf(" Программа прекращает считывание чисел, если встречает EOF. " );

while((status = getint(&num)) != STOP)

if(status = = YESNUM)

printf(" Число %d принято. ", num);

else

printf(" Это не целое число! Попытайтесь снова. ");

printf("Этo оно. ");

}

Вот пример работы программы:

Программа прекращает считывание чисел, если встречает EOF.

100   -23

Число 100 принято.

Чмсло -23 принято.

+892.

Число 892 принято.

wonk

Это не целое число! Попытайтесь снова.

23skidoo

Это не целое число! Попытайтесь снова.

775

Число 775 принято.

Клавиша [control z] (посылает символ EOF в нашу программу).

Это оно.

     Как видите, программа выполняется. Обратите внимание на то, как мы сумели организовать цикл для неограниченного считывания целых чисел до тех пор, пока не будет введен символ EOF. Это удобное свойство.

     Есть ли здесь ошибки? По меньшей мере одна. Если непосредственно за числом следует символ EOF без разделяющего пробела или символа новой строки, ввод прекращается, и это число не принимается во внимание:

706 EOF /* 706 принято*/

706 EOF /* 706 не принято*/

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