С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 20.12.2020
Сообщений: 123
1

Доработка программы

04.06.2021, 20:48. Показов 340. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как можно сделать сортировку по номеру длине правильной(т.е не пономеру как делает прога ,а именно по длине)?
Как сделать вывод данных на консоль или на другой файл?
Как сделать поиск данных по номеру поезда правильным?

Вот текст задания:
Разработать информационно справочную систему для работы с базой данных. Входные данные:
1) База данных состоит из записей. (Номер поезда, Пункт назначения, длина маршрута проезда. В отдельном файле справочная информация о Пунктах назначения)
Обеспечить:
- введение данных в оперативную память в двунаправленный список:
а) из текстового файла;
б) с клавиатуры;
- просмотр содержимого базы данных;
- редактирование базы данных:
а) удаление записи;
б) добавление записи;
- выведение данных:
а) в текстовый файл;
б) на экран;
- поиск данных по номеру поезда;
- сортировка данных по длине маршрута;
- получение справочной информации про пункт назначения;












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
#include <list>
#include <iostream>
#include <string>
#include<fstream>
using namespace std;
struct Sklad {
    int number;
    string punkt;
        int dlina;
};
 
void Add(list<Sklad> skladList, list<Sklad>::iterator ptr);
void Remove(list<Sklad> skladList, list<Sklad>::iterator ptr);
void Find(list<Sklad> skladList, list<Sklad>::iterator ptr);
void Save(list<Sklad> skladList, list<Sklad>::iterator ptr);
void Print(list<Sklad> skladList, list<Sklad>::iterator ptr);
void Sort(list<Sklad> skladList, list<Sklad>::iterator ptr);
void Exit(list<Sklad> skladList, list<Sklad>::iterator ptr);
void menu(list<Sklad> skladList, list<Sklad>::iterator ptr);
 
 
void Add(list<Sklad> skladList, list<Sklad>::iterator ptr) {
    Sklad newSklad;
    cout << "Ведите номер поезда" << endl;
    cin >> newSklad.number;
    cout << "Введите пункт назначения" << endl;
    cin >> newSklad.punkt;
    cout << "Введите длину маршрута" << endl;
    cin >> newSklad.dlina;
    skladList.push_back(newSklad);
    menu(skladList, ptr);
}
 
void Remove(list<Sklad> skladList, list<Sklad>::iterator ptr) {
    int n;
    cout << "Введите номер поезда для удаления";
    cin >> n;
    ptr = skladList.begin();
    for (int i = 0; i < skladList.size() - 1; i++) {
        if (ptr->number == n) {
            ptr = skladList.erase(ptr);
            ptr--;
        }
        ptr++;
    }
    if (ptr->number == n) {
        skladList.pop_back();
    }
    menu(skladList, ptr);
 
}
 
void Find(list<Sklad> skladList, list<Sklad>::iterator ptr) {
        int n;
    cout << "Введите номер поезда для поиска";
    cin >> n;
    ptr = skladList.begin();
    for (int i = 0; i < skladList.size() - 1; i++) {
        if (ptr->number == n) {
            ptr = skladList.erase(ptr);
            ptr--;
        }
        ptr++;
    }
    if (ptr->number == n) {
        skladList.pop_back();
    }
    menu(skladList, ptr);
}
 
void Save(list<Sklad> skladList, list<Sklad>::iterator ptr) {
    ofstream fileSclad("sklad.txt");//после отладки программы меняем на sklad.txt
    if (!fileSclad) cout << "Склад открыть невозможно" << endl;
    string str;
    for (ptr = skladList.begin(); ptr != skladList.end(); ptr++) {
        str = to_string(ptr->number) + ";" + ptr->punkt + ";"  + to_string(ptr->dlina) ;
        fileSclad << str << endl;
    }
    menu(skladList, ptr);
}
 
void Sort(list<Sklad> skladList, list<Sklad>::iterator ptr) {
    int n;
    cout << "Выберите направление сортировки" << endl;
    cout << "По возрастанию -- 1" << endl;
    cout << "По убыванию --2 " << endl;
    cin >> n;
    if (n == 2) {
        skladList.sort([](const Sklad& a, const Sklad& b) {return a.dlina > b.dlina; });
    }
    else
    {
        skladList.sort([](const Sklad& a, const Sklad& b) {return a.dlina < b.dlina; });
    }
    menu(skladList, ptr);
}
 
void Print(list<Sklad> skladList, list<Sklad>::iterator ptr) {
    for (ptr = skladList.begin(); ptr != skladList.end(); ptr++) {
        cout << ptr->number << " " << ptr->punkt << " " <<  ptr->dlina << " " << endl;
}
    menu(skladList, ptr);
}
 
