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

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

У вас есть число 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
</blockquote>

Решение:

var a,b,c,d,s,z:integer;
begin
  z:=5;
  while z>=0 do
  begin
    while s<>3.14 do
    begin
      writeln('--Polzovatel:');
      readln(s);
      d:=c;
      c:=b;
      b:=a;
      a:=s;
      if (d>=15)or(c>=15)or(b>=15)or(a>=15) then
        z:=z+1
      else
        z:=z-1;
      writeln(' Otvet: ',z);
      if z<0 then break;
    end;
    writeln('z < 0, Poka');
  end;
  readln();
end. 

Консоль:

--Polzovatel:
12
 Otvet - z: 4
--Polzovatel:
16
 Otvet - z: 5
--Polzovatel:
5
 Otvet - z: 6
--Polzovatel:
10
 Otvet - z: 7
--Polzovatel:
8
 Otvet - z: 8
--Polzovatel:
9
 Otvet - z: 7
--Polzovatel:
9
 Otvet - z: 6
--Polzovatel:
20
 Otvet - z: 7
vedro-compota's picture

а если будет 200 попыток? нужно просто использовать счетчик

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

Исправил:

program u11z16;
var n,p,z:integer;
  t:boolean;
begin
  z:=5;
  t:=false;
  while z>=0 do
  begin
    writeln('--Polzovatel:');
    readln(n);
    if n>=15 then
    begin
      p:=4; // количество попыток
      t:=true;
    end
    else
      t:=false;
    if t or (p>=1) then
    begin
      p:=p-1;
      z:=z+1;
    end
    else
      z:=z-1;
    if z>=0 then
      writeln(' Otvet: ',z)
    else
      writeln('z<0, Poka!');
  end;
  readln();
end.
vedro-compota's picture

можно переписать без логической переменной t

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

program u11z16;
var n,p,z:integer;
begin
  z:=5;
  while z>=0 do
  begin
    writeln('--Polzovatel:');
    readln(n);
    if n>=15 then
    begin
      p:=4; // количество попыток
    end;
    if p>=1 then
    begin
      p:=p-1;
      z:=z+1;
    end
    else
      z:=z-1;
    if z>=0 then
      writeln(' Otvet: ',z)
    else
      writeln('z<0, Poka!');
  end;
  readln();
end.
vedro-compota's picture

засчитано

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