Урок 11 Задача 16
Primary tabs
У вас есть число z=5. Пользователь вводит числа в цикле, если за последние 4 попытки ввода было хотя бы одно число больше или равно 15, то увеличивайте число z на 1 в ответ на каждое введенное число, а если такого числа не было, то уменьшайте на 1 в ответ на каждый ввод.
Цикл и программа должны завершиться, когда число z станет отрицательным.
var a, b, c, d, z:integer;
x: boolean; // переключатель
begin
z:= 5;
x:= true;
while (1=1) do //делаем бесконечный цикл
begin
write('Пользователь: ');
d:= c; // запоминаем 4-е число
c:= b; // запоминаем 3-е число
b:= a; // запоминаем 2-е число
readln(a); // считываем текущее число
if (a >= 15) OR (b >= 15) OR (c >= 15) OR (d >= 15)then //проверка, является ли хотя бы одно из 4-х последних чисел большим или равным 15
x:= true // если условие верно, переключатель в истинном положении
else
x:= false; // если условие неверно, переключатель в ложном положении
if (x) then // если переключатель в истинном положении
z:= z + 1 // прибавляем 1 к исходному числу
else begin // если переключатель в ложном положении
z:= z - 1; // вычитаем 1 от исходного числа
if (z < 0) then // проверяем z на отрицательность
break; // прерываем цикл, когда z становится отрицательным
end;
writeln ('Ответ: ', z);
end;
readln();
end.
Вывод в консоли:
Пользователь: 4
Ответ: 4
Пользователь: 34
Ответ: 5
Пользователь: 3
Ответ: 6
Пользователь: 5
Ответ: 7
Пользователь: 4
Ответ: 8
Пользователь: 2
Ответ: 7
Пользователь: 15
Ответ: 8
Пользователь: 5
Ответ: 9
Пользователь:
- Log in to post comments
- 975 reads
vedro-compota
Wed, 11/02/2022 - 19:30
Permalink
d:= c; // запоминаем 4-е
-- тут надо опираться на счетчик, а не на N переменных, т.е. если бы было "сто попыток" - код не должен был бы увеличиться
_____________
матфак вгу и остальная классика =)
Patrick
Fri, 11/04/2022 - 10:39
Permalink
Исправил
var a, i, z : integer; // а - введенное число, i - счетчик введенных чисел, больших или равных 15 begin z:= 5; while ( z < 100) do begin write('Пользователь: '); readln(a); // считываем введенное число if (a >= 15) then // если введенное число больше либо равно 15 i:= 4 // счетчик "поднимаем" до 4 else if (a < 15) then // если введенное число меньше 15 i:= i-1; // из счетчика вычитаем 1 if i>0 then // если счетчик больше 0 z:= z + 1 // прибавляем 1 к z else begin // если счетчик 0 или меньше z:= z - 1; // вычитаем 1 из z if (z < 0) then // после вычитания сразу проверяем z на отрицательность break; // прерываем цикл, если z становится отрицательны end; writeln ('Ответ: ', z); end; readln(); end.Вывод в консоли:
vedro-compota
Wed, 11/09/2022 - 18:47
Permalink
засчитано
засчитано
_____________
матфак вгу и остальная классика =)