Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 04.12.2014
Сообщений: 3

Запись структуры данных в файл. Динамический список

21.05.2015, 23:38. Показов 3011. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Первый вопрос.
Программа вроде бы пишет в файл. Читает из файла тоже корректно, однако, при чтении в список добавляется еще один элемент.

Например список состоит из 5 структур, а при чтении из файла, загружаются 6-ть структур. 6-я структура не несет в себе данных, и выводит ерунду.

прикладываю файл 1.txt. Положить в корень диска D:

см. код ниже.
void fr_list() - чтение из файла
void fw_list() - запись в файл.

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
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <string>
#include <clocale>
#include <fstream>
 
using namespace std;
 
struct ZD   //описываем структуру списка
{
    struct zdDate   //описываем структуру даты
    {
        int day;    //информационное поле для дня
        int month;  //информационное поле для месяца
        int year;   //информационное поле для года
    } rDate;
 
    struct zdTime   //описываем структуру времени
    {
        int hours;  //информационное поле для часов
        int minuts; //информационное поле для мину
    } rTime;
 
    char route[256];    //информационное поле по направлению
    int freeplaces; //информационное поле для свободных мест
    struct ZD* next;    //указатель на следующий элемент списка
};
 
typedef struct ZD sZD;
sZD* headlist = NULL;   //начало списка
sZD* endlist = NULL;    //конец списка
 
//процедура вывода списка
void print_list()
{
    if (!headlist)
    {
        cout << "Список расписаний пустой!\n";
        cout << "\n";
        return;
    }
    sZD* current = headlist;
    //if (!current) cout << "List is empty!\n";
    cout << "Таблица расписаний:\n";
    while (current)
    {
 
        cout << "Дата: ";
        cout << current->rDate.day << "/";
        cout << current->rDate.month << "/";
        cout << current->rDate.year << "\t";
        cout << "Время: ";
        cout << current->rTime.hours << ":";
        cout << current->rTime.minuts << "\t";
        cout << "Направление: ";
        cout << current->route << "\t";
        cout << "Свободно мест: ";
        cout << current->freeplaces << ".";
        cout << "\n";
        current = current->next;
    }
}
 
//процедура добавления элемента список
void add_element()
{
    sZD* current = new sZD;
    int xday, xmonth, xyear, xhours, xminuts, xfreeplaces;
    char xroute[256];
    //string xmonth;
    //вводим информацию по дате отправления
    cout << "Введите день, ДД: ";
    cin >> xday;
    current->rDate.day = xday;
 
    cout << "Введите месяц, ММ: ";
    cin >> xmonth;
    current->rDate.month = xmonth;
 
    cout << "Введите год, ГГГГ: ";
    cin >> xyear;
    current->rDate.year = xyear;
 
    //вводим информацию по времени отправления
    cout << "Введите часы, ЧЧ: ";
    cin >> xhours;
    current->rTime.hours = xhours;
 
    cout << "Введите минуты, ММ: ";
    cin >> xminuts;
    current->rTime.minuts = xminuts;
 
    //вводим информацию по направлению
    cout << "Введите направление: ";
    cin >> xroute;
    strcpy_s(current->route, xroute);
 
    //вводим информацию по кол-ву свободных мест
    cout << "Введите количесво свободных мест: ";
    cin >> xfreeplaces;
    current->freeplaces = xfreeplaces;
 
    current->next = NULL;
 
    if (!headlist)
    {
        headlist = current;
    }
    else endlist->next = current;
 
    endlist = current;
 
    cout << endl;
}
 
//процедура создания списка
void make_list()
{
    int n;
    cout << "Введите количесво новых расписаний: ";
    cin >> n;
    for (int i = 1; i <= n; i++)
    {
        cout << "Данные нового расписания " << i << ":\n";
        add_element();
    }
}
 
//процедура поиска элемента в списке
void find_element()
{
    if (!headlist)
    {
        cout << "Список расписаний пустой!\n";
        cout << "\n";
        return;
    }
    sZD* current = headlist;
    char xroute[256];
    cout << "Введите направление: ";
    fflush(stdin);
    gets_s(xroute);
    while (current)
    {
        if (!strcmp(current->route, xroute))
        {
            cout << "Дата: ";
            cout << current->rDate.day << "/";
            cout << current->rDate.month << "/";
            cout << current->rDate.year << "\t";
            cout << "Время: ";
            cout << current->rTime.hours << ":";
            cout << current->rTime.minuts << "\t";
            cout << "Направление: ";
            cout << current->route << "\t";
            cout << "Свободно мест: ";
            cout << current->freeplaces << ".";
            cout << "\n";
 
        }
        current = current->next;
    }
}
 
//процедура полного удаления списка
void del_list()
{
    if (!headlist)
    {
        cout << "Список расписаний пустой!\n";
        cout << "Удалять нечего :)!\n";
        cout << "\n";
        return;
    }
    while (headlist)
    {
        sZD* current = headlist;
        headlist = current->next;
        delete current;
    }
}
 
//процедура записи в файл
void fw_list()
{
    if (!headlist)
    {
        cout << "Список расписаний пустой!\n";
        cout << "Записывать в файл нечего :)!\n";
        cout << "\n";
        return;
    }
    
    ofstream fileout("d:\\1.txt", ios::binary | ios::out | ios::trunc); //Открываем файл в двоичном режиме для записи
    sZD* current = headlist;
    while (current)
    {
        fileout.write((char*)&current->rDate.day, sizeof current->rDate.day); //Записываем в файл
        fileout.write((char*)&current->rDate.month, sizeof current->rDate.month); //Записываем в файл
        fileout.write((char*)&current->rDate.year, sizeof current->rDate.year); //Записываем в файл
        fileout.write((char*)&current->rTime.hours, sizeof current->rTime.hours); //Записываем в файл
        fileout.write((char*)&current->rTime.minuts, sizeof current->rTime.minuts); //Записываем в файл
        fileout.write((char*)&current->route, sizeof current->route); //Записываем в файл
        fileout.write((char*)&current->freeplaces, sizeof current->freeplaces); //Записываем в файл      
 
        if (current->next == NULL)
            break;
        current = current->next;
        
    }
    fileout.close(); //Закрываем файл  
}
 
//процедура чтения из файла
void fr_list()
{
    fstream filein("d:\\1.txt", ios::binary | ios::in); //Открываем файл в двоичном режиме для чтения
    if (!filein.is_open())                      // если файл не открыт выводится сообщение
    {
        cout << "Файл не может быть открыт!\n";
        cout << "\n";
        return;
    }   
 
    
    while (!filein.eof())
    {
        sZD* current = new sZD;
        filein.read((char*)&current->rDate.day, sizeof current->rDate.day); //Записываем в информационное поле
        filein.read((char*)&current->rDate.month, sizeof current->rDate.month); //Записываем в информационное поле
        filein.read((char*)&current->rDate.year, sizeof current->rDate.year); //Записываем в информационное поле
        filein.read((char*)&current->rTime.hours, sizeof current->rTime.hours); //Записываем в информационное поле
        filein.read((char*)&current->rTime.minuts, sizeof current->rTime.minuts); //Записываем в информационное поле
        filein.read((char*)&current->route, sizeof current->route); //Записываем в информационное поле
        filein.read((char*)&current->freeplaces, sizeof current->freeplaces); //Записываем в информационное поле
 
        current->next = NULL;
 
        if (!headlist)
        {
            headlist = current;
        }
        else endlist->next = current;
        endlist = current;
 
    }
    filein.close(); //Закрываем файл   
}
 
