Цикл выполняется 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 k:=k+1; end; Write (k); end.
Цикл выполняется 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
k:=k+1;
end;
Write (k);
end.
Ответ(ы) на вопрос:
Гость
Вы вводите символьную информацию (данное типа char) при помощи процедуры Read(). В языке Паскаль ввод должен ВСЕГДА завершаться посылкой пары кодов "перевод строки" и "возврат каретки", что и происходит при нажатии клавиши "Enter". Так, если Вы вводите латинское "А", программа получает не один символ, а три: с кодом "А", с кодом "перевод строки" и с кодом "возврат каретки". И чтение в цикле происходит сразу три раза до очередного обращения к клавиатуре. Итого получается четыре прохода по циклу: первые три символа на самом деле воспринимаются, как девять, а затем считывается четвертый, что дает десять и цикл завершается.
Для правильной работы с символьными данными (char, string) следует использовать не Read(), а Readln() и все у Вас получится. Процедура Readln() "отрезает" коды "перевод строки" и "возврат каретки".
Не нашли ответ?
Похожие вопросы