Решение задачи №6 «Шахматы» с ACMP
Условие задачи
Совсем недавно Вася занялся программированием и решил реализовать собственную программу для игры в шахматы. Но у него возникла проблема определения правильности хода конем, который делает пользователь. Т.е. если пользователь вводит значение «C7-D5», то программа должна определить это как правильный ход, если же введено «E2-E4», то ход неверный. Так же нужно проверить корректность записи ввода: если например, введено «D9-N5», то программа должна определить данную запись как ошибочную. Помогите ему осуществить эту проверку!
Входные данные
В единственной строке входного файла INPUT.TXT записан текст хода (непустая строка), который указал пользователь. Пользователь не может ввести строку, длиннее 5 символов.
Выходные данные
В выходной файл OUTPUT.TXT нужно вывести «YES», если указанный ход конем верный, если же запись корректна (в смысле правильности записи координат), но ход невозможен, то нужно вывести «NO». Если же координаты не определены или заданы некорректно, то вывести сообщение «ERROR».
Решение на C++
#include<iostream>
#include<string>
using namespace std;
main()
{
string s="GCV";
int i,n;
char c;
cin>>s;
if(s.size()!=5||s[2]!='-'||
s[0]<'A'||s[0]>'H'||
s[3]<'A'||s[3]>'H'||
s[1]<'1'||s[1]>'8'||
s[4]<'1'||s[4]>'8')cout<<"ERROR";
else if(abs((s[0]-s[3])*(s[1]-s[4]))==2)cout<<"YES";
else cout<<"NO";
}
Условия задач взяты с сайта acmp.ru