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

Составить программу которая содержит динамическую информацию об автобусном парке - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Определить, состоит ли число из четных и нечетных цифр http://www.cyberforum.ru/cpp-beginners/thread1252466.html
В диалоговом режиме задается длинное целое число A Определить, состоит ли число из четных и нечетных цифр. Заранее спасибо за помощь.
C++ Вычислить сумму ряда, состоящего из N слагаемых, и вывести результат с M знаками после запятой Помогите с решением данной задачи: http://www.cyberforum.ru/cpp-beginners/thread1252463.html
Программа производит расчеты только по одному из двух введенных значений C++
Подскажите как сделать что бы я вручную вводил значение radius и он выдавал ответ. Сейчас он почему-то просит 2 раза ввести число но рассчитывает только по первому введенному. Я первый день изучаю С++, не судите строго #include <iostream> using namespace std; class NEFROIDA { public: NEFROIDA();
C++ Подскажите что означает это выражение
Язык программирования MicroC (для ARM) если что. Ow_Write(&GPIOA_BASE, 3, 0xBE); // Issue command READ_SCRATCHPAD //read temp. on DS1820 DS1820_VALUE = ReadDS1820(); //put value in output buffer writebuff=(char)((DS1820_VALUE >> 8) & 0xFF); writebuff=(char)(DS1820_VALUE & 0xFF);
C++ Что нужно писать в угловых скобках после Smart в void main? http://www.cyberforum.ru/cpp-beginners/thread1252441.html
Подскажите, что нужно писать в угловых скобках после Smart в void main ? #include <iostream> using namespace std; class A { public: void f()
C++ В первый массив дописать число, которое есть во втором массиве, но нету в первом Есть 2 массива: int arr1; int arr2; for(int i=0;i<5;i++) { arr1=i; arr2=i+1; } for(int i=0;i<5;i++) подробнее

Показать сообщение отдельно
EfimKR
 Аватар для EfimKR
48 / 21 / 10
Регистрация: 24.06.2014
Сообщений: 210
Записей в блоге: 1
07.09.2014, 18:59     Составить программу которая содержит динамическую информацию об автобусном парке
Задание:
//Составить программу которая содержит динамическую информацию об автобусном парке.
//Сведения о каждом автобусе включают:
//* номер автобуса;
//* фамилию и инициалы водителя;
//*номер маршрута;
//Программа должна обеспечивать:
//* начальное формирование данных об автобусах в виде списка;
//* при выезде автобуса с парка, он переносится в список на маршруте;
//* при въезде в парк, он переносится в список находящихся в парке;
//* по запросу выдаются сведения об автобусах на маршруте или в парке.

main
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
#include<iostream>
#include<fstream>
#include<cstdlib>
#include"bus.h"
using namespace std;
 
int main()
{
    setlocale(0, "");
    Bus *pBeg = 0;
    bool bLabelOut = true;
 
    pBeg = read_base("base_in.txt");
 
    while (bLabelOut)
    {
        switch (menu_bus())
        {
        case 1: add (pBeg, read_bus());
            break;
        case 2: pBeg = delete_bus (pBeg);
            break;
        case 3: bLabelOut = false;
            break;
        default: cout<<"Введено некорpектное значение\n";
            break;
        }
    }
 
    if (!pBeg)
    {
        cout<<"База автобусов пуста\n";
        return 0;
    }
 
    bLabelOut = true;
    while (bLabelOut)
    {
        switch (menu())
        {
        case 1: departure();
            break;
        case 2: entry();
            break;
        case 3: print_location(PARK);
            break;
        case 4: print_location(ROAD);
            break;
        case 5: bLabelOut = false;
            break;
        default: cout<<"Введено некорpектное значение\n";
            break;
        }
    }
 
    write_base ("base_out.txt", pBeg);
 
    return 0;
}
bus.h
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
#ifndef BUS_H
#define BUS_H
 
const int cnLenghtName = 20;
 
struct Bus
{
    int number;
    char name[cnLenghtName];
    int rout;
    bool in_road;
    Bus *next;
};
 
enum location {PARK, ROAD};
 
Bus* add (Bus* begin, const Bus& bus);  
Bus* delete_bus (Bus* begin);
void departure();
void entry();
Bus* find_number(Bus* begin, char* name, Bus*& prev);
void get_number(int& number);
int menu_bus();
int menu();
void print(const Bus& bus);
void print_location(location loc);
Bus* read_base (char* filename);
Bus read_bus();
void write_base(char* filename, Bus* begin);
 
#endif BUS_H
bus.cpp
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
#include"bus.h"
#include<iostream>
#include<fstream>
#include<windows.h>
using namespace std;
 
inline void rus_in (char* buf)
{
    OemToCharA(buf, buf);
}
 
Bus* add (Bus* begin, const Bus& bus)
{
    Bus *pv = new Bus;
    *pv = bus;
    pv->next = 0;
    if (begin)
    {
        Bus *temp = begin;
        while (temp->next)
            temp = temp->next;
        temp->next = pv;
    }
    else
        begin = pv;
    return pv;
}
 
Bus* delete_bus (Bus* begin)
{
    cout<<"run delete\n";
    return 0;
}
void departure()
{
    cout<<"run departure\n";
}
 
void entry()
{
    cout<<"run entry\n";
}
 
Bus* find_number(Bus* begin, char* name, Bus*& prev)
{
    cout<<"run find_number\n";
    return 0;
}
void get_number(int& number)
{
    cout<<"Введите номер автобуса: ";
    cin>>number;
}
 
int menu_bus()
{
    int option;
    cout<<"Редактирование списка автобусов. Выберите действие:\n"
        <<"1 - добавить автобус в список\n2 - удалить автобус с списка\n3 - выход из редактирования списка\n";
    cin>>option;
    if (1 == option) return 1;
    else if (2 == option) return 2;
    else if (3 == option) return 3;
    else return 4;
}
 
int menu()
{
    int option;
    cout<<"Редактирование списка местоположения автобусов. Выберите действие:\n"
        <<"1 - ввести выехавший автобус\n2 - ввести въехавший автобус"
        <<"\n3 - вывод информации о автобусах в парке\n4 - вывод информации о автобусах на маршруте"
        <<"\n5 - выход из редактирования списка\n";
    cin>>option;
    if (1 == option) return 1;
    else if (2 == option) return 2;
    else if (3 == option) return 3;
    else if (4 == option) return 4;
    else if (5 == option) return 5;
    else return 6;
}
 
void print(const Bus& bus)
{
    cout<<"run print\n";
}
 
void print_location(location loc)
{
    cout<<"run print_location\n";
}
 
//------------------------------------- Чтение базы с файла
Bus* read_base (char* filename)                     
{
    Bus bus, *begin = 0;
    ifstream fin (filename, ios::in | ios::_Nocreate);
    if (!fin)
    {
        cout<<"Нет файла "<<filename;
        cout<<"\n";
        return 0;
    }
 
    while (fin>>bus.number)
    {
        fin.getline(bus.name, cnLenghtName);
        fin>>bus.rout;
        bus.in_road = false;            // При чтении все автобусы находятся в парке.
        begin = add(begin, bus);
    }
    fin.close();
    return begin;
}
 
//--------------------------------- Ввод информации о новом автобусе
Bus read_bus()
{
    Bus bus;
    get_number(bus.number);
    cout<<"Введите фамилию и инициалы водителя:\n";
    cin.get();                          // Нужно чтобы корректно работал следующий оператор. Убирает символ перевода строки.
    cin.getline(bus.name, cnLenghtName);
    rus_in(bus.name);
    for (int i = strlen(bus.name); i < cnLenghtName; i++)   // Добавляем пробелами поле фамилии для однотипности.
        bus.name[i] = ' ';
    bus.name[cnLenghtName - 1] = '\0';
    cout<<"\nВведите номер маршрута: ";
    cin>>bus.rout;
    cout<<"\n";
    return bus;
}
 
//--------------------------------------Запись базы в файл
void write_base(char* filename, Bus* begin)
{
    ofstream fout(filename, ios::out | ios::_Nocreate);
    if (!fout)
    {
        cout<<"Не найден файл "<<filename<<"\n";
    }
 
    while(begin)
    {
        fout<<begin->number<<" "
            <<begin->name<<" "
            <<begin->rout<<endl;    // Для простоты считаем что когда идет вывод в базу, всё автобусы находятся в парке.
        begin = begin->next;
    }
}
Проблема с функциями чтения базы и чтения нового автобуса.
Чтение базы вместо маршрута пишет мусор, и дальше чтение работает неправильно.
Если попытаться добавить автобус в список, указатель на начало обнуляется (почему?).

Вот текст файла для чтения base_in.txt:
(в тексте форматировано пробелами - номера маршрутов выстроены в столбик)
11125 Смирнов А. Л. 5
56278 Сидоров В. Л. 255
58796 Иванов А. Л. 125
21534 Петрович А. Л. 84
36854 Петров А. Л. 125
12457 Никифоров В. В. 47
12658 Недря в. в. 124
12354 Обухов П. П. 35
88546 Крылов К. В. 12
21354 Стоянов В. В. 254
15465 Гаманин С. К. 14
84752 Армянин К. Л. 148

Вот что пишет в выходной файл base_out.txt:

11125 Смирнов А. Л. -858993460

В чём проблема?
Подозреваю что некорректно работает считывание. Исправить не получается.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 16:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru