Решение задачи №15 из главы 11

Решение задачи №15 из главы 11

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

Вывод консоли
Vvedite chislo
77
78
Vvedite chislo
55
54
Vvedite chislo
63
63
Vvedite chislo
44
44
Vvedite chislo
var z:integer;
  begin
    z:=5;
    while z < 100 do
    begin
      writeln('Vvedite chislo');
      readln(z);
    if z < 0 then
       break;
    if z = 77  then
        z:=z+1;
    if z = 55 then
        z:=z-1;

      writeln(z);
    end;
     readln();
  end.
      
vedro-compota's picture

должно быть:

Vvedite chislo
77
6
Vvedite chislo
55
5
Vvedite chislo
63
4
Vvedite chislo
44
3
Vvedite chislo

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

gani84's picture

Вывод консоли
Vvedite chislo
44
5
Vvedite chislo
33
5
Vvedite chislo
77
6
Vvedite chislo
22
6
Vvedite chislo
78
8
Vvedite chislo
55
7
Vvedite chislo
12
7
Vvedite chislo
var z,a:integer;
begin
  z:=5;
  while z < 100 do
  begin
    writeln('Vvedite chislo');
    readln(a);
  if (a <> 55) AND (a <> 77) then
      z:=z+1;
  if z < 0 then
     break;

  if a >= 77  then
      z:=z+1;
  if a <= 55 then
      z:=z-1;
   writeln(z);
  end;
   readln();
end.
vedro-compota's picture

  1. уберите break из решения
  2. while z < 100 do

    -- неправильное условие, т.к. при z > 100 программа тоже должна работать (см. условие).

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

gani84's picture

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

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

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

gani84's picture

Вывод консоли

Vvedite chislo
12
6
Vvedite chislo
12
7
Vvedite chislo
90
8
Vvedite chislo
55
7
Vvedite chislo
100
6
Vvedite chislo
123644
5
Vvedite chislo
77
4
Vvedite chislo
1
3
Vvedite chislo
var z,a:integer;
  i:boolean;
begin
  z:=5;
  i:=false;
  while z > 0 do
  begin
    writeln('Vvedite chislo');
    readln(a);

    if (i = true) then
        begin
            z:=z-1;
            writeln(z);
            continue;
        end;

    if (a = 55)   then
        begin
          i:=true;
          z:=z-1
        end
    else
        z:=z+1;
    if a = 77  then
        z:=z+1;
    writeln(z);
  end;
   readln();
end.                 
vedro-compota's picture

continue тут вообще не нужно

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