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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2011, 14:18   #1
oliviya1111
Пользователь
 
Регистрация: 07.11.2011
Сообщений: 27
Восклицание Программа Угадыватель. Имеются вопросы...

надо чтобы компьютер угадывал цифру, которую загадал пользователь.(от 1 до 100). Но при начале программы. При нажатии он выдает 8(к примеру), нажимаешь больше - он выдает 83(к примеру), нажимаешь снова меньше а он может выдать 4( к примеру). как сделать так чтобы стал выдавать до того числа...помогите пожалуйста. есть еще мелкие вопросики, но только при решении этого...очень надо.

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
n:=StrToInt(Edit1.Text);
Edit1.Text:=IntToStr(Random(n)+1);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
n:=StrToInt(Edit1.Text);
if Edit1.Text=IntToStr(100)
then Edit1.Text:=IntToStr(100)
else Edit1.Text:= IntToStr(random(99-n)+n+1);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
n:=StrToInt(Edit1.Text);
if Edit1.Text=IntToStr(n)
then
begin
Label2.Visible:=True;
Label2.Caption:='Я угадал - вы загадали '+Edit1.Text;
Edit1.Text:=''
end
else Edit1.Text:=''
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
Edit1.Text:=IntToStr(Random(99)+1);
Label2.Visible:=False;
end;
end.


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 07.12.2011 в 16:02.
oliviya1111 вне форума Ответить с цитированием
Старый 07.12.2011, 14:26   #2
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

читать про бинарный поиск
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 07.12.2011, 14:31   #3
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

ох.. как бы объяснить то...
нужно помнить как минимум два последних введенных числа (в переменные, в массив - как вам удобнее)
Затем:
1) Если сначала было больше, потом меньше, то генерировать число только из этого диапазона ( Random(a2-a1)+a1 )
2) Если сначала было больше, и потом больше, то число из диапазона a2..100 ( Random (100-a2)+a2 )
3) Если оба меньше, то из диапазона 1..a1 ( Random(a1)+1 )
4) Случай сначала меньше, потом больше аналогичен первому, только надо поменять a1 и a2
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Старый 07.12.2011, 14:36   #4
oliviya1111
Пользователь
 
Регистрация: 07.11.2011
Сообщений: 27
Печаль

Цитата:
Сообщение от Zer0 Посмотреть сообщение
ох.. как бы объяснить то...
нужно помнить как минимум два последних введенных числа (в переменные, в массив - как вам удобнее)
Затем:
1) Если сначала было больше, потом меньше, то генерировать число только из этого диапазона ( Random(a2-a1)+a1 )
2) Если сначала было больше, и потом больше, то число из диапазона a2..100 ( Random (100-a2)+a2 )
3) Если оба меньше, то из диапазона 1..a1 ( Random(a1)+1 )
4) Случай сначала меньше, потом больше аналогичен первому, только надо поменять a1 и a2
я не понимаю как это сделать. как задавать чтобы он помнил два последних числа? удобнее в переменные но все равно не понятно как...
oliviya1111 вне форума Ответить с цитированием
Старый 07.12.2011, 14:39   #5
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

в процедуре где компьютер угадывает число:

Код:
{здесь компьютер предлагает число}
a1:=a2;
a2:={текущее угаданное число};
эти a1 и a2 и есть то, что нужно, не забудьте в начале программы присвоить им значения 1 и 100 соответственно
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Старый 07.12.2011, 14:41   #6
oliviya1111
Пользователь
 
Регистрация: 07.11.2011
Сообщений: 27
По умолчанию

Цитата:
Сообщение от Zer0 Посмотреть сообщение
в процедуре где компьютер угадывает число:

Код:
{здесь компьютер предлагает число}
a1:=a2;
a2:={текущее угаданное число};
эти a1 и a2 и есть то, что нужно, не забудьте в начале программы присвоить им значения 1 и 100 соответственно
не будет оно так работать
oliviya1111 вне форума Ответить с цитированием
Старый 07.12.2011, 14:44   #7
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

прошу пояснить - почему?
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Старый 07.12.2011, 14:49   #8
oliviya1111
Пользователь
 
Регистрация: 07.11.2011
Сообщений: 27
По умолчанию

Цитата:
Сообщение от Zer0 Посмотреть сообщение
прошу пояснить - почему?
во-первых программа угадывать будет явно больше чем за два значения. а во вторых задавать так просто подействует только изначально а потом работать то не будет.
oliviya1111 вне форума Ответить с цитированием
Старый 07.12.2011, 14:54   #9
oliviya1111
Пользователь
 
Регистрация: 07.11.2011
Сообщений: 27
Вопрос а вот вопросики еще по этой же программке...

Как сделать так чтобы писать в Edit сразу в середину? Как сделать чтобы Image изменялся вместе с формой? И как сделать чтобы Label был цвета формы(форма не одного цвета)?
oliviya1111 вне форума Ответить с цитированием
Старый 07.12.2011, 14:58   #10
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

1) В edit нет расположения по центру, пользуйтесь или ручной отрисовкой, или сторонними компонентами
2) У любого объекта есть свойство Anchor, установите для Image их все в true и ее размер будет меняться вместе с формой
3) Возможно вам нужно свойство Transparent у Label

P.S. По поводу угадывания Вы просто не так понимаете принцип работы, угадывать может сколько угодно, но для отсеивания лишних предположений - достаточно двух последних
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
программа отвечающая правда ли что среди чисел имеются отрицательные числа D1zz1 Паскаль, Turbo Pascal, PascalABC.NET 3 07.06.2011 08:00
Ув. Знатоки. (наработки задачи имеются) Helena= Microsoft Office Excel 3 25.12.2010 13:51
Выяснить, имеются ли в школе однофамильцы. Паскаль. profi Помощь студентам 5 23.01.2010 11:39
Имеются сильные трудности в написании программы!! KnoPaA Помощь студентам 19 19.10.2009 00:16