Форум программистов, компьютерный форум, киберфорум С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/47: Рейтинг темы: голосов - 47, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 07.03.2015
Сообщений: 3

Определить, может ли король попасть с первой заданной клетки на вторую одним ходом (шахматы)

13.02.2016, 01:37. Показов 8814. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток. Начал интересоваться C++ и прохожу онлайн курс. Застопорился на условных операторах вот с такой задачей:

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

Код:

C++ Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
int main(){
    int c1, s1, c2, s2;
    cin >> c1 >> s1 >> c2 >> 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){
        cout << "YES";
    }
    else {cout << "NO";}
    return 0;
}
Проблема в том, что там есть форма проверки ответов, для этой задачи она состоит из тридцати автоматических тестов и некоторые из них данное решение не проходит. Кое что я сам понял, решил, например вопрос с тем чтобы король не ходил, как конь, но всё равно мой код не принимается. Модератор внятно ответить почему не смог, только указал что что-то не так с булевыми переменным (вполне возможно ибо я плохо с ними знаком). P.S. Тесты моделируют различные ходы, но какие именно и как в курсе не описано.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.02.2016, 01:37
Ответы с готовыми решениями:

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

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

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

5
12 / 12 / 5
Регистрация: 02.12.2014
Сообщений: 35
13.02.2016, 01:45
Шахматная доска состоит из 8 столбцов и 8 строк. Если король стоит на {1,8} то он может пойти только на две клетки.
Я не вижу тут проверки на выход с доски.
К тому же условие:
Цитата Сообщение от Skazi Посмотреть сообщение
c1 - c2 <= 1 && c1 - c2 >= -1
Будет true только, когда с1 и с2 равны. Ты уверен, что оно правильное?
0
0 / 0 / 0
Регистрация: 07.03.2015
Сообщений: 3
13.02.2016, 01:51  [ТС]
Это так, но если в таком случае завести, как второй ход 7 (номер столбца) и 2 (номер строки), то программа покажет "YES". Проверил только что на всякий случай все три хода с такой позиции и они работают. Да, уверен. Собирается, выполняется без сбоев, выдаёт нужные результаты на все ходы, которые я могу смоделировать.
0
82 / 82 / 44
Регистрация: 14.07.2013
Сообщений: 410
13.02.2016, 01:53
Лучший ответ Сообщение было отмечено Skazi как решение

Решение

как вариант можешь сделать проверку входных данных, ну что бы они были от 1 к 8 а если отрицательные или больше то писало нет
1
0 / 0 / 0
Регистрация: 07.03.2015
Сообщений: 3
13.02.2016, 01:59  [ТС]
Огромное спасибо! Вот так всё приняло:
C++ Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
int main(){
int c1, s1, c2, s2;
cin >> c1 >> s1 >> c2 >> 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;
}
0
20 / 27 / 1
Регистрация: 14.03.2015
Сообщений: 792
13.02.2016, 08:59
Посмотрите,
C++ Скопировано
1
2
3
4
5
6
7
8
int c1, s1, c2, s2;
    cin >> c1 >> s1 >> c2 >> s2;
    bool xod;
    if ((c1 == c2 - 1 || c1 == c2 || c1 == c2 + 1) && (s1 == s2 - 1 || s1 == s2 || s1 == s2 + 1))
        cout << " Ura" << endl << endl;
    else
        cout << " Why no?";
    cout << endl << endl;
Вроде работает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.02.2016, 08:59
Помогаю со студенческими работами здесь

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

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

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

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

Проверить, можно ли с первой заданной клетки попасть на вторую одним ходом черного слона
1. Шахматная доска содержит 8*8 клеток. Горизонтали и вертикали обозначаются цифрами 1-8. Написать программу, проверяющую, можно ли с...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Образование и практика
Igor3D 21.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
Lazarus. Таблица с объединением ячеек.
Massaraksh7 21.03.2025
Понадобилась представление на экране таблицы с объединёнными ячейками. И не одной, а штук триста, и все разные. На Delphi я использовал для этих целей TStringGrid, и то, кривовато получалось. А в. . .
Async/await в Swift: Асинхронное программировани­е в iOS
mobDevWorks 20.03.2025
Асинхронное программирование долго было одной из самых сложных задач для разработчиков iOS. В течение многих лет мы сражались с замыканиями, диспетчеризацией очередей и обратными вызовами, чтобы. . .
Колмогоровская сложность: Приёмы упрощения кода
ArchitectMsa 20.03.2025
Наверное, каждый программист хотя бы раз сталкивался с кодом, который напоминает запутанный лабиринт — чем дальше в него погружаешься, тем сложнее найти выход. И когда мы говорим о сложности кода, мы. . .
PostgreSQL в Kubernetes: Подготовка кластера и настройка
Mr. Docker 20.03.2025
Когда доходит до контейнеризации баз данных и особенно таких требовательных к ресурсам системах как PostgreSQL, многие команды до сих пор колеблются, прежде чем перенести их в контейнерную. . .
C++26: Индексирование пакетов и метапрограммиро­вание
bytestream 20.03.2025
Эволюция C++ продолжается стремительными темпами – каждый новый стандарт приносит функциональность, о которой мы мечтали годами. Звучит слишком громко? Если вы когда-либо боролись с вариадическими. . .
Состояние гонки в C#: подводные камни многопоточного программировани­я
UnmanagedCoder 20.03.2025
Что такое состояние гонки? Это ситуация, когда результат программы непредсказуемо меняется в зависимости от порядка выполнения потоков. Проще говоря, два или более потока пытаются одновременно. . .
Next.js для разработки React: преимущества серверного рендеринга
Reangularity 20.03.2025
Next. js решает классическую проблему React-приложений: медленную первоначальную загрузку и плохую индексацию поисковиками. Вместо того чтобы заставлять браузер пользователя выполнять всю работу по. . .
JUnit или TestNG: Выбираем Java-фреймворк для тестирования
Javaican 20.03.2025
История тестовых фреймворков в Java началась в конце 90-х, когда Кент Бек и Эрих Гамма разработали JUnit - инструмент, который перевернул представление разработчиков о модульном тестировании. JUnit. . .
Разбиваем монолит на два микросервиса и реализуем CI/CD
ArchitectMsa 20.03.2025
Когда команда растет, а функциональность монолита расширяется, поддерживать и развивать такую систему становится все труднее. Разработчики начинают тратить много времени на разбор сложных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер