70 / 70 / 35
Регистрация: 06.07.2016
Сообщений: 415
1

Бьет ли произвольно установленный ферзь произвольно установленную фигуру?

08.07.2016, 19:23. Показов 2524. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Текст задачи
"Положение фигуры на шахматной доске(8х8) задаётся двумя числами - номером горизонтали и номером вертикали. Ввести с клавиатуры координаты ферзя и координаты любой фигуры. Проверить, находится ли фигура под боем."
Я нашел решение этой задачи , но вот в чём загвоздка - я не знаю еще операторы repeat, в самой книге задача идет сразу после разбора оператора If и вложенного Begin. Можно ли как-то решить задачу , используя лишь этот оператор? Просто усиленно не понимаю,как же тогда указать,что он бьет по диагонали. Вроде бы, получается,что если
Pascal
1
2
if ((x2:=x1+n) and (Y2:=Y1+n)) 
then writeln ('Strike'); {Где х1 и у1- координаты ферзя, х2 и у2 - координаты фигуры}
Причем откуда взять это n - непонятно. Если ферзь становится где-нибудь в (4,4) еще понятно,что делать. А если в (1,1)?
Решений с repeat и всем,что идёт после прохождения if(еще даже про case не читал) не пишите, пожалуйста,так как смысла в этом нет. И ведь если она дается в блоке с If,то должна же как-то решаться.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.07.2016, 19:23
Ответы с готовыми решениями:

Определить, бьет ли ферзь произвольную фигуру
Положение шахматных фигур на доске задается: - по горизонтали буквами; - по вертикали цифрами; ...

Перечислить координаты полей, которые бьет ферзь
Даны две литеры – латинская буква (от a до h) и цифра (от 1 до 8), например, a2 или g5....

Определить, бьет ферзь коня, конь — Ферзя, или фигуры не угрожают друг другу
Координаты двух полей шахматной доски заданы в виде двух пар чисел x1 , у1 и х2 , у2. На первом...

Определить, бьет ли слон фигуру
Вот такая чудная задача...Требуется определить, бьет ли слон, стоящий на клетке с указанными...

5
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
08.07.2016, 19:49 2
Лучший ответ Сообщение было отмечено Notoriously как решение

Решение

Цитата Сообщение от Notoriously Посмотреть сообщение
я не знаю еще операторы repeat
Возможно эти операторы используются для проверки правильности ввода, например
Pascal
1
2
3
4
repeat
writeln('Введите координаты ферзя от 1 до 8');
readln(x1,y1);
until(x1 in [1..8])and(y1 in [1..8]);
Это означает что если введем меньше 1 или больше 8, то цикл повторится, пока не введем правильно.

Добавлено через 4 минуты
А условие бьет ли ферзь фигуру, такое
Pascal
1
if(x1=x2)or(y1=y2)or(abs(x1-x2)=abs(y1-y2)) then write('бьет') else write('не бьет');
т.е. или на одной горизонтали, или на одной вертикали, или на одной диагонали.
1
70 / 70 / 35
Регистрация: 06.07.2016
Сообщений: 415
08.07.2016, 20:45  [ТС] 3
Спасибо!
Так и не допёр до условия, когда ферзь бьет фигуру по диагонали.
0
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
08.07.2016, 20:49 4
Так нарисуйте на клетчатой бумаге, если нет шахматной доски, поле 8х8, отметьте на нем фигуру и посмотрите с каких полей ферзь может побить фигуру.Это одна горизонталь х1=х2, или одна вертикаль y1=y2, или одна диагональ, еогда растояние по горизонтали равно расстоянию по вертикали abs(x1-x2)=abs(y1-y2)
1
70 / 70 / 35
Регистрация: 06.07.2016
Сообщений: 415
09.07.2016, 09:43  [ТС] 5
Я так и делал. Но не смог понять, как математически представить "битьё" по диагонали во всех случаях расстановки ферзя.
Спасибо еще раз.
0
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
09.07.2016, 09:47 6
Цитата Сообщение от Notoriously Посмотреть сообщение
представить "битьё" по диагонали
Если ферзь и фигура стоят в противоположных вершинах квадрата.
0
09.07.2016, 09:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.07.2016, 09:47
Помогаю со студенческими работами здесь

Нарисовать шахматную доску, при этом пометить все поля, кторые бьет ферзь крестиками, а другие - ноликами.
Заданные два символа - латинская буква (a-h) и цифра (1-8). Рассматривая их как координаты поля...

В произвольно заданном массиве...
В произвольно заданном массиве определить максимальную последовательность из отрицательных чисел и...

Произвольно задать центры непересекающихся окружностей
Помогите пожалуйста! Необходимо задать произвольно центры окружностей, при этом все окружности...

Произвольно заданная квадратная матрица размером 6 на 6
Определить и поменять местами максимальные и минимальные значения среди элементов расположенных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru