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

Урок 11

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

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

--Polzovatel: 
12
Otvet: 6
--Polzovatel: 
12
Otvet: 7
--Polzovatel: 
90
Otvet: 8
--Polzovatel: 
55
Otvet: 7
--Polzovatel: 
100
Otvet: 6
--Polzovatel: 
123644
Otvet: 5
--Polzovatel: 
77
Otvet: 6
--Polzovatel: 
1
Otvet: 7
var a, z: integer;

begin
  z := 5;
  writeln('Vvedite chislo');
  readln(a);

  while (z >= 0) do
  begin
        
      while(a <> 55) do
      begin
        z := z + 1;
        writeln('Otvet: ',z);
        writeln('Vvedite chislo');
        readln(a);
      end;
      
      while((a <> 77) and (z >= 0)) do
      begin
        z := z - 1;
        
        if z < 0 then
          break;
    
        writeln('Otvet: ',z);
        writeln('Vvedite chislo');
        readln(a);
      end
       
  end;

end.

КОНСОЛЬ

Vvedite chislo
15
Otvet: 6
Vvedite chislo
1
Otvet: 7
Vvedite chislo
55
Otvet: 6
Vvedite chislo
5
Otvet: 5
Vvedite chislo
5
Otvet: 4
Vvedite chislo
77
Otvet: 5
Vvedite chislo
5
Otvet: 6
Vvedite chislo
6
Otvet: 7
Vvedite chislo
55
Otvet: 6
Vvedite chislo
1
Otvet: 5
Vvedite chislo
1
Otvet: 4
Vvedite chislo
1
Otvet: 3
Vvedite chislo
1
Otvet: 2
Vvedite chislo
1
Otvet: 1
Vvedite chislo
1
Otvet: 0
Vvedite chislo
1
vedro-compota's picture

решить без вложенных циклов

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

var a, z: integer;
    b: boolean;
 
begin
  z := 5;
  b := true;
 
  while (z >= 0) do
  begin
          
    writeln('Vvedite chislo');
    readln(a);
        
    if (a = 77) then
    b := true
        
    else if a = 55 then
    b := false;
        
         
    if b then
    begin
      z := z + 1;
    end
       
     else if (not b) and (z >= 0) then
    begin
       z := z - 1;
         
      if z < 0 then
        break;
     end;
      
    writeln('Otvet: ',z);
    
  end;
 
end.

КОНСОЛЬ

Vvedite chislo
12
Otvet: 6
Vvedite chislo
12
Otvet: 7
Vvedite chislo
12
Otvet: 8
Vvedite chislo
55
Otvet: 7
Vvedite chislo
1
Otvet: 6
Vvedite chislo
1
Otvet: 5
Vvedite chislo
1
Otvet: 4
Vvedite chislo
1
Otvet: 3
Vvedite chislo
1
Otvet: 2
Vvedite chislo
1
Otvet: 1
Vvedite chislo
1
Otvet: 0
Vvedite chislo
77
Otvet: 1
Vvedite chislo
1
Otvet: 2
Vvedite chislo
1
Otvet: 3
Vvedite chislo
55
Otvet: 2
Vvedite chislo
1
Otvet: 1
Vvedite chislo
1
Otvet: 0
Vvedite chislo
1
vedro-compota's picture

засчитано

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