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

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

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

Author24 — интернет-сервис помощи студентам
Есть лабораторная работа, не пойму как сделать ввод и чтение записей.
Пока что написал шаблон(если в нем есть недостатки, прошу сказать). Далее пишу ввод, но не пойму как сделать так, чтобы была систематизация, возможно нужно делать через массив?
В базе должны содержаться сведения о номере рейса, экипаже, типе самолета, дате и времени вылета, а также стоимости авиабилетов (разного класса), база в 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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.12.2021, 10:47
Ответы с готовыми решениями:

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

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

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

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

ввод/вывод в программе
Здравствуйте. Я новичек в джава. Написала програмку. Но вот неувязочка получается. Вот прога ...

16
Yetty
19.12.2021, 14:42
  #2

Не по теме:

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

0
0 / 0 / 0
Регистрация: 08.10.2020
Сообщений: 28
20.12.2021, 00:47  [ТС] 3
Вот полное задание:
Разработать приложение «Авиакасса», содержащий сведения о наличии авиабилетов. В базе должны содержаться сведения о номере рейса, экипаже, типе самолета, дате и времени вылета, а также стоимости авиабилетов (разного класса). При поступлении заявки на билеты программа производит поиск подходящего рейса.
Новый код:
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
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
20.12.2021, 01:06 4
Цитата Сообщение от ryndenkov2001 Посмотреть сообщение
В базе должны содержаться сведения о номере рейса, экипаже, типе самолета, дате и времени вылета, а также стоимости авиабилетов (разного класса)
интересная база. а пункт назначения не указан ?
Цитата Сообщение от ryndenkov2001 Посмотреть сообщение
При поступлении заявки на билеты
это Вы как себе представляете ?
0
0 / 0 / 0
Регистрация: 08.10.2020
Сообщений: 28
20.12.2021, 01:14  [ТС] 5
Да, база без Пунктов назначения, летишь рандомно..
Я написал вывод бд, и через 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
Yetty
20.12.2021, 01:21
  #6

Не по теме:

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

0
0 / 0 / 0
Регистрация: 08.10.2020
Сообщений: 28
20.12.2021, 01:23  [ТС] 7
Поиск заключается в том, что пользователю дают выбирать по параметрам.
Допустим он хочет билет за 10000, тогда поиск всех билетов за 10000.
Может он хочет билет за 7000, и на 26 число, значит все билеты за такую сумму на 26 число.
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
20.12.2021, 01:28 8
тип самолёта тоже может выбирать ? или поиск только по стоимости и числу
0
0 / 0 / 0
Регистрация: 08.10.2020
Сообщений: 28
20.12.2021, 01:31  [ТС] 9
Я так понимаю, по условию, выборку я по своим параметрам осуществляю.
У меня тут два варианта развития событий:
1) сделать меню выбора по всем параметрам
2) сделать выборку по основным параметрам: цена. класс. дата. время
Я больше склоняюсь ко второму варианту
Либо если время будет поджимать: сделаю один поиск, на что угодно
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
20.12.2021, 01:59 10
Лучший ответ Сообщение было отмечено 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  [ТС] 11
Смысл понял, с реализацией проблема, я же считываю файл и выписываю все строки в консоль.
У меня выводится не текст и строки.
Как сделать это прикрепление строк к параметрам?
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
20.12.2021, 02:05 12
Цитата Сообщение от 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  [ТС] 13
Я так понял это только выбирает, что нужно вывести, но не выводит?
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
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
20.12.2021, 02:42 14
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  [ТС] 15
Спасибо большое! Все работает! Только проблема с объявлением переменных, не пойму что использовать для фамилий, времени и дат.
И еще, когда с 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
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
20.12.2021, 13:10 16
уберите
Цитата Сообщение от 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  [ТС] 17
Спасибо большое за помощь! Буду доделывать!
0
21.12.2021, 04:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.12.2021, 04:42
Помогаю со студенческими работами здесь

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

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

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

Дописать к программе ввод с клавиатуры и вывод полученного результата на экран
Помогите дописать к этой программе ввод с клавиатуры и вывод результата на экран ;назначение...

Ввод и вывод в программе символа конца строки (доллара), tasm
Помогите пожалуйста отредактировать программу, чтобы она корректно работала при вводе и выводе...


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

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