Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Шахматы: определение правильности хода конем - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Access violation http://www.cyberforum.ru/cpp-beginners/thread280548.html
Помогите пожалуйста. Не могу разобраться. Нашел в каком месте ругается. Но не понял на что именно.void __fastcall TFormSyncronize::FormCreate(TObject*Sender) { ...
C++ Френдовый оператор умножения class A { protected A (...); ... }; ... class B { public: ... http://www.cyberforum.ru/cpp-beginners/thread280532.html
C++ Чем "operator *=" отличается от "operator *"?
снова застряла, не могу понять, чем этот оператор должен отличаться от оператора*.....? вот он, но это работает только в случае оператора*. Matrix Matrix::operator*=(double x) { Matrix...
C++ двухмерный массив
Нужна программа на С Найти для каждой строки сумму элементов нечетных столбцов. М = 3, N = 3
C++ неправильная параллельная конфигурация http://www.cyberforum.ru/cpp-beginners/thread280499.html
Добрый день!столкнулся с огромной проблемой,которую не умею решать. Перестала работать vs2008,cmake,paraview и несколько других,хотя вчера все работало.При запуске выдает ошибку: Не удалось...
C++ SMTP запросы. Всем привет. Вопрос не совсем про программирование, но не нашел лучшего места чтобы задать его. Нужно написать простой почтовый клиент. Пробую разобраться с SMTP через telnet: user@ubuntu:~$... подробнее

Показать сообщение отдельно
Temirlan90
132 / 132 / 8
Регистрация: 30.09.2010
Сообщений: 333

Шахматы: определение правильности хода конем - C++

21.04.2011, 09:31. Просмотров 2936. Ответов 6
Метки (Все метки)

Шахматы
(Время: 1 сек. Память: 16 Мб Сложность: 18%)

Шахматы Совсем недавно Вася занялся программированием и решил реализовать собственную программу для игры в шахматы. Но у него возникла проблема определения правильности хода конем, который делает пользователь. Т.е. если пользователь вводит значение «C7-D5», то программа должна определить это как правильный ход, если же введено «E2-E4», то ход неверный. Так же нужно проверить корректность записи ввода: если например, введено «D9-N5», то программа должна определить данную запись как ошибочную. Помогите ему осуществить эту проверку!

Входные данные

В единственной строке входного файла INPUT.TXT записан текст хода, который указал пользователь. Пользователь не может ввести строку, длиннее 5 символов.
Выходные данные

В выходной файл OUTPUT.TXT нужно вывести «YES», если указанный ход конем верный, если же запись корректна (в смысле правильности записи координат), но ход невозможен, то нужно вывести «NO». Если же координаты не определены или заданы некорректно, то вывести сообщение «ERROR».
Примеры
INPUT.TXT
1) C7-D5
2) E2-E4
3) BSN
OUTPUT.TXT
1)YES
2)NO
3)ERROR
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
using namespace std;
int main() {
    //freopen("input.txt","r",stdin);
    //freopen("output.txt","w",stdout);
    char a,b,z;
    char c,d;
    cin >> a >> c >> z;
    cin >> b >> d;
    if(z != '-' || ((int)a < 64 || (int)a > 73) || ((int)b < 64 || (int)b > 73) 
        || (int)c < 49 || (int)c > 56 || (int)d < 49 || (int)d > 56) {
            cout << "ERROR";
    }
    else {
        a = (int)a;
        b = (int)b;
        c = (int)c;
        d = (int)d;
        if((a - 1 == b && c + 2 == d) || (a - 1 == b && c - 2 == d) || 
            (a + 1 == b && c + 2 == d) || (a + 1 == b && c - 2 ==d )|| 
            (a - 2 == b && c + 1 == d) || (a - 2 == b && c - 1 == d) || 
            (a + 2 == b && c + 1 == d) || (a + 2 == b && b - 1 == d)) {
                cout << "YES";
        }
        else {
            cout << "NO";
        }
    }
    cout << endl;
    system("pause >> void");
    return 0;
}
На 8-м тесте проваливается.
Где может быть ошибка?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru