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

Система резервирования билетов авиакомпании. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.67
Count
0 / 0 / 0
Регистрация: 06.11.2011
Сообщений: 24
07.11.2011, 20:37     Система резервирования билетов авиакомпании. #1
Пишем Microsoft Visual Studio -> Win32 Console Application -> C++.
Вот такая вот задачка:

Система резервирования билетов авиакомпании. Небольшая авиакомпания купила компьютеры для своей новой автоматизированной системы резервирования. Вас попросили запрограммировать новую систему. Вы должны написать программу выделения мест на каждый полет единственного самолета (вместимость: 10 мест). Ваша программа должна отображать следующее меню альтернатив:
a. Введите, пожалуйста, 1 для «курящих»
b. Введите, пожалуйста, 2 для «некурящих»
Если клиент ввел 1, ваша программа должна выделить место в салоне для некурящих (места 1-5). Если клиент ввел 2, ваша программа должна выделять место в салоне для некурящих (места 6-10).
Ваша программа должна также напечатать посадочный талон, указывающий номер места клиента и тип салона в самолете – для курящих или некурящих. Используйте одномерный массив для представления схемы расположения мест в самолете. Присвойте всем элементам массива нулевые начальные значения, чтобы показать, что все места свободны. Как только место выделено пассажиру, устанавливайте соответствующие элементы массива в состояние 1, чтобы показать, что место уже занято.
Ваша программа, конечно, никогда не должна выделять уже занятые места. Если салон для курящих уже заполнен, ваша программа должна спросить у клиента, приемлем ли для него салон для некурящих. Если да, то сделайте выделение соответствующего места. Если нет, то напечатайте сообщение «Следующий полет состоится через три часа»

