Решение задачи Шахматы с Acmp

Без пояснения   Просмотров: 55


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

Код

#include <bits/stdc++.h>
 
using namespace std;
 
int main()
{
    string str;
    cin >> str;
    if(str[1]=='0' || str[4]=='0' || str[1]=='9' || str[4]=='9' || str.size()!=5 || str[2] !='-'){
        cout << "ERROR";
        return 0;
    }
    if(str[0]=='A')
        str[0] = '1';
    else if(str[0]=='B')
        str[0] = '2';
    else if(str[0]=='C')
        str[0] = '3';
    else if(str[0]=='D')
        str[0] = '4';
    else if(str[0]=='E')
        str[0] = '5';
    else if(str[0]=='F')
        str[0] = '6';
    else if(str[0]=='G')
        str[0] = '7';
    else if(str[0]=='H')
        str[0] = '8';
    else{
        cout << "ERROR";
        return 0;
    }
    if(str[3]=='A')
        str[3] = '1';
    else if(str[3]=='B')
        str[3] = '2';
    else if(str[3]=='C')
        str[3] = '3';
    else if(str[3]=='D')
        str[3] = '4';
    else if(str[3]=='E')
        str[3] = '5';
    else if(str[3]=='F')
        str[3] = '6';
    else if(str[3]=='G')
        str[3] = '7';
    else if(str[3]=='H')
        str[3] = '8';
    else{
        cout << "ERROR";
        return 0;
    }
    if(abs(str[0] - str[3])==1 && abs(str[1] - str[4])==2 || abs(str[0] - str[3])==2 && abs(str[1] - str[4])==1)
        cout << "YES";
    else
        cout << "NO";
    return 0;
}

         

Администратор Photo Автор: Администратор



Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться