Писал программу на С++, но никак не могу понять как исправить
задание:
Составить программу, которая содержит динамическую информацию о наличии автобусов в автобусном парке. Сведения о каждом автобусе содержат: - номер автобуса;- фамилию и инициалы водителя; - номер маршрута; - признак того, где находится автобус – на маршруте или в парке. Программа должна обеспечивать:
начальное формирование данных обо всех автобусах в парке в виде списка;
при выезде каждого автобуса из парка вводится номер автобуса, и программа устанавливает значение признака «автобус на маршруте»;
при въезде каждого автобуса в парк вводится номер автобуса, и программа устанавливает значение признака «автобус в парке;
по запросу выдаются сведения об автобусах, находящихся в парке, или об автобусах, находящихся на маршруте.
Программа должна обеспечивать диалог с помощью меню и контроль ошибок при вводе.
код моей кривой программы):
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
| #include <iostream.h>
#include <iostream.h>
#include <conio.h>
struct Bus {
int nomerBus;
char name [50];
int nomer;
bool working;
};
struct record {
Bus bus;
record *prev;
record *last;
record *next;
};
record *first = NULL;
record *last = NULL;
void Add (Bus *bus,record *RECORD )
{
if (last != NULL)
{
RECORD->prev = last;
RECORD->next = NULL;
last->next = RECORD;
last = RECORD;
}
else
{
RECORD->prev = NULL;
RECORD->next = NULL;
first = RECORD;
last = RECORD;
}
}
void Delete (Bus *bus, record *RECORD)
{
if (bus)
{
if (RECORD->prev) RECORD->prev->next = RECORD->next;
if (RECORD->next) RECORD->next->prev = RECORD->prev;
if (RECORD == first) first = first->next;
if (RECORD == last) last = last->prev;
delete RECORD;
}
}
void Input (void)
{
const int count = 5;
Bus buses[count] = {
{284 ,"A", 23, false},
{284 ,"b", 23, true},
{284 ,"c", 23, false},
{284 ,"d", 23, true},
{284 ,"f", 23, false}
};
for (int i = 0; i < count; i++)
{
Add(buses[i]);
}
}
void Find (void)
{
bool working;
cout << "working?-";
cin >> working;
Bus *bus = first;
while (bus)
{
if ( bus->working == working)
{
cout << bus->working << " "
<< bus->nomerBus << " "
<< bus->name << " "
<< bus->nomer << endl;
}
bus = bus->next;
}
}
void Busexit (Bus *bus, int nomerBus)
{
int nomerBus;
cout << "Vvedite nomer bus- ";
cin >> nomerBus;
Bus *bus = first;
while (bus)
{
if (bus->nomerBus == nomerBus)
{
bus->working = true;
flag = false;
}
bus = bus->next;
}
if (flag)
{
cout<<"net takogo"<<endl;
}
}
void Bushome (Bus *bus, int nomerBus)
{
int nomerBus;
cout << "Vvedite nomer bus- ";
cin >> nomerBus;
Bus *bus = first;
while (bus)
{
if (bus->nomerBus == nomerBus)
{
bus->working = false;
flag = false;
}
bus = bus->next;
}
if (flag)
{
cout<<"net takogo"<<endl;
}
}
int main ()
{
char ch = 0;
cout << "menu" << endl;
cout << "1. sformirovat spisok." << endl;
cout << "2. informacia o bus." << endl;
cout << "3. viezd bus." << endl;
cout << "4. vvezd bus." << endl;
cout << "5. end." << endl;
while (ch < '1' || ch > '5')
{
ch = getch ();
}
switch (ch)
{
case '1': Input (); break;
case '2': Find (); break;
case '3': Busexit (); break;
case '4': Bushome (); break;
case '5': return 0;
};
getch ();
return 0;
} |
|
Как исправить мой бред? не могу разобраться сам((((