На c++ пожалуйста
Ход короля и шахматная нотация
Шахматный король ходит по горизонтали, вертикали и диагонали, но только на одну клетку. Даны две различные клетки шахматной доски, определите, может ли король попасть с первой клетки на вторую одним ходом.
Входные данные
Входной файл состоит из двух строк — координат первой и второй клетки в шахматной нотации.
Как известно, в шахматной нотации горизонтальные строки обозначаются цифрами от 1 до 8, считая от расположения белых фигур, стоящих внизу доски, а вертикальные столбцы — буквами латинского алфавита: a,b,c,d,e,f,g,h.
Выходные данные
Программа должна вывести YES, если из первой клетки ходом короля можно попасть во вторую, или NO в противном случае.
Примеры
Ввод
Вывод
a1
a2
YES
a1
c2
NO
Answers & Comments
Ответ:
#include <iostream>
using namespace std;
int main(){
char c1, s1, c2, s2;
cin >> c1;
cin >> s1;
cin >> c2;
cin >> s2;
bool colComp (c1 - c2 <= 1 && c1 - c2 >= -1), strComp (s1 - s2 <= 1 && s1 - s2 >= -1);
if (c1 == c2 && s1 == s2){
cout << "NO";
}
else if (colComp && strComp){
if (c1 <= 0 || s1 <= 0 || c2 <= 0 || s2 <= 0){
cout << "NO";
}
else {cout << "YES";}
}
else {cout << "NO";}
return 0;
}
Объяснение: