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

Ввод и вывод в программе

19.12.2021, 10:47. Показов 1351. Ответов 16
Метки c++ (Все метки)

Студворк — интернет-сервис помощи студентам
Есть лабораторная работа, не пойму как сделать ввод и чтение записей.
Пока что написал шаблон(если в нем есть недостатки, прошу сказать). Далее пишу ввод, но не пойму как сделать так, чтобы была систематизация, возможно нужно делать через массив?
В базе должны содержаться сведения о номере рейса, экипаже, типе самолета, дате и времени вылета, а также стоимости авиабилетов (разного класса), база в txt файле.
Пока что код такой, вывод не буду опубликовывать, так как он не рабочий, возможно дадите направление.
Спасибо!
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
#include <iostream>
#include <windows.h>
#include <ctime>
#include <string> // работа со строками
#include <fstream>
#include <tchar.h>
#include <stdio.h>
 
using namespace std;
 
void write()
{
    setlocale(LC_ALL, "Russian");
 
 
}
void load()
{
 
}
 
void del()
{
    
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    int input;
    
    system("cls"); // очищаем экран
    
    cout << " Вы находитесь в общем меню, выберите действие \n";
    cout << "1.Система *Авиакасса* \n";
    cout << "2.Меню разработчика \n";
    cout << "3.О разработчике \n";
    cout << "4.Выход \n";
    cout << ">";
    cin >> input;
    
    switch (input)
    {
    case 1:
        
        break;
 
    case 2:
        system("cls");
        switch (input)
        {
        case 1:
            write();
            break;
        case 2:
            load();
            break;
        case 3:
            del();
            break;
        default:
            main();
        }
        break;
 
    case 3:
        system("cls");
        cout << " Разработал программу \n студент 3 курса 121591 \n Рынденков Алексей \n";
        cout << "Для возвращения в главное меню введите любую клавишу  \n";
        cout << ">";
        cin >> input;
        switch (input)
        {
        default:
            main();
        }
        break;
 
    case 4:
        system("cls");
        printf("Спасибо! \n");
        break;
 
    default:
        main();
    }
 
    return 0;
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.12.2021, 10:47
Ответы с готовыми решениями:

Заменить в программе, переводящую строку в двоичный код, консольный ввод/вывод на файловый ввод/вывод
Добрый день! Помогите, пожалуйста, с программой. Программа считывает строку с клавиатуры и переводит её в двоичный код. затем наоборот...

Одновременный ввод/вывод в программе
Проблема такая: нужно одновременно и выводить и вводить в программу. Т.е. мне надо, чтобы, даже пока программа ожидает ввода от...

Сделать в программе ввод и вывод(матрицы)
Имеется алгоритм для нахождения определителя матрицы взял из первой же ссылки на курсовую работу в яндексе при попытке...

16
19.12.2021, 14:42

Не по теме:

ryndenkov2001, считаете что достаточно написать одно предложение из условия задачи ?

0
0 / 0 / 0
Регистрация: 08.10.2020
Сообщений: 28
20.12.2021, 00:47  [ТС]
Вот полное задание:
Разработать приложение «Авиакасса», содержащий сведения о наличии авиабилетов. В базе должны содержаться сведения о номере рейса, экипаже, типе самолета, дате и времени вылета, а также стоимости авиабилетов (разного класса). При поступлении заявки на билеты программа производит поиск подходящего рейса.
Новый код:
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
#include <iostream>
#include <windows.h>
#include <ctime>
#include <string> // работа со строками
#include <fstream>
#include <tchar.h>
#include <stdio.h>
 
using namespace std;
 
struct kassa
{
    int race;
    char pilot1;
    char pilot2;
    char air;
    char date;
    char time;
    int lite;
    int comfort;
    int pro;
};
 
void readFile()
{
    setlocale(LC_ALL, "Russian");
 
    cout << endl <<  " Загружаем список рейсов \n";
 
    string line;
    ifstream myfile("base.txt");
    if (myfile.is_open())
    {
        while (!myfile.eof())
        {
            getline(myfile, line);
            cout << line << endl;
        }
        myfile.close();
    }
    else cout << "База данных не найдена!";
 
}
 
void search()
{
    setlocale(LC_ALL, "Russian");
 
 
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    
    int input;
 
    system("cls"); // очищаем экран
    
    cout << " Вы находитесь в общем меню, выберите действие \n";
    cout << "1. Система *Авиакасса* \n"; 
    cout << "2. О разработчике \n";
    cout << "3. Выход \n";
    cout << ">";
    cin >> input;
    
    switch (input)
    {
    case 1:
        system("cls");
        cout << " Система *Авиакасса* \n";
        cout << "1. Посмотреть все рейсы \n";
        cout << "2. Найти подходящий рейс \n";
        cout << "3. Вернуться в главное меню \n";
        cout << ">";
        cin >> input;
        switch (input)
        {
        case 1:
            readFile();
            break;
        case 2:
            search();
        case 3:
            main();
        default:
            main();
        }
        break;
 
    case 2:
        system("cls");
        cout << " Разработал программу \n студент 3 курса 121591 \n Рынденков Алексей \n";
        cout << "Для возвращения в главное меню введите любую клавишу  \n";
        cout << ">";
        cin >> input;
        switch (input)
        {
        default:
            main();
        }
        break;
 
    case 3:
        system("cls");
        printf("Спасибо! \n");
        break;
    default:
        main();
    }
 
    return 0;
}
Добавлено через 13 секунд
Yetty, выше
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
20.12.2021, 01:06
Цитата Сообщение от ryndenkov2001 Посмотреть сообщение
В базе должны содержаться сведения о номере рейса, экипаже, типе самолета, дате и времени вылета, а также стоимости авиабилетов (разного класса)
интересная база. а пункт назначения не указан ?
Цитата Сообщение от ryndenkov2001 Посмотреть сообщение
При поступлении заявки на билеты
это Вы как себе представляете ?
0
0 / 0 / 0
Регистрация: 08.10.2020
Сообщений: 28
20.12.2021, 01:14  [ТС]
Да, база без Пунктов назначения, летишь рандомно..
Я написал вывод бд, и через line собираюсь делать поиск.
https://yadi.sk/i/Qm3nTJj-bzZ9NA
Вот пример бд, поиск по параметрам, у нас параметр до 1 пробела всегда номер рейса, параметр 1 пилота до 2 пробела, параметр 2 пилота до 3 пробела и так далее, знаю что нужно дописать код в это место и в качестве параметра передать туда line:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    string line;
    ifstream myfile("base.txt");
    if (myfile.is_open())
    {
        while (!myfile.eof())
        {
            getline(myfile, line);
            Дописать код сюда
            cout << line << endl;
        }
        myfile.close();
    }
    else cout << "База данных не найдена!";
Миниатюры
Ввод и вывод в программе  
0
20.12.2021, 01:21

Не по теме:

ryndenkov2001, подождите с кодом, тем более неправильно написанным. я же спросил Вас в чём заключается поиск, опишите словами

0
0 / 0 / 0
Регистрация: 08.10.2020
Сообщений: 28
20.12.2021, 01:23  [ТС]
Поиск заключается в том, что пользователю дают выбирать по параметрам.
Допустим он хочет билет за 10000, тогда поиск всех билетов за 10000.
Может он хочет билет за 7000, и на 26 число, значит все билеты за такую сумму на 26 число.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
20.12.2021, 01:28
тип самолёта тоже может выбирать ? или поиск только по стоимости и числу
0
0 / 0 / 0
Регистрация: 08.10.2020
Сообщений: 28
20.12.2021, 01:31  [ТС]
Я так понимаю, по условию, выборку я по своим параметрам осуществляю.
У меня тут два варианта развития событий:
1) сделать меню выбора по всем параметрам
2) сделать выборку по основным параметрам: цена. класс. дата. время
Я больше склоняюсь ко второму варианту
Либо если время будет поджимать: сделаю один поиск, на что угодно
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
20.12.2021, 01:59
Лучший ответ Сообщение было отмечено ryndenkov2001 как решение

Решение

давайте я опишу Вам основные действия, а там уже сами добавите что считаете нужным

объявляете переменные по количеству данных, разделённых пробелами (некоторые преподаватели любят чтобы структура была, можно в виде структуры но необязательно)

например в каждой строке файла 4 значения (у Вас их больше), переменная 'c' для стоимости, переменная 'd' для даты

сначала вводите с клавиатуры значения для поиска, например стоимость до limit_price включительно, дата до limit_date включительно ( с датой условно потому что нужна подготовка для сравнения )

C++
1
2
3
4
while (in >> a >> b >> c >> d) // чтение с файла
{
    if(c<=limit_price && d<=limit_date) cout << a << " " << b << " " << c  << " " << d << "\n"; // вывод на печать нужных строк
}
1
0 / 0 / 0
Регистрация: 08.10.2020
Сообщений: 28
20.12.2021, 02:00  [ТС]
Смысл понял, с реализацией проблема, я же считываю файл и выписываю все строки в консоль.
У меня выводится не текст и строки.
Как сделать это прикрепление строк к параметрам?
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
20.12.2021, 02:05
Цитата Сообщение от ryndenkov2001 Посмотреть сообщение
я же считываю файл и выписываю все строки в консоль
Вы читаете построчно, лучше читать по словам
Цитата Сообщение от ryndenkov2001 Посмотреть сообщение
У меня выводится не текст и строки.
Как сделать это прикрепление строк к параметрам?
можно подробнее что Вас интересует ? Вы читаете всю строку:
Цитата Сообщение от Yetty Посмотреть сообщение
while (in >> a >> b >> c >> d) // чтение с файла
и выводите всю строку при выполнении условия:
Цитата Сообщение от Yetty Посмотреть сообщение
if(c<=limit_price && d<=limit_date) cout << a << " " << b << " " << c  << " " << d << "\n";
чтение происходит по словам, чтобы можно было сравнивать

in - название потока чтения, переименуйте myfile на in
0
0 / 0 / 0
Регистрация: 08.10.2020
Сообщений: 28
20.12.2021, 02:14  [ТС]
Я так понял это только выбирает, что нужно вывести, но не выводит?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    int a, b, c, d, e, f, g, k, i, r;
    string line;
    ifstream in("base.txt");
    if (in.is_open())
    {
        while (in >> a >> b >> c >> d >> e >> f >> g >> k >> i >> r) // чтение с файла
        {
            if ( a == 1001) 
                cout << a << " " << b << " " << c << " " << d << "\n"; // вывод на печать нужных строк
        }
    }
    else cout << "База данных не найдена!";
}
И как мне можно обращаться к пользователю для того чтобы он сам указал эти параметры?
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
20.12.2021, 02:42
ryndenkov2001, во-первых в строке не 10 значений, а 11. во-вторых переменные объявите с соответствующим типом (для строк string, для чисел int)
Цитата Сообщение от ryndenkov2001 Посмотреть сообщение
И как мне можно обращаться к пользователю для того чтобы он сам указал эти параметры?
перед циклом чтения
Цитата Сообщение от Yetty Посмотреть сообщение
вводите с клавиатуры значения
C++
1
2
int limit_price;
cout << "price: "; cin >> limit_price;
Добавлено через 2 минуты
Цитата Сообщение от ryndenkov2001 Посмотреть сообщение
но не выводит?
я опять не понимаю о чём Вы. оператор cout выводит данные на печать. на вывод тоже поставьте 11 значений

Добавлено через 7 минут
переменным дайте соответствующие названия, например init1 (инициалы первого пилота), date (дата), price и т.д.
1
0 / 0 / 0
Регистрация: 08.10.2020
Сообщений: 28
20.12.2021, 04:24  [ТС]
Спасибо большое! Все работает! Только проблема с объявлением переменных, не пойму что использовать для фамилий, времени и дат.
И еще, когда с txt файле база написана с первой строки, она не используется, стоит первую строку оставить пустую и начать запись со второй, все хорошо.
Код работающей программы прикреплю, когда доделаю выложу полную версию.
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
#include <iostream>
#include <windows.h>
#include <ctime>
#include <string> // работа со строками
#include <fstream>
#include <tchar.h>
#include <stdio.h>
 
using namespace std;
 
void readFile()
{
    cout << endl <<  " Загружаем список рейсов \n";
 
    int race;
    string init1;
    string fam1;
    string init2;
    string fam2;
    string air;
    string date;
    string time;
    int price1;
    int price2;
    int price3;
 
    string line;
    ifstream in("base.txt");
    if (in.is_open())
    {
        while (in >> race >> init1 >> fam1 >> init2 >> fam2 >> air >> date >> time >> price1 >> price2 >> price3) // чтение с файла
        {
            if (race) 
                cout << race << " " << init1 << " " << fam1 << " " << init2 << " " << fam2 << " " << air << " " << date << " " << time << " " << price1 << " " << price2 << " " << price3 << " " << "\n"; // вывод на печать нужных строк
        }
    }
    else 
        cout << "База данных не найдена!";
}
 
void search()
{
    cout << endl << " Загружаем список рейсов \n";
 
    int race;
    string init1;
    string fam1;
    string init2;
    string fam2;
    string air;
    string date;
    string time;
    int price1;
    int price2;
    int price3;
 
    string line;
    ifstream in("base.txt");
    if (in.is_open())
    {
        while (!in.eof())
        {
            getline(in, line);
            int o;
            cout << "Введите нужную цену перелета: "; cin >> o;
            while (in >> race >> init1 >> fam1 >> init2 >> fam2 >> air >> date >> time >> price1 >> price2 >> price3) // чтение с файла
            {
                if (price2 == o)
                    cout << race << " " << init1 << " " << fam1 << " " << init2 << " " << fam2 << " " << air << " " << date << " " << time << " " << price1<< " " << price2 << " " << price3 << " " << "\n"; // вывод на печать нужных строк
            }
            
        }
        in.close();
    }
    else cout << "База данных не найдена!";
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    
    int input;
 
    system("cls"); // очищаем экран
    
    cout << " Вы находитесь в общем меню, выберите действие \n";
    cout << "1. Система *Авиакасса* \n"; 
    cout << "2. О разработчике \n";
    cout << "3. Выход \n";
    cout << ">";
    cin >> input;
    
    switch (input)
    {
    case 1:
        system("cls");
        cout << " Система *Авиакасса* \n";
        cout << "1. Посмотреть все рейсы \n";
        cout << "2. Найти подходящий рейс \n";
        cout << "3. Вернуться в главное меню \n";
        cout << ">";
        cin >> input;
        switch (input)
        {
        case 1:
            readFile();
            break;
        case 2:
            search();
            break;
        case 3:
            main();
        default:
            main();
        }
        break;
 
    case 2:
        system("cls");
        cout << " Разработал программу \n студент 3 курса 121591 \n Рынденков Алексей \n";
        cout << "Для возвращения в главное меню введите любую клавишу  \n";
        cout << ">";
        cin >> input;
        switch (input)
        {
        default:
            main();
        }
        break;
 
    case 3:
        system("cls");
        printf("Спасибо! \n");
        break;
    default:
        main();
    }
 
    return 0;
}
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
20.12.2021, 13:10
уберите
Цитата Сообщение от ryndenkov2001 Посмотреть сообщение
while (!in.eof())
        {
            getline(in, line);
чтение только по словам

уберите
Цитата Сообщение от ryndenkov2001 Посмотреть сообщение
if (race)
Цитата Сообщение от ryndenkov2001 Посмотреть сообщение
string line;
эта строки не нужны

Цитата Сообщение от ryndenkov2001 Посмотреть сообщение
когда с txt файле база написана с первой строки, она не используется
после внесения исправлений, указанных выше этой проблемы не будет

Цитата Сообщение от ryndenkov2001 Посмотреть сообщение
>> init1 >> fam1 >>
сначала идёт фамилия, потом инициалы. поменяйте местами везде, в том числе при объявлении

int race; замените тип на string (в номере рейса часто содержатся буквы)

time зарезервированное слово, замените на _time

после строки 35 напишите in.close();

cin >> o; не используйте переменную 'o' она похожа на ноль и затрудняет чтение кода, я же показывал limit_price (граничная цена)

не очень смотрятся 2 столбца с объявлением переменных - запишите объявление как две строки или переходите на структуру
1
0 / 0 / 0
Регистрация: 08.10.2020
Сообщений: 28
21.12.2021, 04:42  [ТС]
Спасибо большое за помощь! Буду доделывать!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.12.2021, 04:42
Помогаю со студенческими работами здесь

мне нужно организовать ввод-вывод в этой программе
Дано число R и массив размера N. Найти два различных элемента массива, сумма которых наиболее близка к числу R, и вывести эти эле-менты в...

ввод/вывод в программе
Здравствуйте. Я новичек в джава. Написала програмку. Но вот неувязочка получается. Вот прога public static void main(String args) ...

Типизированные файлы - добавить к программе ввод/вывод
Помогите пжлста добавить к готовой программе следующее условие: вот готовое задание 4: uses crt; type TArray = array of...

Ошибка в программе, некорректный ввод/вывод. Работа со списками
Задание: прочитать из стандартного потока ввода список, который содержит разные элементы, в том числе списки нужно пройти по исходному...

Невверный ввод/вывод в файл в программе нахождения студентов-хорошистов
Здравствуйте! Люди помогите пожалуйста, нужно сделать курсовой по программированию на с++ Создать файл, содержащий сведения о сдаче...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru