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

В работе необходимо организовать однонапрямлений список структурой с именем AEROFLOT, что содержит следующие поля: - C++

Восстановить пароль Регистрация
 
Iren1
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 91
28.01.2014, 14:33     В работе необходимо организовать однонапрямлений список структурой с именем AEROFLOT, что содержит следующие поля: #1
помогите переделать задачу.

вот условие.
В работе необходимо организовать однонапрямлений список
структурой с именем AEROFLOT, что содержит следующие поля:
CITY - название населенного пункта назначения,
NUM - номер рейса,
TYPE - тип самолета.
И предусмотреть следующие действия :
- добавление элементов в список;
- исключение элементов из списка;
- добавление элементов в конец списка;
- поиск по заданным полем;
- печать списка.

у меня она сделанная.. только удаляет (исключает) элемент из списка.. по его номеру(позиции)
а мне нужно,чтобы мы сами с клавиатуры вводили.. имя..номер и тип.. и если оно все совпадает.. тогда мы удаляем.. иначе выводим..что такого нет..

вот сам код.

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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
 #include <iostream>
 
using namespace std;
 
struct AEROFLOT
{
    char CITY[100];
    int NUM;
    char TYPE[100];
};
 
class Aero
{
public:
    AEROFLOT *ae;
    int Ncount;
 
    Aero()
    {
        Ncount=0;
        ae=new AEROFLOT[1]; 
    }
 
    ~Aero()
    {
        delete[] ae;
    }
    void Addtoend();
    void Addtopos();
    void remove();
    void FindReisNum();
    void FindReisCity();
    void FindReisType();
    void PrintReis();
private:
 
};
 
 
 
void Aero::Addtoend ()
{
    AEROFLOT AIR;
        cout<<"Input CITY ";
        cin.getline(AIR.CITY, 100);
        cout << "Input NUM ";
        cin>>AIR.NUM;
        cin.ignore(1, '\n');
        cout << "Input TYPE ";
        cin.getline(AIR.TYPE, 100);
Ncount++;
if (Ncount>1) 
{
AEROFLOT *temp=new AEROFLOT[Ncount-1];
for (int i=0;i<Ncount-1;i++) temp[i]=ae[i];
delete []ae;
ae=new AEROFLOT [Ncount];
for (int i=0;i<Ncount-1;i++) ae[i]=temp[i];
}
 
ae[Ncount-1]=AIR;
}
 
void Aero::Addtopos ()
{
AEROFLOT AIR;
int id;
cout<<"Vvedite posiciy dly vstavki ";
cin>>id;
 cin.ignore(1, '\n');
if (id>Ncount+1 || id<1) cout<<"Nevozmognoe deistvie"<< endl;
else
{
    cout<<"Input CITY ";
        cin.getline(AIR.CITY, 100);
        cout << "Input NUM ";
        cin>>AIR.NUM;
        cin.ignore(1, '\n');
        cout << "Input TYPE ";
        cin.getline(AIR.TYPE, 100);
    Ncount++;
    if (Ncount>1) 
{
AEROFLOT *temp=new AEROFLOT[Ncount-1];
for (int i=0;i<Ncount-1;i++) temp[i]=ae[i];
delete []ae;
ae=new AEROFLOT [Ncount];
for (int i=0;i<Ncount-1;i++) ae[i]=temp[i];
}
    if (id<Ncount) for(int i=Ncount-1;i>id-1;i--) ae[i]=ae[i-1];
    ae[id-1]=AIR;
}
}
void Aero::remove ()
{
    int id;
cout<<"Vvedite posiciy dly ydalenija ";
cin>>id;
cin.ignore(1, '\n');
if (id>Ncount || id<1) cout<<"Nevozmognoe deistvie"<< endl;
else{
if (id<Ncount) for(int i=id-1;i<Ncount-1;i++) ae[i]=ae[i+1];
Ncount--;
 
if (Ncount>1) 
{
AEROFLOT *temp=new AEROFLOT[Ncount];
for (int i=0;i<Ncount;i++) temp[i]=ae[i];
delete []ae;
ae=new AEROFLOT [Ncount];
for (int i=0;i<Ncount;i++) ae[i]=temp[i];
}
}
}
 
void Aero::FindReisCity()
{
char city[100];
     cout <<"Input CITY ";
     cin.getline(city, 100);
 bool sw = false;
 for (int i = 0; i < Ncount; i++)
    if (strcmp(ae[i].CITY, city) == 0)
    {
        cout << "NUM - " << ae[i].NUM << endl;
        cout << "TYPE - " << ae[i].TYPE << endl << endl;
        sw = true;
    }
if (!sw) cout <<"Reis ne naiden"<< endl;
}
void Aero::PrintReis()
{
    if (Ncount>0)
    {
 for (int i = 0; i < Ncount; i++)
 {
     cout << "CITY - " << ae[i].CITY << endl ;
      cout << "NUM - " << ae[i].NUM << endl;
      cout << "TYPE - " << ae[i].TYPE << endl << endl;
 }
    }
    else
    {
        cout<<"Nevozmognoe deistvie"<< endl;
    }
 
}
 
void Aero::FindReisType()
{
char type[100];
     cout <<"Input TYPE ";
     cin.getline(type, 100);
 bool sw = false;
 for (int i = 0; i < Ncount; i++)
    if (strcmp(ae[i].TYPE, type) == 0)
    {
        cout << "CITY - " << ae[i].CITY << endl ;
        cout << "NUM - " << ae[i].NUM << endl<< endl;
        
        sw = true;
    }
if (!sw) cout <<"Reis ne naiden"<< endl;
}
 
void Aero::FindReisNum()
{
int num;
     cout <<"Input NUM ";
     cin>>num;
 bool sw = false;
 for (int i = 0; i < Ncount; i++)
     if (ae[i].NUM == num)
    {
        cout << "CITY - " << ae[i].CITY << endl ;
        cout << "TYPE - " << ae[i].TYPE << endl << endl;
        sw = true;
    }
if (!sw) cout <<"Reis ne naiden"<< endl;
}
 
 
int main()
{
    Aero *a=new Aero();
    int d=1;
    
while (d!=0)
{
 
    cout<<"Vibirite deistvie"<<endl<<"1-Dobavit reis v konec"<<endl<<"2-Dobavit reis na posiciy"<<endl<<"3-Udalit reis"<<endl;
    cout<<"4-Iskat reis po CITY"<<endl<<"5-Iskat reis po NUM"<<endl<<"6-Iskat reis po TYPE"<<endl;
    cout<<"7-Pechat vseh reisov"<<endl<<"0-Vihod"<<endl;
    cin>>d;
    cin.ignore(1, '\n');
    switch (d)
    {
    case 0: break;
    case 1: a->Addtoend(); break;
    case 2: a->Addtopos(); break;
    case 3: a->remove(); break;
    case 4: a->FindReisCity();break;
    case 5: a->FindReisNum(); break;
    case 6:a->FindReisType (); break;
    case 7: a->PrintReis(); break;
    default:
    cout<<"Deystvie ne poniatno"<<endl;
        break;
    }
    
system("Pause");
system("cls");
}
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.01.2014, 14:33     В работе необходимо организовать однонапрямлений список структурой с именем AEROFLOT, что содержит следующие поля:
Посмотрите здесь:

C++ Описать структуру с именем AEROFLOT, содержащую следующие поля
C++ Описать структуру с именем AEROFLOT, содержащую следующие поля:
Описать структуру с именем WORKER, которая содержит следующие поля: C++
C++ Описать структуру с именем AEROFLOT, содержащую следующие поля:
C++ Массив. Класс с именем NOTE содержит следующие поля:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
h_roman
1 / 1 / 0
Регистрация: 24.01.2014
Сообщений: 16
28.01.2014, 15:10     В работе необходимо организовать однонапрямлений список структурой с именем AEROFLOT, что содержит следующие поля: #2
у вас структура самого списка какая-то неправильная,
в структуре AEROFLOT должно быть поле: AEROFLOT* next (то есть указатель на следующий узел)
таким образом проще будет все методы организовать
Iren1
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 91
28.01.2014, 15:12  [ТС]     В работе необходимо организовать однонапрямлений список структурой с именем AEROFLOT, что содержит следующие поля: #3
Цитата Сообщение от h_roman Посмотреть сообщение
у вас структура самого списка какая-то неправильная,
в структуре AEROFLOT должно быть поле: AEROFLOT* next (то есть указатель на следующий узел)
таким образом проще будет все методы организовать
помогите пожалуйста. буду очень признательна
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
28.01.2014, 15:27     В работе необходимо организовать однонапрямлений список структурой с именем AEROFLOT, что содержит следующие поля: #4
У тебя не список-у тебя вообще массив!
Iren1
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 91
28.01.2014, 15:30  [ТС]     В работе необходимо организовать однонапрямлений список структурой с именем AEROFLOT, что содержит следующие поля: #5
помогите переделать((
Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 5
Завершенные тесты: 1
28.01.2014, 16:47     В работе необходимо организовать однонапрямлений список структурой с именем AEROFLOT, что содержит следующие поля: #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
96
97
98
99
100
#include <iostream>
#include <string>
#include <iomanip>
struct Aeroflot{
    std::string city;
    int numer;
    int type;
    Aeroflot* next;
    Aeroflot(): city(std::string()), numer(0), type(0), next(NULL)
    {}
    Aeroflot(std::string City, int Numer, int Type): city(City), numer(Numer), type(Type), next(NULL)
    {}
};
struct List{
    Aeroflot* tail;
    List(): tail(NULL)
    {}
    void AddElementEnd(std::string City, int Numer, int Type)
    {
        Aeroflot* NewElement = new Aeroflot(City, Numer, Type);
        if (tail == NULL) {
            tail = NewElement;
        }
        else {
            NewElement->next = tail;
            tail = NewElement;
        }
    }
    void RemoveElement(std::string City, int Numer, int Type)
    {
         Aeroflot* temp = tail;
         Aeroflot* temp_prev = tail;
         while (temp!= NULL)
         {
            Aeroflot* remove = NULL;
            if (temp->city == City && temp->numer == Numer && temp->type == Type)  {
                if (temp == tail)
                    tail = temp->next;
                else
                    temp_prev->next = temp->next;
                remove = temp;
            }
            temp_prev = temp;
            temp = temp->next;
            if (remove != NULL) {
                delete remove;
                std::cout << "Элемент успешно удален..." << std::endl;
                return;
            }
         }
         std::cout << "Искомого элемента нет в списке..." << std::endl;
    }
    void Display()
    {
        Aeroflot* temp = tail;
        while(temp != NULL)
        {
            std::cout << std::setw(6) << "Город" << std::setw(10) << temp->city  << ' ';
            std::cout << std::setw(6) << "Номер" << std::setw(5) << temp->numer << ' ';
            std::cout << std::setw(4) << "Тип"   << std::setw(3) << temp->type  << '\n';
            temp = temp->next;
        }
        std::cout << std::endl;
    }
 
    Aeroflot* FindElement(std::string City, int Numer, int Type)
    {
        Aeroflot* temp = tail;
        while(temp != NULL)
        {
             if (temp->city == City && temp->numer == Numer && temp->type == Type)
                return temp;
            temp = temp->next;
        }
        return NULL;
    }
};
int main()
{
    system("chcp 1251>0");
    List list1;
    list1.AddElementEnd("Морроко",  125, 2);
    list1.AddElementEnd("Камчатка", 333, 1);
    list1.AddElementEnd("Рай",      111, 1);
    list1.AddElementEnd("Ад",       236, 2);
    list1.Display();
 
    list1.RemoveElement("Рай",      111, 1);
    list1.RemoveElement("Ад",       236, 2);
    list1.RemoveElement("Ад",       666, 2);
    list1.Display();
    Aeroflot* temp = list1.FindElement("Камчатка", 333, 1);
    if (temp != NULL) {
        std::cout << std::setw(6) << "Город" << std::setw(10) << temp->city  << ' ';
        std::cout << std::setw(6) << "Номер" << std::setw(5) << temp->numer << ' ';
        std::cout << std::setw(4) << "Тип"   << std::setw(3) << temp->type  << '\n';
        std::cout << std::endl;
    }
    return 0;
}

Единственное, что добавление элемента в список производится только в хвосте.
h_roman
1 / 1 / 0
Регистрация: 24.01.2014
Сообщений: 16
28.01.2014, 17:00     В работе необходимо организовать однонапрямлений список структурой с именем AEROFLOT, что содержит следующие поля: #7
Цитата Сообщение от Iren1 Посмотреть сообщение
помогите пожалуйста. буду очень признательна
или так =))

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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
#include <iostream>
#include <string>
using namespace std;
 
/*
В работе необходимо организовать однонапрямлений список
структурой с именем AEROFLOT, что содержит следующие поля:
CITY - название населенного пункта назначения,
NUM - номер рейса,
TYPE - тип самолета.
И предусмотреть следующие действия :
- добавление элементов в список;
- исключение элементов из списка;
- добавление элементов в конец списка;
- поиск по заданным полем;
- печать списка.
 
*/
 
struct AEROFLOT
{
    string CITY;
    int NUM;
    string TYPE;
 
    int pos;       //нумерация с 1,2,3...
    AEROFLOT* next;
};
 
class List
{
    AEROFLOT* head; // начало списка
    int count;
 
public:
    List() : head(nullptr), count(0) {}
 
    void add(AEROFLOT x);
    void add_after_pos(AEROFLOT x, int p);
    void find_for_CITY(string city);
    void find_for_NUM(int num);
    void find_for_TYPE(string type);
    void print();
    void clear();
    void erase(AEROFLOT x);
 
    ~List();
};
 
void List::add(AEROFLOT x)
{
    AEROFLOT* node = new AEROFLOT;
 
    node->CITY = x.CITY;
    node->NUM = x.NUM;
    node->TYPE = x.TYPE;
    node->next = nullptr;
    count++;
    node->pos = count;
 
    if (head == nullptr)
    {
        head = node;
    }
    
    else
    {
        AEROFLOT* current = head;
 
        while (current->next != nullptr)
            current = current->next;
 
        current->next = node;
    }
}
 
 
void List::add_after_pos(AEROFLOT x, int p)
{
    AEROFLOT* node = new AEROFLOT;
 
    node->CITY = x.CITY;
    node->NUM = x.NUM;
    node->TYPE = x.TYPE;
    count++;
    node->pos = count;
 
    if (p<1 && p>count + 1)
        cout << "This position does not exist!";
    else
    {
        AEROFLOT* current = head;
 
        while (current->pos != p)
            current = current->next;
 
        AEROFLOT* temp = current->next;
        current->next = node;
        node->next = temp;
    }
}
 
void List::find_for_CITY(string city)
{
    AEROFLOT* current = head;
 
    while (current->next != nullptr)
    {
        if (current->CITY == city)
        {
            cout << "CITY: " << current->CITY << endl;
            cout << "NUM: " << current->NUM << endl;
            cout << "TYPE: " << current->TYPE << endl;
        }
    }
}
 
void List::find_for_NUM(int num)
{
    AEROFLOT* current = head;
 
    while (current->next != nullptr)
    {
        if (current->NUM == num)
        {
            cout << "CITY: " << current->CITY << endl;
            cout << "NUM: " << current->NUM << endl;
            cout << "TYPE: " << current->TYPE << endl;
        }
    }
}
 
void List::find_for_TYPE(string type)
{
    AEROFLOT* current = head;
 
    while (current->next != nullptr)
    {
        if (current->TYPE == type)
        {
            cout << "CITY: " << current->CITY << endl;
            cout << "NUM: " << current->NUM << endl;
            cout << "TYPE: " << current->TYPE << endl;
        }
    }
}
 
void List::print()
{
    AEROFLOT* current = head;
 
    while (current)
    {
        cout << "CITY: " << current->CITY << endl;
        cout << "NUM: " << current->NUM << endl;
        cout << "TYPE: " << current->TYPE << endl << endl;
        current = current->next;
    }
}
 
void List::clear()
{
    AEROFLOT* current = head;
 
    while (current)
    {
        current = current->next;
        delete head;
        head = current;
    }
 
    cout << "List cleared" << endl;
}
 
void List::erase(AEROFLOT x)
{
    AEROFLOT* current = head;
    AEROFLOT* temp = current;
    bool t = true;
 
    while (current)
    {
        if (current->CITY == x.CITY && current->NUM == x.NUM && current->TYPE == x.TYPE)
        {
            t = false;
            break;
        }
        temp = current;
        current = current->next;
    }
 
    if (t)
        cout << "This element do not founded!" << endl;
 
    else if (current == head)
    {
        current = current->next;
        delete head;
        head = current;
    }
    else
    {
        temp->next = current->next;
        delete current;
    }
}
 
List::~List()
{
    clear();
}
 
 
void main()
{
    List LIST;
 
    AEROFLOT temp;
    cout << "Enter CITY: ";
    cin >> temp.CITY;
    cout << "Enter NUM: ";
    cin >> temp.NUM;
    cout << "Enter TYPE: ";
    cin >> temp.TYPE;
 
    LIST.add(temp);
 
    AEROFLOT a;
    a.CITY = "London";
    a.NUM = 1;
    a.TYPE = "Virgin";
 
    LIST.add_after_pos(a, 1); //вставляем после первого элемента
 
    LIST.print();
 
    LIST.erase(temp);
 
    cout << "\nAfter erase:\n";
    LIST.print();
 
    cin.get();
    cin.get();
}
Добавлено через 8 минут
Цитата Сообщение от h_roman Посмотреть сообщение
if (p<1 && p>count + 1)
* * * * cout << "This position does not exist!";
единственное что там должно быть ...p>count...
Fene4ka_
84 / 84 / 16
Регистрация: 24.01.2014
Сообщений: 1,142
28.01.2014, 17:02     В работе необходимо организовать однонапрямлений список структурой с именем AEROFLOT, что содержит следующие поля: #8
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
У тебя не список-у тебя вообще массив!
тоже самое подумал
Iren1
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 91
28.01.2014, 17:17  [ТС]     В работе необходимо организовать однонапрямлений список структурой с именем AEROFLOT, что содержит следующие поля: #9
Цитата Сообщение от h_roman Посмотреть сообщение
или так =))



Добавлено через 8 минут


единственное что там должно быть ...p>count...
это то убрать и это записать?

Добавлено через 1 минуту
выбивает ошибки
XML
1
2
3
4
5
6
7
8
5.cpp(36) : error C2065: 'nullptr' : undeclared identifier
5.cpp(57) : error C2065: 'nullptr' : undeclared identifier
5.cpp(61) : error C2065: 'nullptr' : undeclared identifier
5.cpp(70) : error C2065: 'nullptr' : undeclared identifier
5.cpp(70) : fatal error C1903: unable to recover from previous error(s); stopping compilation
1>Build log was saved at "file:/...2\2\Debug\BuildLog.htm"
1>2 - 5 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Добавлено через 9 минут
и надо чтобы структура была такой
C++
1
2
3
4
5
6
struct AEROFLOT
{
    char CITY[100];
    int NUM;
    char TYPE[100];
};
h_roman
1 / 1 / 0
Регистрация: 24.01.2014
Сообщений: 16
28.01.2014, 17:33     В работе необходимо организовать однонапрямлений список структурой с именем AEROFLOT, что содержит следующие поля: #10
Цитата Сообщение от Iren1 Посмотреть сообщение
и надо чтобы структура была такой struct AEROFLOT
{
char CITY[100];
int NUM;
char TYPE[100];
};
с этими char-ами возится надо больше
так проще
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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
#include <iostream>
#include <string>
using namespace std;
 
