Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.02.2009, 15:00   #1
vakich
 
Регистрация: 18.02.2009
Сообщений: 3
По умолчанию Программа, которая отгадывает заданное число

Напишите программу, которая отгадывает заданное пользователем число. На каждом шаге она спрашивает насколько ее ответ совпал с загаданным (больше, меньше, равно). Кому не тяжело, буду благодарен
vakich вне форума Ответить с цитированием
Старый 20.02.2009, 15:28   #2
NeshSoft
Максим Николаев
Форумчанин
 
Аватар для NeshSoft
 
Регистрация: 15.02.2009
Сообщений: 170
По умолчанию

100р Если бы были попытки самостоятельного написания - но с ошибкой - помог бы - исправил. А за "Напишите программу" - 100р. - и без проблем.
NeshSoft. Программирование на заказ для студентов. Delphi/Pascal. Подробнее на сайте neshsoft.narod.ru
NeshSoft вне форума Ответить с цитированием
Старый 20.02.2009, 19:16   #3
БЦЕ КОЦЫТ
Новичок
Джуниор
 
Аватар для БЦЕ КОЦЫТ
 
Регистрация: 17.02.2009
Сообщений: 2
По умолчанию

народ в делфи 6 есть переменная RandSeek как она называется в делфи 7
БЦЕ КОЦЫТ вне форума Ответить с цитированием
Старый 20.02.2009, 23:03   #4
valetik
 
Регистрация: 28.12.2008
Сообщений: 9
По умолчанию

Предлагаю такую реализацию. Алгоритм практически оптимальный. За исключением последних двух вопросов - их можно было бы свести к одному. Но раз жестких рамок нет, то подобная реализация имеет право на жизнь. Ну а если хочется совсем оптимальный, то данный нюанс оставляю на самостоятельну проработку. Там уже не сложно...

Код:
program post_39397;
label NEXT_VALUE;
label VALUE_OK;

var
   MaxValue, MinValue, Value, Answer: Integer;

begin

   MinValue:= 0;
   MaxValue:= 100;

   Write('Загадайте числов в диапазоне от ', MinValue,' до ', MaxValue,'!');
   Readln;

NEXT_VALUE:

   Value:=(MinValue+MaxValue) div 2;
   WriteLn('Это число БОЛЬШЕ ',Value,'? 1 - да, 2 - нет');
   ReadLn(Answer);

   Case Answer of
      1:
        If MaxValue-Value=1
        then
        begin
         Writeln('Это число ',MaxValue,'!!!');
         goto VALUE_OK;
        end
        else MinValue:=Value;

      2:
        If Value-MinValue=1
        then
        begin
         Writeln('Это число ',Value,'!!!');
         goto VALUE_OK;
        end
        else MaxValue:=Value;
   end;

   goto NEXT_VALUE;

VALUE_OK:
   Readln;
end.
valetik вне форума Ответить с цитированием
Старый 21.02.2009, 20:00   #5
VVM
Форумчанин
 
Аватар для VVM
 
Регистрация: 06.06.2007
Сообщений: 282
По умолчанию

Самый простой, на мой взгляд, вариант. Delphi 2009.

З.Ы. Код процедуры MakeOffer надо подправить:
Код:
procedure TForm1.MakeOffer;
begin
  Randomize;
  repeat
    if Min = 0 then
      Offer := Random(Max)
    else
      Offer := Random(Max) + 1;
  until Offer >= Min;
  Label3.Caption := IntToStr(Offer) + ' ?';
end;
Вложения
Тип файла: rar Chislo.rar (231.9 Кб, 10 просмотров)
Не важно, как часто вы падаете. Важно, как часто вы поднимаетесь. Винс Ломбарди.

Последний раз редактировалось VVM; 21.02.2009 в 20:17.
VVM вне форума Ответить с цитированием
Старый 21.02.2009, 21:18   #6
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

Код:
program ppp;
uses crt;
const
 diap : word = 20;
var
 count,x : integer;
 max,min : integer;
 c : char;
begin
  writeln ('Range of the numbers is: from ',-diap,' to ',diap);
  write ('Count= '); readln(count);
  if abs(count)>diap then writeln ('Error')
  else
  begin
    max:=diap;
    min:=-diap;
    randomize;
    x:=random(max+1)-max;
    repeat
      writeln (x);
      writeln ('How much computer''s answer is correct? ');
      repeat
        c:=readkey;
        if c in ['<','>','='] then writeln (c)
      until (c='=') or (c='>') or (c='<') or (c=#27);
      case c of
       '=' : writeln ('Computer has just won!');
       '>' : begin
               max:=x;
               x:=min+random(abs(max)-min)+1
             end;
       '<' : begin
               min:=x;
               x:=min+random(abs(max)-min)+1
             end
      end
    until (c='=') or (c=#27)
  end;
  readln;
end.
capta1n вне форума Ответить с цитированием
Старый 24.02.2009, 19:13   #7
vakich
 
Регистрация: 18.02.2009
Сообщений: 3
Хорошо

Спасибо всем большое. Люди вам респект. Удачи!!
vakich вне форума Ответить с цитированием
Старый 24.02.2009, 19:13   #8
vakich
 
Регистрация: 18.02.2009
Сообщений: 3
По умолчанию

Продолжайте развивать, многим понадобится.
vakich вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа которая делает кроссворд Иллидан Софт 15 02.12.2014 06:34
является ли заданное натуральное число совершенным Савинова Помощь студентам 3 19.11.2008 09:51
Дано четырехзначное число, заданное в символьном виде, например, '1954'. Напечатать его текстом, например gred Помощь студентам 13 31.03.2008 22:24
Паскаль.программа, которая определяет каким является введенное число... Integer Помощь студентам 4 18.11.2007 22:17
нужна функция WinApi, которая переводит десятичное число в шестнадцатиричное??? Morskoivolk Win Api 3 02.04.2007 18:14