Задача 15 Урок 11 While
Primary tabs
15 {У вас есть число z=5. Пользователь вводит числа в цикле,
если хотя бы одно введенное число число было равно 77,
то увеличивайте число z на 1 в ответ на каждое введенное число,
до тех пор пока пользователь не введет число 55, если такое произойдет
то в ответ на это и любое последующее число, уменьшайте z на 1.
Цикл и программа должны завершиться, когда число z станет отрицательным.
(в начале цикла, если первое введенное число не равно ни 55, ни 77, считаем,
что мы должны увеличивать z на 1 пока не встретим 55 или 77,
которые укажут на конкретные действия).}
var a,b,z:integer;
begin
a:=0;
b:=0; // переключатель
z:=5;
while (z >= 0) do
begin
writeln('write integer num ');
readln(a);
if (a = 77) then
b:= 77;
if (a = 55) then
b:= 55;
if (b = 77) then
begin
z:= z - 1;
writeln('counter: ', z)
end;
if ((b = 55) OR (b = 0)) then
begin
z:= z + 1;
writeln('counter: ', z)
end;
end;
readln();
end. //write integer num //1 //counter: 6 //write integer num //55 //counter: 7 //write integer num //2 //counter: 8 //write integer num //77 //counter: 7 //write integer num //3 //counter: 6 //write integer num //5 //counter: 5 //write integer num
- Log in to post comments
- 1438 reads
vedro-compota
Sat, 05/01/2021 - 12:48
Permalink
1)
1)
writeln('counter: ', z)-- дублирование кода
2) Переделать проверку
на использование булевской переменной (т.к. тут бинарное состояние)
_____________
матфак вгу и остальная классика =)
i_love_cookies
Wed, 05/05/2021 - 15:41
Permalink
добавил булевою переменную, избавился от дублирования кода
var a,z:integer; x: boolean; begin z:=5; x:=true; // переключатель while (z >= 0) do begin writeln('write integer num '); readln(a); if (a = 77) then x:= true; if (a = 55) then x:= false; if (x) then z:= z + 1 else z:= z - 1; writeln('counter: ', z); end; readln(); end.