Цикл производится 4 раза, почему?Program zad2;Var c:char;i, n, k:integer;beginFor i:=1 to

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

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

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


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт