Предмет: Информатика,
автор: SasukeUchishka
Цикл выполняется 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.
Ответы
Автор ответа:
0
Вы вводите символьную информацию (данное типа char) при помощи процедуры Read(). В языке Паскаль ввод должен ВСЕГДА завершаться посылкой пары кодов "перевод строки" и "возврат каретки", что и происходит при нажатии клавиши "Enter". Так, если Вы вводите латинское "А", программа получает не один символ, а три: с кодом "А", с кодом "перевод строки" и с кодом "возврат каретки". И чтение в цикле происходит сразу три раза до очередного обращения к клавиатуре. Итого получается четыре прохода по циклу: первые три символа на самом деле воспринимаются, как девять, а затем считывается четвертый, что дает десять и цикл завершается.
Для правильной работы с символьными данными (char, string) следует использовать не Read(), а Readln() и все у Вас получится. Процедура Readln() "отрезает" коды "перевод строки" и "возврат каретки".
Для правильной работы с символьными данными (char, string) следует использовать не Read(), а Readln() и все у Вас получится. Процедура Readln() "отрезает" коды "перевод строки" и "возврат каретки".
Похожие вопросы
Предмет: Английский язык,
автор: Аноним
Предмет: География,
автор: alina114975
Предмет: Алгебра,
автор: vano184
Предмет: Химия,
автор: ilonka12051999
Предмет: Математика,
автор: chopa200405