void Exit(list<Sklad> skladList, list<Sklad>::iterator ptr) {
    string ans;
    cout << "Завершить работу? y/n" << endl;
    cin >> ans;
    if (ans == "y")
    {
        cout << "Сохранить изменения перед выходом y/n" << endl;
        cin >> ans;
        if (ans == "y")
        {
            //фрагмент функции Save           
            ofstream fileSclad("sklad.txt");
            if (!fileSclad) cout << " файл открыть невозможно!" << endl;
            string str;
            for (ptr = skladList.begin(); ptr != skladList.end(); ptr++) {
                str += to_string(ptr->number) + ";" + ptr->punkt + ";" + to_string(ptr->dlina);
                fileSclad << str << endl;
                str = "";
            }
            exit(2);
        }
        else exit(2);
    }
    else menu(skladList, ptr);
 
}
 
void menu(list<Sklad> skladList, list<Sklad>::iterator ptr) {
    cout << "Выберите команду" << endl;
    cout << "Добавить запись -- 1 " << endl;
    cout << "Удалить запись -- 2 " << endl;
    cout << "Поиск по номеру поезда-- 3 " << endl;
    cout << "Сортировка по длине маршрута -- 4 " << endl;
    cout << "сохранение изменений -- 5 " << endl;
    cout << "вывод данных на экран -- 6 " << endl;
    cout << "завершить работу -- 7 " << endl;
    int punct;
    cin >> punct;
    switch (punct)
    {
    case 1:
        Add(skladList, ptr);
        break;
    case 2:
        Remove(skladList, ptr);
        break;
    case 3:
        Find(skladList, ptr);
        break;
    case 4:
        Sort(skladList, ptr);
        break;
    case 5:
        Save(skladList, ptr);
        break;
    case 6:
        Print(skladList, ptr);
        break;
    case 7:
        Exit(skladList, ptr);
        break;
    default:
        cout << "Введите число от 1-5" << endl;
        menu(skladList, ptr);
        break;
    }
}
 
int main(){
    setlocale(LC_ALL, "Rus");
    list<Sklad>skladList;
    list<Sklad>::iterator ptr;
    ifstream fileSclad("sklad.txt");
    string skladCortej;
    int endVal[4], n=0;
    while (getline(fileSclad, skladCortej))
    {
        for (int i = 0; i < 4; i++) {
            n = skladCortej.find(";", n);
            endVal[i] = n;
            n++;
        }
        n = 0;
        Sklad infoSklad;
        infoSklad.number = stoi(skladCortej.substr(0, endVal[0]));
        infoSklad.punkt = skladCortej.substr(endVal[0] + 1, endVal[1] - endVal[0] - 1);
            infoSklad.dlina = stoi(skladCortej.substr(endVal[2] + 1, endVal[3] - endVal[2] - 1));
                skladList.push_back(infoSklad);
        //cout << infoSklad.number << ";" << infoSklad.adress;
    }
    menu(skladList, ptr);
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.06.2021, 20:48
Ответы с готовыми решениями:

Доработка программы
Я написал программу, но она никак не хочет работать. Суть такая. Дана целочисленная прямоугольная...

Доработка программы с++
Доброй ночи! обращаюсь к вам еще раз. Указания к программе: Вместо линейного связного списка...

Доработка программы с++
Добрый день уважаемые форумчане! я новорег, поэтому прошу не судить строго. Собственно сама задача:...

Доработка программы на С++
Я не могу сообразить, пожалуйстааа помогите(( Есть программа &quot;система учета заявок&quot; Программа...

0
04.06.2021, 20:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.06.2021, 20:48
Помогаю со студенческими работами здесь

Маленькая доработка программы
Требуется написать программу для вычисления интеграла методом левых, правых и средних...

Требуется доработка программы.
Программа упорядочивает матрицу по возрастанию одинаковых эл-в в строке. Требуется доработка: ...

Доработка программы: вставка switch
Помогите доработать программу вставив в неё switch #include &lt;iostream&gt; #include &lt;cmath&gt; using...

Доработка программы для новичка
Господа форумчане, прошу у вас помощи, т.к. не понимаю суть задания. Вот собственно задание:...

Доработка программы для работы с классами
прикрепил проект, помогите плз доработать программу, там пару ошибок связанные с классами + нужно...

Доработка программы, включающей в себя базу данных
#include &lt;iostream&gt; #include &lt;stdlib.h&gt; using namespace std; #define MAX_SIZE 100 #define...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru