Задача 16 Урок 11

Задача 16 Урок 11:

У вас есть число z=5. Пользователь вводит числа в цикле, если за последние 4 попытки ввода было хотя бы одно число больше или равно 15, то увеличивайте число z на 1 в ответ на каждое введенное число, а если такого числа не было, то уменьшайте на 1 в ответ на каждый ввод.
Цикл и программа должны завершиться, когда число z станет отрицательным.

Пример работы в консоли:

--Polzovatel: 
12
Otvet: 4
--Polzovatel: 
16
Otvet: 5
--Polzovatel: 
5
Otvet: 6
--Polzovatel: 
10
Otvet: 7
--Polzovatel: 
8
Otvet: 8
--Polzovatel: 
9
Otvet: 7
--Polzovatel: 
9
Otvet: 6
--Polzovatel: 
20
Otvet: 7

Решение:

program Lesson16;
var a, b, z: integer;
begin
  z:=5;
  while (z>=0) do
  begin
    writeln('vvedite celoe chislo:');
    readln(a);
    if (a>=15) then
    begin
      z:=z+1;
      b:=4;
    end
    else if (a<15) and (b>1) then
    begin
      z:=z+1;
      b:=b-1;
    end
    else
    begin
      z:=z-1;
      b:=b-1;
    end;
    writeln('Otvet: ',z);
  end;
  readln();
end.
        
vedro-compota's picture

if (a<15) and (b>1) then
    begin
      z:=z+1;
      b:=b-1;
    end
    else
    begin
      z:=z-1;
      b:=b-1;
    end;

есть дублирование кода, можно переписать короче

_____________
матфак вгу и остальная классика =)

program Lesson16v2;
var a, b, z: integer;
begin
  z:=5;
  b:=0; //обязательно ли присваивать?Без присваивания тоже работает
  while (z>=0) do
  begin
    writeln('vvedite celoe chislo:');
    readln(a);
    if (a>=15) then
      b:=4;
    if (b>0) then
      z:=z+1
    else
      z:=z-1;
    b:=b-1;
    writeln('Otvet: ',z);
  end;
  readln();
end.
                   
vedro-compota's picture

засчитано

_____________
матфак вгу и остальная классика =)