Вот условие задачи: есть координаты двух клеток шахматной доски. Вывести Yes
, если слон может за один ход перейти с одной клетки в другую. В другом случае вывести No
.
Выходные данные: Yes
Пример работы программы:
Enter x1: 3 Enter y1: 4 Enter x2: 1 Enter y2: 1 No
Первым решение предоставил пользователь нашего сайта — NaikoN, спасибо. Вот решение этой задачи:
#include <iostream> #include <math.h> using namespace std; int main() { int x1,x2,y1,y2,maxx,minx,maxy,miny; cout<<"Enter x1: "; cin>>x1; cout<<"Enter y1: "; cin>>y1; cout<<"Enter x2: "; cin>>x2; cout<<"Enter y2: "; cin>>y2; ///Находим min и max по x и y maxx=max(x1,x2); maxy=max(y1,y2); minx=min(x1,x2); miny=min(y1,y2); ///Слон может попасть на нужную клетку, только ///если |x1-x2|=|y1-y2| (значения по модулю) if(maxx-minx==maxy-miny) { cout<<"Yes"; return 0; } cout<<"No"; return 0; }
Логика работы программы — правильная, но вот неплохо было бы доработать программу на предмет различных проверок входных данных. Ведь, если сейчас в программу ввести некорректные данные, она просто завершит свою работу. Смотрим результат работы программы:
Enter x1: 3 Enter y1: 4 Enter x2: 1 Enter y2: 1 No
Что тут можно сказать? Слон стоит в клетке с координатами 1 и 1, так как слон ходит только по диагонали на любое количество клеток, в ячейку (3,4) он попасть не может, соответственно, на выходе, программа показала — No.
Комментарии
Vova_vb