Есть только самое начало задачи (от которого не слишком много толку). Основная проблема в том как написать "счетчик" посадочных мест и выводить это все на экран.
Если я не ошибаюсь то программа будет построена на "if".

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
# include <locale>
#include <Windows.h>
using namespace std;
void main ()
{
    int arr[10];
    for (int i=0; i<10; i++)
        arr[i]=0;
    {
    int x, z;
    cout<<"Курящий(1)\n";
    cin>>x;
    cout<<"Не курящий(2)\n";
    cin>>z;
    if(x==1)
Добавлено через 11 часов 12 минут
Все таки, как создать "счетчик" и как выводить его на экран?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
amor1k
Студент
 Аватар для amor1k
147 / 147 / 24
Регистрация: 18.01.2011
Сообщений: 469
07.11.2011, 21: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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include <iostream>
#include <clocale>
using namespace std;
int main ()
{
    setlocale(LC_ALL,"rus");
    int arr[10];
    char choice;
    for (int i = 0; i < 10; i++)
        arr[i] = 0;
    int x;
    cout<< "Курящий(1)\n";
    cout<< "Не курящий(2)\n";
    cin >> x;
    int count = 0, countno = 0;
    if(x == 1)
    {
        for(int i = 0; i < 5; i++)
        {
            if(arr[i] == 0)
            {
                arr[i] = 1;
                count++;
                break;
            }
        }
        if(count == 0)
        {
            cout << "В салоне 'для курящих' нет свободных мест. Приемлем ли для вас салон для некурящих? y / n:";
            cin >> choice;
            if(choice == 'y')
            {
                for(int i = 5; i < 10; i++)
                {
                    if(arr[i] == 0)
                    {
                        arr[i] = 1;
                        countno++;
                        break;
                    }
                }
                if(countno == 0)
                {
                    cout << "Извините, но все места для некурящих заняты. Спасибо, что посетили наш рейс.";
                    return 0;
                }
            }
            if(choice == 'n')
            {
                cout << "Спасибо, что посетили наш рейс.";
                return 0;
            }
        }
    }
    else if(x == 2)
    {
        for(int i = 5; i < 10; i++)
        {
            if(arr[i] == 0)
            {
                arr[i] = 1;
                countno++;
                break;
            }
        }
        if(countno == 0)
        {
            cout << "В салоне 'для некурящих' нет свободных мест. Приемлем ли для вас салон для курящих? y / n:";
            cin >> choice;
            if(choice == 'y')
            {
                for(int i = 0; i < 5; i++)
                {
                    if(arr[i] == 0)
                    {
                        arr[i] = 1;
                        count++;
                        break;
                    }
                }
                if(count == 0)
                {
                    cout << "Извините, но все места для курящих заняты. Следующий полет через 3 часа.";
                    return 0;
                }
            }
            if(choice == 'n')
            {
                cout << "Следующий полет через 3 часа.";
                return 0;
            }
        }
    }
 
    cout << "Места для курящих:\n ";
    for(int i = 0; i < 5; i++)
    {
        cout << arr[i] << " ";
    }
 
    cout << "\nМеста для некурящих:\n ";
    for(int i = 5; i < 10; i++)
    {
        cout  << arr[i] << " ";
    }
 
    system("pause");
}
Count
0 / 0 / 0
Регистрация: 06.11.2011
Сообщений: 24
07.11.2011, 21:31  [ТС]     Система резервирования билетов авиакомпании. #3
Огромное спасибо!
Xind
275 / 148 / 7
Регистрация: 05.11.2011
Сообщений: 425
Записей в блоге: 1
07.11.2011, 21:46     Система резервирования билетов авиакомпании. #4
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
#include <iostream>
using namespace std;
 
char *type[2] = {"Не для курящих", "Для курящих"};
int rest = 10;
int plane[10] = {0};
int desire, number;
 
int empty(int start, int end) {
        for (int i = start; i < end; i++) {
                if (plane[i] == 0) {
                        return i;
                }
        }
        return -1;
}
 
void print_ticket(int num, int t) {
        if (num > -1) {
                cout << "\tВаш талон\n"
                        << "Тип:" << type[t-1] << '\n'
                        << "Номер:" << num+1 << '\n';
        }
        else {
                cout << "Следующий полет состоится через три часа.\n";
        }
}
 
void offer(int t) {
        if (number > -1) {
                cout << "В салоне " << type[t-1]
                        << " нет свободных мест. Приемлем ли для вас салон "
                        << type[(t)%2] << "? 1 - да, 0 - нет";
                int cmd;
                cin >> cmd;
 
                if (!cmd) {
                        number = -1;
                }
        }
}
 
int main() {
 
        while (rest > 0) {
                cout << "\n\n";
                cout << "Не курящий(1)\n";
                cout << "Курящий(2)\n";
                cin >> desire;
 
                switch (desire) {
                        case 1:
                                number = empty(0, 5);
                                if (number < 0) {
                                        number = empty(5, 10);
                                        offer(desire);
                                }
                                break;
                        case 2:
                                number = empty(5, 10);
                                if (number < 0) {
                                        number = empty(0, 5);
                                        offer(desire);
                                }
                                break;
                }
 
                if (number > -1) {
                        plane[number] = 1;
                        rest--;
                }
                print_ticket(number, desire);
        }
        cout << "Мест нет.\n";
        print_ticket(-1, 1);
}
MousePro
49 / 30 / 1
Регистрация: 25.04.2013
Сообщений: 366
20.06.2013, 23:19     Система резервирования билетов авиакомпании. #5
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
int main()
{
setlocale(LC_ALL,"Russian");
srand (time(NULL));
int const a=11;
int b[a]={0};
int x=0,y=5;
bool count = true;
while(count)
{
    int mesto;
    std::cout<<"Введите желаемое место:";
    std::cin>>mesto;
 
    if(mesto ==1)
        if(x!=5)
        {
            x++;
            std::cout<<"Ваше место  "<< x<<"\n";
            ++b[x];
        }
        else 
        {
            std::cout<<"Извините, здесь мест больше нет\n";
            std::cout<<"В отделе для курящих еще "<< 10-y<<" мест\n";
        }
if (mesto==2)
    if(y!=10)
        {
            y++;
            std::cout<<"Ваше место  "<< y<<"\n";
            ++b[y];
        }
        else 
        {
            std::cout<<"Извините, здесь мест больше нет\n";
            std::cout<<"В отделе для некурящих еще "<< 5-x<<" мест\n";
        }
mesto=0;
if (y==10 && x==5)
    count=false;
}
for(int y=1;y<a;y++)
    std::cout<<b[y]<<"\n";
 
std::cout<<"Следующий самолет через 3 часа\n";
 
 
system ("pause");
return 0;
}
Genn55
341 / 188 / 37
Регистрация: 26.12.2012
Сообщений: 658
21.06.2013, 02:40     Система резервирования билетов авиакомпании. #6
Еще вариант
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
93
94
95
#include <iostream>
#include <iomanip>
#include<Windows.h>
 
using namespace std;
 
bool checkEmployment(int bk[], const int pl)
{
for(int i = 0; i < pl; i++)
if(bk[i] == 0)
return true;
 
return false;
}
 
void printTichet(int place, int salonType)
{
cout << "Ваш посадочный талон\n\n";
cout << "номер посадочного места - " << place << endl;
cout << "тип салона - " << (salonType == 1 ? "для курящих\n" : "для не курящих\n") << endl;
}
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);//
 
const int places = 10;
int booking[places] = {0};
int salonType, move;
 
//пока в самолете есть свободные места
while(checkEmployment(booking, places))
{
cout << "Введите 1 для \"курящих\"" << endl;
cout << "Введите 2 для \"не курящих\"" << endl;
cin >> salonType;
 
//если выбран салон для курящих
if(salonType == 1)
{
//ищем свободное место в подходящем салоне
for(int i = 0; i < 5; i++)
{
//если место свободно
if(booking[i] == 0)
{
//помечаем место, как занятое и запоминаем его
booking[i] = 1;
printTichet(i + 1, salonType);
break;
}
 
//если все места заняты
if(i == 4 && booking[i] == 1)
{
//предлагаем место из салона для некурящих
cout << "Премлим ли для вас салон для не курящих? (да - 1, нет - 0)";
cin >> move;
 
//если клиент согласен, то присваиваем нужный тип салона
if(move == 1)
salonType = 2;
else
cout << "Следующий полет состоится через 3 часа \n\n";
}
}
}
 
//если выбран салон для некурящих
if(salonType == 2)
{
for(int i = 5; i < 10; i++)
{
if(booking[i] == 0)
{
booking[i] = 1;
printTichet(i + 1, salonType);
break;
}
 
if(i == 9 && booking[i] == 1)
cout << "Следующий полет состоится через 3 часа \n\n";
}
}
 
//если было введено неверное число
if(salonType != 1 && salonType != 2)
cout << "Не верно!! Повторите ввод!\n";
}
 
cout << "Все места заняты!\n";
 
return 0;
}
Yandex
Объявления
21.06.2013, 02:40     Система резервирования билетов авиакомпании.
Ответ Создать тему
Опции темы

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