9 / 9 / 2
Регистрация: 03.04.2016
Сообщений: 89
1

Определить может ли конь попасть с первой клетки на вторую одним ходом?

04.04.2016, 12:56. Показов 41108. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Задача: Шахматный конь ходит буквой “Г” — на две клетки по вертикали в любом направлении и на одну клетку по горизонтали, или наоборот. Даны две различные клетки шахматной доски, определите, может ли конь попасть с первой клетки на вторую одним ходом.

Формат входных данных
Программа получает на вход четыре числа от 1 до 8 каждое, задающие номер столбца и номер строки сначала для первой клетки, потом для второй клетки.

Формат выходных данных
Программа должна вывести YES, если из первой клетки ходом коня можно попасть во вторую или NO в противном случае.

Sample Input 1:
1
1
1
4

Sample Output 1:NO

Sample Input 2:

1
1
8
8

Sample Output 2:NO

Мой код не совсем правильный. Подскажите как добавить ограничение на выход за границы поля?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <cmath>
using namespace std;
int main() {
      int x1, x2, y1, y2;
    cin >> x1 >> x2 >> y1 >> y2;
    if (abs(x1-y1)==1 && abs(x2-y2)==2) 
        cout << "YES";
    if   (abs(x1-y1)==2 && abs(x2-y2)==1)
         cout << "YES";
    else cout << "NO";
  return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.04.2016, 12:56
Ответы с готовыми решениями:

Определить, может ли ладья попасть с первой клетки на вторую одним ходом
Шахматная ладья ходит по горизонтали или вертикали. Даны две различные клетки шахматной доски,...

Определить, может ли ферзь попасть с первой клетки на вторую одним ходом
Решаю задание на c++. Шахматный ферзь ходит по диагонали, горизонтали или вертикали. Даны две...

Определить, может ли король попасть с первой заданной клетки на вторую одним ходом
Шахматный король ходит по горизонтали, вертикали и диагонали, но только на 1 клетку. Даны две...

Определить, может ли король попасть с первой заданной клетки на вторую одним ходом (шахматы)
Доброго времени суток. Начал интересоваться C++ и прохожу онлайн курс. Застопорился на условных...

4
5 / 5 / 6
Регистрация: 12.08.2015
Сообщений: 26
04.04.2016, 14:14 2
Можно для ясности изменить обозначения. x2 превратится в y1, а y1 станет x2. Вы ведь считываете 2 "точки". Получится, что x1,y1 будет первой точкой, а x2,y2 -- второй. Но это не обязательно. Ваш код станет таким:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <cmath>
 
using namespace std;
 
int main() {
    int x1, x2, y1, y2;
    cin >> x1 >> y1 >> x2 >> y2;
    
    if (abs(x2-x1)==1 && abs(y2-y1)==2)
        cout << "YES\n";
    
    if (abs(x2-x1)==2 && abs(y2-y1)==1)
        cout << "YES\n";
    else
        cout << "NO\n";
    
    return 0;
}
В нём ничего не нужно изменять. В проверяющих системах подразумевается, что входные данные всегда корректные. Поэтому проверять, что координата x входной точки отрицательная, не обязательно.
0
9 / 9 / 2
Регистрация: 03.04.2016
Сообщений: 89
04.04.2016, 15:21  [ТС] 3
Failed test #3. Wrong answer.

Не проходит код. Где-то ошибка. Поправьте пожалуйста, знающие.

Добавлено через 1 минуту
Failed test #3. Wrong answer.
0
5 / 5 / 6
Регистрация: 12.08.2015
Сообщений: 26
04.04.2016, 15:42 4
Лучший ответ Сообщение было отмечено AGPro как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <cmath>
 
using namespace std;
 
int main() {
    int x1, x2, y1, y2;
    cin >> x1 >> y1 >> x2 >> y2;
    
    if (abs(x2-x1)==1 && abs(y2-y1)==2)
        cout << "YES\n";
    else if (abs(x2-x1)==2 && abs(y2-y1)==1) // <--
        cout << "YES\n";
    else
        cout << "NO\n";
    
    return 0;
}
Добавлено через 11 минут
Извиняюсь за свой неалгоритмический склад ума. Сразу не заметил, что else не хватает.
1
9 / 9 / 2
Регистрация: 03.04.2016
Сообщений: 89
04.04.2016, 17:40  [ТС] 5
testuser, спасибо.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.04.2016, 17:40
Помогаю со студенческими работами здесь

Определить, может ли ферзь попасть с первой клетки на вторую одним ходом
Всем привет Начал изучать питон Засел на задачке про ферзя, условие такие: &quot;Шахматный ферзь...

Может ли ферзь попасть с первой клетки на вторую одним ходом
Доброго времени суток! Условие задачи следующее:Шахматный ферзь ходит по диагонали, горизонтали...

Определите, может ли ферзь попасть с первой клетки на вторую одним ходом
Шахматный ферзь ходит по диагонали, горизонтали или вертикали. Даны две различные клетки шахматной...

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


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

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

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