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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
EarlSweatshirt
0 / 0 / 0
Регистрация: 14.10.2015
Сообщений: 2
#1

Определить сможет ли шахматная фигура съесть пешку по ее координатам - C++

14.10.2015, 22:31. Просмотров 320. Ответов 1
Метки нет (Все метки)

Помогите пожалуйста. Задачу не принимает. Пишет, что неправильный ответ на каком-то тесте.

Задача:

Нужно найти сможет ли шахматная фигура съесть пешку указав их координаты.
Введите координаты и название фигуры(одного из нижеследующих):
1. rook (ладья)
2. bishop (слон)
3. knight (конь)
Затем укажите координаты жертвы.
Выведите YES если фигура может съесть жертву, NO если нет.
Считается что только эти две фигуры находятся на шахматной доске.

Пример:
Ввод:
rook 4 b
7 b
Вывод:
YES

Пример:
Ввод:
bishop 2 e
3 b
Вывод:
NO

Вот мой код:

C++ (Qt)
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <iostream>
using namespace std;
int main() {
 
    int i,j,x1,x2,y1,y2,k=0;
    
    string a;
    
    char y01,y02;
    char f[9] = "abcdefgh";
    
    cin>>a;
    cin>>x1>>y01;
    cin>>x2>>y02;
    
    for (int i=0;i<8;i++) {
        if (f[i]==y01) y1 = i+1;
        if (f[i]==y02) y2 = i+1;
    }
    
    if (a == "rook") {  
// rook rook rook rook rook rook rook rook  
        if (x1 == x2 || y1 == y2) {
            cout<<"YES";
            
        }
        else {
            cout<<"NO";
        }
// rook rook rook rook rook rook rook rook
    }
    
    else if (a == "bishop") {
// bishop bishop bishop bishop bishop bishop    
        for (i=1;i<=8;i++) {
            if (((x2==x1-i)&&((y2==y1-i)||(y2==y1+i))) || ((x2==x1+i)&&((y2==y1-i)||(y2==y1+i)))){
                k=1;
            }
        }
        
        if ((x1==x2)&&(y1==y2)) {
            cout<<"YES"     ;
        }
        
        else {
            if (k!=0) {
                cout<<"YES";
            }
            else cout<<"NO";    
        }
// bishop bishop bishop bishop bishop bishop
    }
    
    else if (a == "knight") {
// knight knight knight knight knight knight
        if ((x1==x2)&&(y1==y2)) {
            cout<<"YES"     ;
        }
        else {
            if (((x2==x1+1) && ((y2==y1-2)||(y2==y1+2))) || ((x2==x1-1)&&((y2==y1-2)||(y2==y1+2))) || ((x2==x1-2)&&((y2==y1-1)||(y2==y1+1))) || ((x2==x1-2)&&((y2==y1-1)||(y2==y1+2))))  {
                cout<<"YES";
            }
            else {
                cout<<"NO";
            }
        }
// knight knight knight knight knight knight    
    }
    
    
    return 0;
}
0
Миниатюры
Определить сможет ли шахматная фигура съесть пешку по ее координатам  
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.10.2015, 22:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определить сможет ли шахматная фигура съесть пешку по ее координатам (C++):

Определить класс «Шахматная фигура» и производные классы «Ферзь» - C++
Дело в том, что начал изучать ООП не так давно и тут попалась задачка, которая заинтересовала. Условие таково: &quot;Определить класс «Шахматная...

Определить, бьет ли одна шахматная фигура другую сейчас или на следующем ходу - C++
Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит 8: первое – номер вертикали, второе – номер...

Шахматная фигура конь - C++
Шахматная фигура конь ходит на 1 клетку по горизонтали и на 2 клетки по вертикали или наоборот на 2 клетки по горизонтали и на 1 по...

Одиночное наследование, иерархия классов "Шахматная фигура" - C++
Люди добрые помогите пожалуйста написать программу на с++. Создать иерархию классов шахматная фигура - абстрактный класс, содержащий...

Создать иерархию классов Шахматная фигура – абстрактный класс, содержащий поле – цвет. Создать производные классы - C++
Создать иерархию классов Шахматная фигура – абстрактный класс, содержащий поле – цвет. Создать производные классы все фигуры, содержащие...

Как узнать, является ли заданная шахматная фигура Королем? - C#
Есть класс Chessman (шахматная фигура). От нее наследуются классы фигур Pawn, King, Queen и тд. Есть доска - двумерный массив из...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
_Valera_
486 / 368 / 94
Регистрация: 27.01.2015
Сообщений: 1,588
15.10.2015, 00:20 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Я слегка подправил, тестируй, и дай ссылку на эти тесты.
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
#include <string>
#include "math.h"
using namespace std;
int main()
{
 
    int x1, x2, y1=0, y2=0;
 
    string a ;
 
    char let1, let2;
 
    cin>>a;
    cin>>x1>>let1;
    cin>>x2>>let2;
    
    y1 = let1 - 96; 
    y2 = let2 - 96;
 
    
 
    if (a == "rook") // rook 
        if (x1 == x2 || y1 == y2) 
            cout<<"YES";              
        else 
            cout<<"NO";
 
 
 
    else if (a == "bishop") // bishop
        if(abs(x1 - x2) == abs(y1 - y2))
            cout<<"YES";
        else 
            cout<<"NO";
 
 
 
    else if (a == "knight")// knight 
        if( (pow(x1-x2,2.0) + pow(y1-y2,2.0) ) == 5)
            cout<<"YES";
        else 
            cout<<"NO";
 
 
    system("PAUSE");
    return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.10.2015, 00:20
Привет! Вот еще темы с ответами:

Проверить является ли фигура квадратом по координатам 4 точек - C#
Даны координаты 4рех точек проверить является ли фигура квадратом. Все случаи учитывать

Описать класс "Шахматная фигура" - Delphi
Помогите, пожалуйста! 1.Класс &quot;фигура&quot;: координаты на шахматной доске, цвет. Метод - &quot;ход&quot; на одну позицию в одном из 4 направлений. ...

Определить наибольшее количество шашек которое можно съесть за ход - Visual Basic
Добрый вечер, пожалуйста помогите написать программу ,что бы определить наибольшее количество шашек которое можно съесть за ход. ...

Определить максимальное суммарное количество пирожков, которое может съесть Ваня - Turbo Pascal
Ваня Пирожков очень любит пирожки с картошкой и с капустой. Один пирожок с картошкой он съедает за N мс, а с капустой – за M мс. У него...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru