Консультация № 169034
06.06.2009, 12:53
0.00 руб.
0 4 1
Здравствуйте!
Во-первых, спасибо всем тем, кто помог в прошлый раз! У меня новая трудность. Прорешала учебник Златопольского уже до 4.111 задачи, и на ней зависла. Задача для шахматистов (в шахматы люблю играть). Не могу понять сам принцип, как составить эту программу? Когда приходят какие-то мысли, начинаю по- немногу, и через три часа бросаю это дело. И так уже третьи сутки.. . Но безумно хочу ее решить.Текст задания в приложении:

Приложение:
Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит восьми: первое число- номер вертикали (при счете слева направо), второе- номер горизонтали (при счете снизу вверх). Даны натуральные числа a, b, c, d, e, f, каждое из которых не превосходит восьми. На поле (a, b) расположена белая фигура, на поле (c, d)- черная. Определить, может ли белая фигура пойти на поле (e, f), не попав при этом под удар черной фигуры.
Фигуры- ладья (уточняю, ладья ходит по вертикали, горизонтали) и слон (по диагонали).

Обсуждение

Неизвестный
06.06.2009, 13:18
общий
К сожалению, это весь текст задачи, что я взяла из сборника. Я тоже предполагаю, что возможно нужно составить дерево возможных ходов. У меня такая мысль- а что если сделать так- черная фигура пусть стоит на своем поле, и тогда можно рассмотреть число возможных ходов белой фигуры, взять какоето поле (e, f)- то есть это поле, где они пересекаются (грубо говоря)- где попав белая фигура на это поле будет побита черной. Уф, надеюсь, доступно рассписала ход мыслей.
давно
Профессор
401888
1232
06.06.2009, 13:28
общий
Ладья белая, слон черный, или наоборот?
давно
Профессор
401888
1232
06.06.2009, 14:00
общий
это ответ
Здравствуйте, Reresana!
Вы пишете
"Но безумно хочу ее решить"
Я привожу код решения этой задачи без комментариев. Вероятно Вам будет интересно самой разобраться. Если вдруг не сможете, пишите на странице вопросов.

Приложение:
uses crt;
var a,b,c,d,e,f,h1,h2:byte;
begin
clrscr;
repeat
writeln('Белая ладья:');
write('a=');readln(a);
write('b=');readln(b);
until (a in [1..8])and(b in [1..8]);
repeat
writeln('Черный слон:');
write('c=');readln(c);
write('d=');readln(d);
until (c in [1..8])and(d in [1..8]);
repeat
writeln('Поле для хода:');
write('e=');readln(e);
write('f=');readln(f);
until (e in [1..8])and(f in [1..8]);

if (((a=e)and(c<>e))or((c=e)and(abs(b-d)>abs(b-f))))
or (((b=f)and(d<>f))or((d=f)and(abs(a-c)>abs(a-e))))
then h1:=1 else h1:=0;

if abs(c-e)=abs(d-f) then h2:=1 else h2:=0;

if h1=0 then write('Белая ладья не может пойти на поле ',e,f)
else if (h1=1)and(h2=1)then
write('Белая ладья может пойти на поле ',e,f, ', но попадает под бой')
else if (h1=1)and(h2=0)then
write('Белая ладья может пойти на поле ',e,f, ', не попадая под бой');
readln
end.
давно
Модератор
156417
2175
06.06.2009, 14:12
общий
Перенесено из ответа
Цитата: 193298
Здравствуйте, Reresana.
черная фигура тоже ходит или стоит на месте? если нет тогда проще. необходимо скорей всего строить дерево возможных ходов. Уточните задачу попробуем решить
Форма ответа