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

Структуры в С++(Задача) - C++

Войти
Регистрация
Восстановить пароль
 
obuhovec
Сообщений: n/a
19.05.2009, 12:48     Структуры в С++(Задача) #1
Ввести перечислимые типы вертикаль, горизонталь для обозначения клеток шахматной доски. Составить и протестировать функции: ХОД_ФЕРЗЯ (К1, К2), которая проверяет, может ли ферзь за один ход перейти с поля К1 на поле К2
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2009, 12:48     Структуры в С++(Задача)
Посмотрите здесь:

задача на структуры (язык С) C++
Задача на структуры C++
C++ Структуры задача
C++ Задача. Структуры в С++
Задача на структуры C++
C++ [C++] Задача на структуры
Задача С++ на структуры! C++
C++ задача на структуры
C++ Задача на структуры
Задача на структуры. Доработка! C++
C++ Задача на структуры

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BullDogoff
 Аватар для BullDogoff
10 / 10 / 1
Регистрация: 16.05.2009
Сообщений: 30
19.05.2009, 14:04     Структуры в С++(Задача) #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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include <iostream.h>
 
struct Cell                     //Структура описывает клетку с координатами X и Y
{
    int x, y;
};
 
bool QueenCource(Cell, Cell);
 
main()
{
    Cell A, B;
    bool i = false;
 
    char c;
 
//Ввод первой клетки
    
    do
    {
        cout<<"insert Horisontal for 1-st cell(A, B, C...): ";
        cin>>c;
        if(c>96 && c<105) c-=32;              //Проверка на нижний регистр
        if(int(c)-65>7 || int(c)-65<0)        //Проверка на вхождение в диапазон
        {
            cout<<"Error: illegal coordinates! Retry..\n\n";
            continue;                         //Если не входит - цикл сначала
        }
        else i = true;
    }while(!i);
    do
    {
        cout<<"insert Vertical for 1-st cell(1, 2, 3...):   ";
        cin>>A.y;
        if(A.y-1>7 || A.y-1<0) 
        {
            cout<<"Error: illegal coordinates! Retry..\n\n";
            continue;
        }
        else i = true;
    }while(!i);
 
    A.x=int(c)-65;                            //Приведение к традиционным Декартовым координатам с началом в (0, 0)
    A.y-=1;
 
//То же самое для второй клетки
    
    do
    {
        cout<<"insert Horisontal for 2-nd cell(A, B, C...): ";
        cin>>c;
        if(c>96 && c<105) c-=32;
        if(int(c)-65>7 || int(c)-65<0) 
        {
            cout<<"Error: illegal coordinates! Retry..\n\n";
            continue;
        }
        else i = true;
    }while(!i);
    do
    {
        cout<<"insert Vertical for 2-nd cell(1, 2, 3...):   ";
        cin>>B.y;
        if(B.y-1>7 || B.y-1<0) 
        {
            cout<<"Error: illegal coordinates! Retry..\n\n";
            continue;
        }
        else i = true;
    }while(!i);
 
    B.x=int(c)-65;
    B.y-=1;
 
    cout<<"\n\n";
 
    if(QueenCource(A, B))
            cout<<"Queen can pass from "<<char(A.x+65)<<A.y+1<<" to "<<char(B.x+65)<<B.y+1<<";\n\n";
    else                         
            cout<<"Queen can't pass from "<<char(A.x+65)<<A.y+1<<" to "<<char(B.x+65)<<B.y+1<<";\n\n";
 
    return 0;
}
 
bool QueenCource(Cell A, Cell B)         //Собственно функция
{
    if(A.x==B.x || A.y==B.y ||           //Проверка. Если клетки находятся на одной горизонтали или вертикали,
       A.x - B.x == A.y - B.y)           //соответствующие координаты равны. Если они находятся на одной диагонали,
        return true;                     //равна разность соответствующих координат.
    else
        return false;
}
Добавлено через 12 минут 32 секунды
Да, забыл совсем, воткни ещё защиту от введения двух клеток с одинаковыми координатами..
C++
1
2
3
4
5
if(A.x==B.x && A.y==B.y)
{
    cout<<"Error: 1-st and 2-nd cells have identical coordinates!\n\n";
    return 0;
}
В строку 76..
Yandex
Объявления
19.05.2009, 14:04     Структуры в С++(Задача)
Ответ Создать тему
Опции темы

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