/*
В работе необходимо организовать однонапрямлений список
структурой с именем AEROFLOT, что содержит следующие поля:
CITY - название населенного пункта назначения,
NUM - номер рейса,
TYPE - тип самолета.
И предусмотреть следующие действия :
- добавление элементов в список;
- исключение элементов из списка;
- добавление элементов в конец списка;
- поиск по заданным полем;
- печать списка.
 
*/
 
struct AEROFLOT
{
    string CITY;
    int NUM;
    string TYPE;
 
    int pos;       //нумерация с 1,2,3...
    AEROFLOT* next;
};
 
class List
{
    AEROFLOT* head; // начало списка
    int count;
 
public:
    List() : head(NULL), count(0) {}
 
    void add(AEROFLOT x);
    void add_after_pos(AEROFLOT x, int p);
    void find_for_CITY(string city);
    void find_for_NUM(int num);
    void find_for_TYPE(string type);
    void print();
    void clear();
    void erase(AEROFLOT x);
 
    ~List();
};
 
void List::add(AEROFLOT x)
{
    AEROFLOT* node = new AEROFLOT;
 
    node->CITY = x.CITY;
    node->NUM = x.NUM;
    node->TYPE = x.TYPE;
    node->next = NULL;
    count++;
    node->pos = count;
 
    if (head == NULL)
    {
        head = node;
    }
    
    else
    {
        AEROFLOT* current = head;
 
        while (current->next != NULL)
            current = current->next;
 
        current->next = node;
    }
}
 
 
void List::add_after_pos(AEROFLOT x, int p)
{
    AEROFLOT* node = new AEROFLOT;
 
    node->CITY = x.CITY;
    node->NUM = x.NUM;
    node->TYPE = x.TYPE;
    count++;
    node->pos = count;
 
    if (p<1 && p>count)
        cout << "This position does not exist!";
    else
    {
        AEROFLOT* current = head;
 
        while (current->pos != p)
            current = current->next;
 
        AEROFLOT* temp = current->next;
        current->next = node;
        node->next = temp;
    }
}
 