//главная программа
void main()
{
    setlocale(LC_ALL, "Russian");
    int answer;
    do
    {
        system("cls");
        cout << "1. Загрузить расписание из файла" << endl;
        cout << "2. Поиск свободных мест по направлению" << endl;
        cout << "3. Добавить данные по расписанию поездов" << endl;
        cout << "4. Вывести все данные по расписанию поездов" << endl;
        cout << "5. Удалить все данные из списка" << endl;
        cout << "0. Выход" << endl;
        cout << "\nВаш выбор: ";
        cin >> answer;
        switch (answer)
        {
            //
        case 1:
            system("cls");
            cout << endl << "1. Загрузить расписание из файла\n" << endl;
            fr_list();
            //fw_list();
            system("pause");
            break;
            //
        case 2:
            system("cls");
            cout << "2. Поиск свободных мест по направлению\n" << endl;
            find_element();
            system("pause");
            break;
            //
        case 3:
            system("cls");
            cout << "3. Добавить данные по расписанию поездов\n" << endl;
            make_list();
            system("pause");
            break;
            //
        case 4:
            system("cls");
            cout << "4. Вывести все данные по расписанию поездов\n" << endl;
            print_list();
            system("pause");
            break;
        case 5:
            system("cls");
            cout << "5. Удалить все данные из списка\n" << endl;
            del_list();
            //system("pause");
            break;
            //
        case 0:
            system("cls");
            del_list();
            system("pause");
            break;
            //
        default:
            cout << endl << "Ошибка ввода..." << endl;
            system("pause");
            break;
 
        }
 
    } while (answer != 0);
    cin.get();
}
Второй вопрос, про кирилицу.
Категорически отказывается char route[256]; принимать значение кирилицы, только латиница. Что только не пробовал.

Жду от Вас помощи.
Вложения
Тип файла: txt 1.txt (1.4 Кб, 12 просмотров)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.05.2015, 23:38
Ответы с готовыми решениями:

Динамические структуры данных. Сформировать динамический список, описать функцию, которая удаляет из списка за каждым вхождением элемента Е
Сформировать динамический список (стек или очередь), считая, что длина списка (количество элементов) задана. Описать функцию, которая...

Запись данных структуры в файл
Всем доброго времени суток, столкнулся с проблемой записи данных в бинарный файл, а именно: Научившись выделять своей структуре...

запись и чтение структуры данных в файл(объектная реализация)
Есть двухуровневая структура данных(линейная). Она построена на указателях. Из книги Лафоре: &quot;Можно даже не пытаться произвести...

5
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
22.05.2015, 00:59
Лучший ответ Сообщение было отмечено saap как решение

Решение

Цитата Сообщение от saap Посмотреть сообщение
однако, при чтении в список добавляется еще один элемент.
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
//процедура чтения из файла
void fr_list()
{
    fstream filein("d:\\1.txt", ios::binary | ios::in); //Открываем файл в двоичном режиме для чтения
    if (!filein.is_open())                      // если файл не открыт выводится сообщение
    {
        cout << "Файл не может быть открыт!\n";
        cout << "\n";
        return;
    }   
 
    
    while (true)
    {
        sZD* current = new sZD;
        filein.read((char*)&current->rDate.day, sizeof current->rDate.day); //Записываем в информационное поле
        if (filein.eof())
            break;
        filein.read((char*)&current->rDate.month, sizeof current->rDate.month); //Записываем в информационное поле
        filein.read((char*)&current->rDate.year, sizeof current->rDate.year); //Записываем в информационное поле
        filein.read((char*)&current->rTime.hours, sizeof current->rTime.hours); //Записываем в информационное поле
        filein.read((char*)&current->rTime.minuts, sizeof current->rTime.minuts); //Записываем в информационное поле
        filein.read((char*)&current->route, sizeof current->route); //Записываем в информационное поле
        filein.read((char*)&current->freeplaces, sizeof current->freeplaces); //Записываем в информационное поле
 
        current->next = NULL;
 
        if (!headlist)
        {
            headlist = current;
        }
        else endlist->next = current;
        endlist = current;
 
    }
    filein.close(); //Закрываем файл    
}
Добавлено через 4 минуты
Цитата Сообщение от saap Посмотреть сообщение
Второй вопрос, про кирилицу.
Категорически отказывается char route[256]; принимать значение кирилицы, только латиница. Что только не пробовал.
Самое простое:
C++
1
2
3
4
5
6
7
8
#include <windows.h>
 
