Урок 10.2 Задача 3

Урок 10.2 Задача 3

В примере №2 есть код, перепишите его таким образом, чтобы сообщение "Игра окончена" выводилась, только если пользователь не угадал загаданное число.
Подсказка: используйте значение логического типа.

var a, b, i:integer;
begin
  a := 5;
  writeln('Угадайте число от 1 до 10 с трех попыток');
  for i:=1 to 3 do
  begin
    writeln('Попытка №', i, ' выше число:' );
    readln(b);
    if (b = a) then
    begin
       writeln('Победа!');
       break
    end else
       writeln('Не угадали!');
  end;
  
  writeln('Игра окончена!');
  readln();
end. 

Решение:

var a, b, i, step:integer;
begin
  writeln('vvedite chislo ot 1 do 10');
  readln(a);
  writeln('Ugadajte chislo ot 1 do 10 s treh popytok');
  step := 0;
  for i:=1 to 3 do
    begin
      writeln('Popytka #', i, ' vashe chislo:' );
      readln(b);
      step:=step + 1;
      if (b = a) then
        begin
           writeln('Pobeda!, vy ugadali s ', step, ' popytok');
           break;
        end
      else
        begin
          if (step=3) then
            begin
              writeln('Ne ugadali!');
              writeln('Igra okonchena!');
            end
          else
            writeln('Ne ugadali!');
        end;
    end;
   readln();
end.
vedro-compota's picture

  1. step дублирует i
  2.           if (step=3) then
                begin
                  writeln('Ne ugadali!');
                  writeln('Igra okonchena!');
                end
              else
                writeln('Ne ugadali!');
    

    -- убрать дублирование кода

  3.  writeln('Igra okonchena!');

    -- лучше вообще выводить после цикла

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

var a,b,i:integer;
begin
  writeln('Загадайте число от 1 до 10');
  readln(a);
  writeln('Угадайте число от 1 до 10 с трёх попыток');
  for i:=1 to 3 do
  begin
    writeln('Попытка №', i, ' ваше число:' );
    readln(b);
    if (b = a) then
    begin
      writeln('Победа!, вы угадали с ', i, ' попыток');
      break;
    end
    else
      writeln('Не угадали');
  end;
  writeln('Игра окончена!');
  readln();
end.
vedro-compota's picture

 writeln('Игра окончена!');

-- не по условию, сейчас эта строка работает всегда

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

var a,b,i:integer;
begin
  writeln('zagadajte chislo ot 1 do 10');
  readln(a);
  writeln('Ugadajte chislo ot 1 do 10 s treh popytok');
  for i:=1 to 3 do
    begin
      writeln('Popytka #', i, ' vashe chislo:' );
      readln(b);
      if (b = a) then
      begin
        writeln('Pobeda!, vy ugadali s ', i, ' popytok');
        break;
      end
    else
      writeln('Ne ugadali');
    end;
  if a<>b then
    writeln('Igra okonchena!');
  readln();
end.
vedro-compota's picture

засчитано

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