void List::find_for_CITY(string city)
{
    AEROFLOT* current = head;
 
    while (current->next != NULL)
    {
        if (current->CITY == city)
        {
            cout << "CITY: " << current->CITY << endl;
            cout << "NUM: " << current->NUM << endl;
            cout << "TYPE: " << current->TYPE << endl;
        }
    }
}
 
void List::find_for_NUM(int num)
{
    AEROFLOT* current = head;
 
    while (current->next != NULL)
    {
        if (current->NUM == num)
        {
            cout << "CITY: " << current->CITY << endl;
            cout << "NUM: " << current->NUM << endl;
            cout << "TYPE: " << current->TYPE << endl;
        }
    }
}
 
void List::find_for_TYPE(string type)
{
    AEROFLOT* current = head;
 
    while (current->next != NULL)
    {
        if (current->TYPE == type)
        {
            cout << "CITY: " << current->CITY << endl;
            cout << "NUM: " << current->NUM << endl;
            cout << "TYPE: " << current->TYPE << endl;
        }
    }
}
 
void List::print()
{
    AEROFLOT* current = head;
 
    while (current)
    {
        cout << "CITY: " << current->CITY << endl;
        cout << "NUM: " << current->NUM << endl;
        cout << "TYPE: " << current->TYPE << endl << endl;
        current = current->next;
    }
}
 
void List::clear()
{
    AEROFLOT* current = head;
 
    while (current)
    {
        current = current->next;
        delete head;
        head = current;
    }
 
    cout << "List cleared" << endl;
}
 
void List::erase(AEROFLOT x)
{
    AEROFLOT* current = head;
    AEROFLOT* temp = current;
    bool t = true;
 
    while (current)
    {
        if (current->CITY == x.CITY && current->NUM == x.NUM && current->TYPE == x.TYPE)
        {
            t = false;
            break;
        }
        temp = current;
        current = current->next;
    }
 
    if (t)
        cout << "This element do not founded!" << endl;
 
    else if (current == head)
    {
        current = current->next;
        delete head;
        head = current;
    }
    else
    {
        temp->next = current->next;
        delete current;
    }
}
 
List::~List()
{
    clear();
}
 
 
void main()
{
    List LIST;
 
    AEROFLOT temp;
    cout << "Enter CITY: ";
    cin >> temp.CITY;
    cout << "Enter NUM: ";
    cin >> temp.NUM;
    cout << "Enter TYPE: ";
    cin >> temp.TYPE;
 
    LIST.add(temp);
 
    AEROFLOT a;
    a.CITY = "London";
    a.NUM = 1;
    a.TYPE = "Virgin";
 
    LIST.add_after_pos(a, 1); //вставляем после первого элемента
 
    LIST.print();
 
    LIST.erase(temp);
 
    cout << "\nAfter erase:\n";
    LIST.print();
 
    cin.get();
    cin.get();
}
Iren1
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 91
28.01.2014, 21:49  [ТС]     В работе необходимо организовать однонапрямлений список структурой с именем AEROFLOT, что содержит следующие поля: #11
спасибо

Добавлено через 58 минут
h_roman, а можно туда вставить еще вставку на определенную позицию?и разбить поиск отдельно для каждого? ввиде меню..поиск по названию..поиск по типу..и т.д..

и чтобы вся задача была через меню..
h_roman
1 / 1 / 0
Регистрация: 24.01.2014
Сообщений: 16
28.01.2014, 22:54     В работе необходимо организовать однонапрямлений список структурой с именем AEROFLOT, что содержит следующие поля: #12
Цитата Сообщение от Iren1 Посмотреть сообщение
а можно туда вставить еще вставку на определенную позицию?
ну так метод add_after_pos и всталяет елемент AEROFLOT x на определенную позицию

там поиск по названию и т.д. есть же
только ошибку нашел
исправил

а мейн же нетрудно уже написать
в моем примере просто работу продемонстрировал

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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
#include <iostream>
#include <string>
using namespace std;
 
/*
В работе необходимо организовать однонапрямлений список
структурой с именем AEROFLOT, что содержит следующие поля:
CITY - название населенного пункта назначения,
NUM - номер рейса,
TYPE - тип самолета.
И предусмотреть следующие действия :
- добавление элементов в список;
- исключение элементов из списка;
- добавление элементов в конец списка;
- поиск по заданным полем;
- печать списка.
 
*/
 
struct AEROFLOT
{
    string CITY;
    int NUM;
    string TYPE;
 
    int pos;       //нумерация с 1,2,3...
    AEROFLOT* next;
};
 
class List
{
    AEROFLOT* head; // начало списка
    int count;
 
public:
    List() : head(NULL), count(0) {}
 
    void add(AEROFLOT x);
    void add_after_pos(AEROFLOT x, int p);
    void find_for_CITY(string city);
    void find_for_NUM(int num);
    void find_for_TYPE(string type);
    void print();
    void clear();
    void erase(AEROFLOT x);
 
    ~List();
};
 
void List::add(AEROFLOT x)
{
    AEROFLOT* node = new AEROFLOT;
 
    node->CITY = x.CITY;
    node->NUM = x.NUM;
    node->TYPE = x.TYPE;
    node->next = NULL;
    count++;
    node->pos = count;
 
    if (head == NULL)
    {
        head = node;
    }
    
    else
    {
        AEROFLOT* current = head;
 
        while (current->next != NULL)
            current = current->next;
 
        current->next = node;
    }
}
 
 
void List::add_after_pos(AEROFLOT x, int p)
{
    AEROFLOT* node = new AEROFLOT;
 
    node->CITY = x.CITY;
    node->NUM = x.NUM;
    node->TYPE = x.TYPE;
    count++;
    node->pos = count;
 
    if (p<1 && p>count)
        cout << "This position does not exist!";
    else
    {
        AEROFLOT* current = head;
 
        while (current->pos != p)
            current = current->next;
 
        AEROFLOT* temp = current->next;
        current->next = node;
        node->next = temp;
    }
}
 
void List::find_for_CITY(string city)
{
    AEROFLOT* current = head;
 
    while (current)
    {
        if (current->CITY == city)
        {
            cout << "CITY: " << current->CITY << endl;
            cout << "NUM: " << current->NUM << endl;
            cout << "TYPE: " << current->TYPE << endl;
        }
        current = current->next;
    }
}
 