int main()
{
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
  ...
}
В свойствах консоли выбрать шрифт: Lucida Console.
Установка шрифта Lucida Console
1
0 / 0 / 0
Регистрация: 04.12.2014
Сообщений: 3
22.05.2015, 11:31  [ТС]
lss, хотелось бы узнать, почему именно так происходит, что в список пишется лишние данные. Или это все таки запись некорректно работает?
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
22.05.2015, 12:43
Цитата Сообщение от saap Посмотреть сообщение
Или это все таки запись некорректно работает?
С записью всё нормально. У тебя в коде проверка на eof делается не в том месте. После чтения последней структуры eof ещё не считан, поэтому начинается ещё одна итерация цикла. При первом чтении (в поле current->rDate.month) считывается eof, поток становится нерабочим, но в коде чтение продолжается (т.е. нечтение продолжается), в полях структуры остаётся изначальный мусор (неинициализированные поля), структура добавляется в список и только после этого делается проверка на eof.
0
11 / 11 / 5
Регистрация: 01.04.2015
Сообщений: 120
22.05.2015, 13:20
серьезно так , со структурами я так не умею.
0
0 / 0 / 0
Регистрация: 04.12.2014
Сообщений: 3
22.05.2015, 14:24  [ТС]
Условие:
Кликните здесь для просмотра всего текста

У администратора железнодорожных касс хранится информация о свободных местах в поездах по всем направлениям на ближайшую неделю. Данная информация представлена в следующем виде: дата выезда, конечный пункт назначения, время отправления, число свободных мест. Выдать на печать (экран) информацию о поездах, следующих до Москвы.


Вот код программы, если кому понадобиться:
Кликните здесь для просмотра всего текста

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
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <string>
#include <clocale>
#include <fstream>
#include <Windows.h>
 
using namespace std;
 
struct ZD   //описываем структуру списка
{
    struct zdDate   //описываем структуру даты
    {
        int day;    //информационное поле для дня
        int month;  //информационное поле для месяца
        int year;   //информационное поле для года
    } rDate;
 
    struct zdTime   //описываем структуру времени
    {
        int hours;  //информационное поле для часов
        int minuts; //информационное поле для мину
    } rTime;
 
    char route[25]; //информационное поле по направлению
    int freeplaces; //информационное поле для свободных мест
    struct ZD* next;    //указатель на следующий элемент списка
};
 
typedef struct ZD sZD;
sZD* headlist = NULL;   //начало списка
sZD* endlist = NULL;    //конец списка
 
//процедура вывода списка
void print_list()
{
    if (!headlist)
    {
        cout << "Список расписаний пустой!\n";
        cout << "\n";
        return;
    }
    sZD* current = headlist;
    cout << "Таблица расписаний:\n";
    while (current)
    {
 
        cout << "Дата: ";
        cout << current->rDate.day << "/";
        cout << current->rDate.month << "/";
        cout << current->rDate.year << "\t";
        cout << "Время: ";
        cout << current->rTime.hours << ":";
        cout << current->rTime.minuts << "\t";
        cout << "Направление: ";
        cout << current->route << "\t";
        cout << "Свободно мест: ";
        cout << current->freeplaces << ".";
        cout << "\n";
        current = current->next;
    }
}
 
//процедура добавления элемента список
void add_element()
{
    sZD* current = new sZD;
    int xday, xmonth, xyear, xhours, xminuts, xfreeplaces;
    char xroute[25];
    
    //вводим информацию по дате отправления
    cout << "Введите день, ДД: ";
    cin >> xday;
    current->rDate.day = xday;
 
    cout << "Введите месяц, ММ: ";
    cin >> xmonth;
    current->rDate.month = xmonth;
 
    cout << "Введите год, ГГГГ: ";
    cin >> xyear;
    current->rDate.year = xyear;
 
    //вводим информацию по времени отправления
    cout << "Введите часы, ЧЧ: ";
    cin >> xhours;
    current->rTime.hours = xhours;
 
    cout << "Введите минуты, ММ: ";
    cin >> xminuts;
    current->rTime.minuts = xminuts;
 
    //вводим информацию по направлению
    cout << "Введите направление: ";
    cin >> xroute;
    strcpy_s(current->route, xroute);
 
    //вводим информацию по кол-ву свободных мест
    cout << "Введите количесво свободных мест: ";
    cin >> xfreeplaces;
    current->freeplaces = xfreeplaces;
 
    current->next = NULL;
 
    if (!headlist)
    {
        headlist = current;
    }
    else endlist->next = current;
 
    endlist = current;
 
    cout << endl;
}
 
