Неожиданный результат программы - Free Pascal
Формулировка задачи:
Проблема в том что после первой итерации в цикле (которая проходит верно) программа начинает отнимать по одному. Программа должна спросить у пользователя число которое он загадал, потом спросить сколько будет разность от этого числа и числа 7, если ответ правильный спросить следующее, если не правильный попросить ответить заново. Help pls.
program minus7;
var
s, a, n: integer;
begin
n := 7;
readln (s);
for s := s-n downto 0 do
begin
writeln ('what number next?');
readln (a);
writeln(s);
end;
if a = s then
writeln('Yes');
end.Решение задачи: «Неожиданный результат программы»
textual
Листинг программы
var
a,s,n:integer;
begin
n:=7;
repeat
write('Enter new number:');
readln(a);
repeat
write(a,'-7=');
readln(s);
until a-7=s;
writeln('Correct');
until false;
end.
Объяснение кода листинга программы
- Объявлены три переменные:
a,sиnтипа integer. - Переменная
nинициализируется значением 7. - Запускается цикл repeat, который выполняется до тех пор, пока условие не станет ложным.
- Внутри цикла выводится запрос на ввод числа, используя функцию write('Enter new number:').
- Введенное число сохраняется в переменной
a. - Внутри цикла repeat выводится сообщение
a-7=, используя функцию write(a,'-7='). - Пользователь вводит число, используя функцию readln(s).
- Цикл repeat продолжается до тех пор, пока значение
aминус 7 не станет равным введенному числу. - Когда условие выполняется, выводится сообщение
Correct. - Цикл repeat завершается, когда условие становится ложным.
- Программа завершается.