оле шахматной доски определяется парой чисел (a, b), каждое от 1 до 8, первое число задает номер столбца, второе – номер строки. Заданы две клетки. Определите, может ли шахматный король попасть с первой клетки на вторую за один ход.
Входные данные
Даны 4 целых числа от 1 до 8 каждое, первые два задают начальную клетку, вторые два задают конечную клетку. Начальная и конечная клетки не совпадают. Числа записаны в отдельных строках.
Выходные данные
Программа должна вывести YES, если из первой клетки ходом короля можно попасть во вторую, или NO в противном случае.
Другие языки программирования и технологии
Задача "КОРОЛЬ". С++. Только его изучаю
#include <iostream>
using namespace std;
class king {
public:
king() : x_(1), y_(1) {}
bool set(const int x, const int y) {
if (!validated(x, y)) return false;
x_ = x;
y_ = y;
return true;
}
bool move(const int x, const int y) {
auto result = true;
if (!validated(x, y)) result = false;
else if (x == x_ && y == y_) result = false;
else if (abs(x - x_) > 1 || abs(y - y_) > 1) result = false;
if (result != false) {
x_ = x;
y_ = y;
}
return result;
}
private:
int x_;
int y_;
static bool validated(const int x, const int y) {
if (x < 1 || x > 8 || y < 1 || x > 8) return false;
return true;
}
};
int main() {
while (true) {
cout << ">>> ";
int x1, y1, x2, y2;
cin >> x1 >> y1 >> x2 >> y2;
king k;
if (k.set(x1, y1))
if (k.move(x2, y2)) cout << "Yes!\n";
else cout << "No!\n";
else cout << "No!\n";
}
}
using namespace std;
class king {
public:
king() : x_(1), y_(1) {}
bool set(const int x, const int y) {
if (!validated(x, y)) return false;
x_ = x;
y_ = y;
return true;
}
bool move(const int x, const int y) {
auto result = true;
if (!validated(x, y)) result = false;
else if (x == x_ && y == y_) result = false;
else if (abs(x - x_) > 1 || abs(y - y_) > 1) result = false;
if (result != false) {
x_ = x;
y_ = y;
}
return result;
}
private:
int x_;
int y_;
static bool validated(const int x, const int y) {
if (x < 1 || x > 8 || y < 1 || x > 8) return false;
return true;
}
};
int main() {
while (true) {
cout << ">>> ";
int x1, y1, x2, y2;
cin >> x1 >> y1 >> x2 >> y2;
king k;
if (k.set(x1, y1))
if (k.move(x2, y2)) cout << "Yes!\n";
else cout << "No!\n";
else cout << "No!\n";
}
}
При чём тут плюсы? Задача сначала решается на уровне алгоритма. А какой синтаксис использовать - дело 10е. Так где код, что не получается именно с плюсами?
создать 3 массива белые - 8х2
и черные 8х2
и доску 8х8
Расставь фигуры
Там все увидишь
и черные 8х2
и доску 8х8
Расставь фигуры
Там все увидишь
Похожие вопросы
- Какие задачи должен решить начинающий програмист? (изучающий еще только)
- Недавно начал изучать программирование (не с полного нуля), но мои решения задач слишком громоздкое, это нормально?
- А какие языки программирования изучали в 80х и на чём вы их изучали?
- Как на языке С++ сделать вывод 5 задач через switch-case?
- Что изучать для разработки ПО?
- Как вы решаете задачи?
- Что лучше изучать PHP или ASP net
- Нужна помощь в решении задачи по С++ связанная с матрицами
- Вот разве возможно изучать что либо вообще по примерам!? Тем более ЯП
- Какой язык программирования изучать, и почему?