void List::find_for_NUM(int num)
{
    AEROFLOT* current = head;
 
    while (current)
    {
        if (current->NUM == num)
        {
            cout << "CITY: " << current->CITY << endl;
            cout << "NUM: " << current->NUM << endl;
            cout << "TYPE: " << current->TYPE << endl;
        }
        current = current->next;
    }
}
 
void List::find_for_TYPE(string type)
{
    AEROFLOT* current = head;
 
    while (current)
    {
        if (current->TYPE == type)
        {
            cout << "CITY: " << current->CITY << endl;
            cout << "NUM: " << current->NUM << endl;
            cout << "TYPE: " << current->TYPE << endl;
        }
        current = current->next;
    }
}
 
void List::print()
{
    AEROFLOT* current = head;
 
    while (current)
    {
        cout << "CITY: " << current->CITY << endl;
        cout << "NUM: " << current->NUM << endl;
        cout << "TYPE: " << current->TYPE << endl << endl;
        current = current->next;
    }
}
 
void List::clear()
{
    AEROFLOT* current = head;
 
    while (current)
    {
        current = current->next;
        delete head;
        head = current;
    }
 
    cout << "List cleared" << endl;
}
 
void List::erase(AEROFLOT x)
{
    AEROFLOT* current = head;
    AEROFLOT* temp = current;
    bool t = true;
 
    while (current)
    {
        if (current->CITY == x.CITY && current->NUM == x.NUM && current->TYPE == x.TYPE)
        {
            t = false;
            break;
        }
        temp = current;
        current = current->next;
    }
 
    if (t)
        cout << "This element do not founded!" << endl;
 
    else if (current == head)
    {
        current = current->next;
        delete head;
        head = current;
    }
    else
    {
        temp->next = current->next;
        delete current;
    }
}
 
List::~List()
{
    clear();
}
 
 
void main()
{
    List LIST;
 
    AEROFLOT temp;
    cout << "Enter CITY: ";
    cin >> temp.CITY;
    cout << "Enter NUM: ";
    cin >> temp.NUM;
    cout << "Enter TYPE: ";
    cin >> temp.TYPE;
 
    LIST.add(temp);
 
    AEROFLOT a;
    a.CITY = "London";
    a.NUM = 1;
    a.TYPE = "Virgin";
 
    LIST.add_after_pos(a, 1); //вставляем после первого элемента
 
    LIST.print();
 
    LIST.erase(temp);
 
    cout << "\nAfter erase:\n";
    LIST.print();
 
    cout << "\nFind of type:\n";
    LIST.find_for_TYPE("Virgin");
    
    cin.get();
    cin.get();
}
Iren1
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 91
28.01.2014, 23:00  [ТС]     В работе необходимо организовать однонапрямлений список структурой с именем AEROFLOT, что содержит следующие поля: #13
h_roman, а как сделать,чтобы у нас не только 1 вариант с клавиатуры вводился.. а все? там например 2..3 города и т.д...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2014, 23:42     В работе необходимо организовать однонапрямлений список структурой с именем AEROFLOT, что содержит следующие поля:
Еще ссылки по теме:

C++ Описать структуру с именем ., содержащую следующие поля
C++ Необходимо организовать однонаправлений список структурой, и предусмотреть следующие действия :
Определить структуру с именем Price, содержащую следующие поля C++

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

Или воспользуйтесь поиском по форуму:
h_roman
1 / 1 / 0
Регистрация: 24.01.2014
Сообщений: 16
28.01.2014, 23:42     В работе необходимо организовать однонапрямлений список структурой с именем AEROFLOT, что содержит следующие поля: #14
ну так например

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    List LIST;
 
    AEROFLOT temp;
 
    cout << "Enter quantity: ";
    int n;
    cin >> n;
 
    while (n-- != 0)
    {
        cout << "Enter CITY: ";
        cin >> temp.CITY;
        cout << "Enter NUM: ";
        cin >> temp.NUM;
        cout << "Enter TYPE: ";
        cin >> temp.TYPE;
 
        LIST.add(temp);
    }
Yandex
Объявления
28.01.2014, 23:42     В работе необходимо организовать однонапрямлений список структурой с именем AEROFLOT, что содержит следующие поля:
Ответ Создать тему
Опции темы

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