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

http://fkn.ktu10.com/?q=node/7341

У вас есть число 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  z, i, k: integer;
begin
  z := 5;
  k := 1;
  while(z >= 0) do
  begin
   writeln('vvedi chislo');
   readln(i);
   if(i = 77) then
     begin
       k := 1;
     end;
   if(i = 55) then
     begin
       k := 2;
     end;
   if(k = 1) then
     begin
       z := z + 1;
       writeln('z = ', z);
     end
   else
   if(k = 2) then
     begin
       z := z - 1;
       writeln('z = ', z);
     end;
 end;
  readln();
end.  
vedro-compota's picture

  1. k лучше переделать на boolean
  2. проверить оптимальность проверок
  3. дублирование writeln('z = ', z);

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

var  z, i :integer;
  k :boolean;
begin
  z := 5;
  k := true;
  while(z >= 0) do
  begin
    writeln('vvedi chislo');
    readln(i);
    if(i = 77) then
      k := true
    else
    if(i = 55) then
      k := false;
    if(k) then
      z := z + 1
    else
      z := z - 1;
    writeln('z = ', z);
  end;
  readln();
end.  
vedro-compota's picture

решение засчитано

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