Цикл выполняется 4 раза, почему? Program zad2; Var c:char; i, n, k:integer; begin For...

0 голосов
68 просмотров

Цикл выполняется 4 раза, почему?
Program zad2;
Var c:char;
i, n, k:integer;
begin
For i:=1 to 10 do
begin
read (c);
n:=ord(c);
If (n>64) and (n<91) then <br> k:=k+1;
end;
Write (k);
end.


Информатика Начинающий (101 баллов) | 68 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

Вы вводите символьную информацию (данное типа char) при помощи процедуры Read(). В языке Паскаль ввод должен ВСЕГДА завершаться посылкой пары кодов "перевод строки" и "возврат каретки", что и происходит при нажатии клавиши "Enter". Так, если Вы вводите латинское "А", программа получает не один символ, а три: с кодом "А", с кодом "перевод строки" и с кодом "возврат каретки". И чтение в цикле происходит сразу три раза до очередного обращения к клавиатуре. Итого получается четыре прохода по циклу: первые три символа на самом деле воспринимаются, как девять, а затем считывается четвертый, что дает десять и цикл завершается.

Для правильной работы с символьными данными (char, string) следует использовать не Read(), а Readln() и все у Вас получится. Процедура Readln() "отрезает" коды "перевод строки" и "возврат каретки".

БОГ (150k баллов)
10,984,878 вопросов
13,471,016 ответов
8,518,553 комментариев
4,909,216 пользователей