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

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

Восстановить пароль Регистрация
 
EarlSweatshirt
0 / 0 / 0
Регистрация: 14.10.2015
Сообщений: 2
14.10.2015, 22:31     Определить сможет ли шахматная фигура съесть пешку по ее координатам #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;
}
Миниатюры
Определить сможет ли шахматная фигура съесть пешку по ее координатам  
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.10.2015, 22:31     Определить сможет ли шахматная фигура съесть пешку по ее координатам
Посмотрите здесь:

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

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
_Valera_
 Аватар для _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;
}
Yandex
Объявления
15.10.2015, 00:20     Определить сможет ли шахматная фигура съесть пешку по ее координатам
Ответ Создать тему
Опции темы

Текущее время: 21:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru