Шахматы=__= сложнА(задачки для начинающих) - Pascal

Узнай цену своей работы

Формулировка задачи:

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

Решение задачи: «Шахматы=__= сложнА(задачки для начинающих)»

textual
Листинг программы
var a,b,c,d,e,f,i,nb,nc:integer;
function hod(n,x,y:integer):boolean;
begin
case n of
1:hod:=((abs(x-e)=1)and(abs(y-f)<=1))or((abs(x-e)<=1)and(abs(y-f)=1));//ход короля
2:hod:=(x=e)or(y=f)or(abs(x-e)=abs(y-f)); //ход ферзя
3:hod:=(x=e)or(y=f);  //ход ладьи
4:hod:=abs(x-e)=abs(y-f); //ход слона
5:hod:=abs(x-e)*abs(y-f)=2;//ход коня
end;
end;
 
begin
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])and((c<>a)or(d<>b)); //в пределах доски
                                            //и не совпадает с полем белой
repeat
writeln('Введите поле для хода:');
write('e=');readln(e);
write('f=');readln(f);
until (e in [1..8])and(f in [1..8])and((e<>a)or(f<>b))and((e<>c)or(f<>d));//в пределах доски
                                                            // и не совпадает с полями фигур
writeln('Выберите белую фигуру');
writeln('1-король 2-ферзь 3-ладья 4-слон 5-конь');
repeat
readln(nb);
until nb in [1..5];
writeln('Выберите черную фигуру');
writeln('2-ферзь 3-ладья 4-слон 5-конь');
repeat
readln(nc);
until nc in [2..5];
//нет хода
if not hod(nb,a,b) then write('Белая фигура не может пойти на указанное поле')
else
 begin
  //есть, но под бой
  if not hod(nc,c,d) then write('Белая фигура может пойти на указанное поле, не попав под бой')
  //есть и не бьется
  else write('Белая фигура может пойти на указанное поле, но попав под бой');
 end;
readln
end.

Объяснение кода листинга программы

  1. Объявляются переменные:
    • a, b, c, d, e, f, i, nb, nc типа integer.
  2. Описывается функция hod, которая принимает три параметра n, x, y и возвращает булево значение:
    • В зависимости от значения параметра n выбирается один из возможных ходов фигуры (короля, ферзя, ладьи, слона, коня) и возвращается результат проверки возможности этого хода.
  3. В основной программе происходит последовательный ввод данных от пользователя:
    • Вводится положение белой фигуры a и b до тех пор, пока они не будут в пределах доски [1..8];
    • Затем вводится положение черной фигуры c и d до тех пор, пока они также не будут в пределах доски [1..8] и не будут совпадать с положением белой фигуры;
    • После этого вводится положение для хода e и f до тех пор, пока они также не будут в пределах доски [1..8] и не будут совпадать ни с положением белой, ни с черной фигуры.
  4. Выводится сообщение с предложением выбрать тип белой фигуры (король, ферзь, ладья, слон, конь) и программа ожидает ввода от пользователя.
  5. Выводится сообщение с предложением выбрать тип черной фигуры (ферзь, ладья, слон, конь) и программа ожидает ввода от пользователя.
  6. Проверяется возможность хода белой фигуры (укаженной пользователем) на указанное поле.
    • Если данный ход невозможен, выводится сообщение: Белая фигура не может пойти на указанное поле.
    • Иначе выполняется следующая проверка.
  7. Проверяется возможность хода черной фигуры (укаженной пользователем) на указанное поле относительно белой фигуры.
    • Если белая фигура может пойти на указанное поле, но попадет под бой, выводится сообщение: Белая фигура может пойти на указанное поле, но попав под бой.
    • Если белая фигура не попадет под бой, выводится сообщение: Белая фигура может пойти на указанное поле, не попав под бой.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы