Pascal. Диалоговая программа

  • Автор темы ANTON2527
  • Дата начала
A

ANTON2527

Гость
#1
Задача:
Составьте диалоговую программу угадывания случайно выбранных координат цели в квадрате: по оси х от –10 о 30, по оси у от 2 до 28 c восьми попыток с двойным сообщением корректировщика, например: уменьшить Х, либо: немного уменьшить Х (если отклонение от цели меньше 3).

Помогите решить. Заранее спасибо :)
 

nayke

Well-Known Member
04.08.2010
310
0
#2
Задача:
Составьте диалоговую программу угадывания случайно выбранных координат цели в квадрате: по оси х от –10 о 30, по оси у от 2 до 28 c восьми попыток с двойным сообщением корректировщика, например: уменьшить Х, либо: немного уменьшить Х (если отклонение от цели меньше 3).

Помогите решить. Заранее спасибо ;)
Смотри дихотомический поиск этом случае вопрос задается в форме
X < середины отрезка(например для первого шага Х меньше 10?).
потом так же для Y. получаем меньшую область(половину, четверть 1/8 и т.д.)
после положительных или отрицательных ответов на 8 вопросов будет область 2 на 3 вроде как..
если такой вариант не походит конкретизируй свой пример диалога.
 
A

ANTON2527

Гость
#3
Смотри дихотомический поиск этом случае вопрос задается в форме
X < середины отрезка(например для первого шага Х меньше 10?).
потом так же для Y. получаем меньшую область(половину, четверть 1/8 и т.д.)
после положительных или отрицательных ответов на 8 вопросов будет область 2 на 3 вроде как..
если такой вариант не походит конкретизируй свой пример диалога.
Я думаю подойдет ;) Мне бы решение... ;)
 

nayke

Well-Known Member
04.08.2010
310
0
#4
Я думаю подойдет :) Мне бы решение... :(
for i:=1 to 4 do //раз уж с 8 ходов, хотя можно использовать и условия выхода
begin
writeln('Искомая точка лежит левее? '+ ((x1+x2) div 2) + ' y or n?');
readln(ch);
if ch='y' then x2=(x1+x2) div 2
else x1=(x1+x2) div 2

//тоже самое для y1,y2
end;

в результате получишь x1,x2,y1,y2 - область в которой твоя точка