//процедура создания списка
void make_list()
{
    int n;
    cout << "Введите количесво новых расписаний: ";
    cin >> n;
    for (int i = 1; i <= n; i++)
    {
        cout << "Данные нового расписания " << i << ":\n";
        add_element();
    }
}
 
//процедура поиска элемента в списке
void find_element()
{
    if (!headlist)
    {
        cout << "Список расписаний пустой!\n";
        cout << "\n";
        return;
    }
    sZD* current = headlist;
    char xroute[25];
    cout << "Введите направление: ";
    fflush(stdin);
    gets_s(xroute);
    while (current)
    {
        if (strcmp(current->route, xroute) == 0)
        {
            cout << "Дата: ";
            cout << current->rDate.day << "/";
            cout << current->rDate.month << "/";
            cout << current->rDate.year << "\t";
            cout << "Время: ";
            cout << current->rTime.hours << ":";
            cout << current->rTime.minuts << "\t";
            cout << "Направление: ";
            cout << current->route << "\t";
            cout << "Свободно мест: ";
            cout << current->freeplaces << ".";
            cout << "\n";
 
        }
        current = current->next;
    }
}
 
//процедура полного удаления списка
void del_list()
{
    if (!headlist)
    {
        cout << "Список расписаний пустой!\n";
        cout << "Удалять нечего :)!\n";
        cout << "\n";
        return;
    }
    while (headlist)
    {
        sZD* current = headlist;
        headlist = current->next;
        delete current;
    }
}
 
//процедура записи в файл
void fw_list()
{
    if (!headlist)
    {
        cout << "Список расписаний пустой!\n";
        cout << "Записывать в файл нечего :)!\n";
        cout << "\n";
        return;
    }
    
    ofstream fileout("d:\\raspisanie.txt", ios::binary | ios::out | ios::trunc); //Открываем файл в двоичном режиме для записи
    sZD* current = headlist;
    while (current)
    {
        fileout.write((char*)&current->rDate.day, sizeof current->rDate.day); //Записываем в файл
        fileout.write((char*)&current->rDate.month, sizeof current->rDate.month); //Записываем в файл
        fileout.write((char*)&current->rDate.year, sizeof current->rDate.year); //Записываем в файл
        fileout.write((char*)&current->rTime.hours, sizeof current->rTime.hours); //Записываем в файл
        fileout.write((char*)&current->rTime.minuts, sizeof current->rTime.minuts); //Записываем в файл
        fileout.write((char*)&current->route, sizeof current->route); //Записываем в файл
        fileout.write((char*)&current->freeplaces, sizeof current->freeplaces); //Записываем в файл      
        current = current->next;
        
    }
    fileout.close(); //Закрываем файл
    cout << "Запись данных в файл выполнена :)!\n";
    cout << "\n";
}
 
 
//процедура чтения из файла
void fr_list()
{
    
    fstream filein("d:\\raspisanie.txt", ios::binary | ios::in); //Открываем файл в двоичном режиме для чтения
    if (!filein.is_open())                      // если файл не открыт выводится сообщение
    {
        cout << "Файл не может быть открыт!\n";
        cout << "\n";
        return;
    }
    
    while (true)
    {
        sZD* current = new sZD;
        filein.read((char*)&current->rDate.day, sizeof current->rDate.day); //Записываем в информационное поле
        if (filein.eof())
            break;
        filein.read((char*)&current->rDate.month, sizeof current->rDate.month); //Записываем в информационное поле
        filein.read((char*)&current->rDate.year, sizeof current->rDate.year); //Записываем в информационное поле
        filein.read((char*)&current->rTime.hours, sizeof current->rTime.hours); //Записываем в информационное поле
        filein.read((char*)&current->rTime.minuts, sizeof current->rTime.minuts); //Записываем в информационное поле
        filein.read((char*)&current->route, sizeof current->route); //Записываем в информационное поле
        filein.read((char*)&current->freeplaces, sizeof current->freeplaces); //Записываем в информационное поле
 
        current->next = NULL;
 
        if (!headlist)
        {
            headlist = current;
        }
        else endlist->next = current;
        endlist = current;
 
    }
    filein.close(); //Закрываем файл
 
    cout << "Чтение данных их файлв выполнено :)!\n";
    cout << "\n";
}
 
 
//главная программа
void main()
{
    setlocale(LC_ALL, "Russian");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int answer;
    do
    {
        system("cls");
        cout << "1. Загрузить расписание из файла" << endl;
        cout << "2. Поиск свободных мест по направлению" << endl;
        cout << "3. Добавить данные по расписанию поездов" << endl;
        cout << "4. Вывести все данные по расписанию поездов" << endl;
        cout << "5. Удалить все данные из списка" << endl;
        cout << "0. Выход" << endl;
        cout << "\nВаш выбор: ";
        cin >> answer;
        switch (answer)
        {
            //1. Загрузить расписание из файла
            case 1:
                system("cls");
                cout << "1. Загрузить расписание из файла\n" << endl;
                fr_list();
                system("pause");
                break;
            
            //2. Поиск свободных мест по направлению
            case 2:
                system("cls");
                cout << "2. Поиск свободных мест по направлению\n" << endl;
                find_element();
                system("pause");
                break;
            
            //3. Добавить данные по расписанию поездов
            case 3:
                system("cls");
                cout << "3. Добавить данные по расписанию поездов\n" << endl;
            
                if (headlist != NULL)
                {
                    make_list();
                    fw_list();
                }
                else
                    cout << "Данные по расписанию поездов не загружены\n" << endl;
                system("pause");
                break;
                
            //4. Вывести все данные по расписанию поездов
            case 4:
                system("cls");
                cout << "4. Вывести все данные по расписанию поездов\n" << endl;
                print_list();
                system("pause");
                break;
            
            //5. Удалить все данные из списка
            case 5:
                system("cls");
                cout << "5. Удалить все данные из списка\n" << endl;
                del_list();
                system("pause");
                break;
            
            //0. Выход
            case 0:
                system("cls");
                del_list();
                system("pause");
                break;
                
            //Ошибка, если некорректно введен пункт меню
            default:
                cout << endl << "Ошибка ввода..." << endl;
                system("pause");
                break;
 
        }
 
    } while (answer != 0);
    cin.get();
}

Файл raspisanie.txt положить в корень диска D:
Вложения
Тип файла: txt raspisanie.txt (1.1 Кб, 48 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.05.2015, 14:24
Помогаю со студенческими работами здесь

Структуры и файлы. Ввод структурированных данных и их запись в файл
Составить программу, которая с использованием библиотеки классов языка С++ для работы с файлами выполняет следующие действия: – ввод...

Запись структуры в файл - Как сделать так, чтобы в файл записывались только данные структуры?
Здравствуйте! using System.Runtime.Serialization.Formatters.Binary; public struct wav { public char a; public...

структуры данных запись и сохранить ответ в файл типа .txt
Нужно выполнить задачу с использованием структуры данных запись и сохранить ответ в файл типа .txt. |Наименование, Количество, Цена,...

Запись структуры (в ней есть поля типа данных char*) в бинарный файл
Всем привет! Есть такая структура: struct Telem { int key; char *mark; float engine; char *color; }; В функции main()...

Нужно выполнить задачу с использованием структуры данных запись и сохранить ответ в файл типа .txt
Нужно выполнить задачу с использованием структуры данных запись и сохранить ответ в файл типа .txt. Марка автомобиля, Производитель, Тип,...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
BOINC: 22 года — и всё ещё работает
Programma_Boinc 12.03.2026
BOINC: 22 года — и всё ещё работает Дэвид Андерсон написал ретроспективу. Кратко: в 2001 году он ушёл из United Devices, где был CTO, и за несколько месяцев написал ядро BOINC — клиент, сервер,. . .
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru