Написал прогу, но немного сомневаюсь насчет правильности постановки условий

Задание:
Поле шахматной доски определяется парой чисел (a,b), каждое от 1 до 8, первое число задается номер столбца, второе - номер строки. Заданы 2 клетки. Определить может ли шахматный король попасть с первой клетки на вторую за 1 ход?

#include <iostream>
//
using namespace std;
int main()
{
int a, b, c, d;
cout << "Vvedite nomer stroki\n";
cin >> a;
cout << "Vvedite nomer stolbca\n";
cin >> b;
cout << "Vvedite nomer stroki drugoi kletki\n";
cin >> c;
cout << "Vvedite nomer stolbca drugoi kletki\n";
cin >> d;
int as = a - c;
int asa =b - d;
if (as < 0) as = -as;
if (asa < 0) asa = -asa;
if (as + asa == 1)
    cout<<"YES";
  else
    if (as + asa == 2 && as == 1 && asa == 1)
      cout<<"YES ";
    else
      cout<<"NO ";
    system ("PAUSE");
return 0;
}
  • Вопрос задан
  • 2583 просмотра
Решения вопроса 1
@Sumor
Условие as + asa == 2 лишнее, так как оно следует из условия as == 1 && asa == 1.
Для подсчёта модуля можно использовать функцию abs. Либо вместо if при выборе знака использовать условный оператор ?:
Для первого else лучше сразу использовать скобки {}- чтоб не запутаться.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы