Программа "Угадай число"

Задача

Отгадать целое число, которое "загадал" компьютер в определенном диапазоне.

Решение

Описание переменных: 

a – число, "загаданное" компьютером;
b – очередное число, вводимое пользователем.

Алгоритм решения задачи: 

Программа генерирует псевдослучайное число, которое записывается в переменную a.

Пока число a не совпадет с числом b, пользователю будет предлагаться ввести очередное число. При этом, если b > a, то на экран будет выдаваться сообщение "Много". Иначе будет проверяться условие b < a. При его положительном значении появится сообщение "Мало", иначе сообщение "Угадал".

Не трудно понять, что если b не больше и не меньше a, то значит оно равно a. В таком случае логическое выражение при while вернет false, и цикл прервется.

Программа на языке Паскаль: 

var
    a,b: integer;
 
begin
    randomize;
    a := random(100);
 
    while a <> b do begin
        write('Введи число: ');
        readln(b);
        if b > a then
            writeln('Много')
        else
            if b < a then
                writeln('Мало')
            else
                writeln('Угадал');
    end;
 
readln
end.

Примечания: 

Угадать число всегда можно не более чем через 6-7 попыток, если делить каждый оставшийся диапазон пополам.

Тема

Циклы

Уровень

Комбинированные задачи

Теги

Комментарии

Я добавил уровни сложности:

label w;
var
  d, a, b, count, N, t: integer;
 
begin
  writeln('Выбери сложность:');
  writeln('1-легкая,2-средняя,3-сложная');
  read(d);
  if d = 3 then
  begin
    N := 1000;
    t := 10;
  end;
  if d = 2 then
  begin
    N := 100;
    t := 8;
  end;
  if d = 1 then
  begin
    N := 10;
    t := 5;
  end;
  b := random(N); 
  count := t; 
  Writeln('Я загадал число от 1 до ', N); 
  Writeln('У тебя ', t, ' попыток'); 
  while a <> b do 
  begin
    Read(a); 
    count := count - 1; 
    if a > b then 
      WriteLn('Я загадал число поменьше'); 
    if a < b then 
      Writeln('Я загадал число побольше'); 
    if count = 0 then goto w; 
    if a <> b then 
      Writeln('Осталось попыток:', count);
  end; 
  Writeln('Молодец!Ты отгадал число!'); 
  exit; 
  w: 
  Writeln('Не повезло.Сыграем еще?');
  Writeln('Загаданное число:', b); 
end.

var
  a, b, t: integer;
 
begin
  randomize;
  a := random(1000);
  writeln('Найдите число, которое находится в диапазоне от 0 до 1000');
  writeln('У вас есть 8 попыток');
 
  for t := 1 to 8 do 
  begin
    write('Введи число: ');
    readln(b);
    if b > a then
      writeln('Много')
        else
    if b < a then
      writeln('Мало')
    else
      writeln('Угадал');
  end;
end.

program ygadai;
var
x,a,s,e,r,z:integer;
begin
randomize;
write('введите диопазон числа от 0 до ');
readln(s);
a:=random(s);
writeln('введите к-во попыток');
readln(z);
for x:=1 to z do 
begin
writeln('попробуйте угадать число которое загадал компьютер.Диопазон числа от 0 до ',s);
readln(e);
if a=e then 
begin
writeln('вы угадали!Поздравляем');
r:=r+1;
break
end;
end;
if r<>1 then
writeln('Сегодня не ваш день вы не угадали');
readln
end.

Добавить комментарий