Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.62/29: Рейтинг темы: голосов - 29, средняя оценка - 4.62
0 / 0 / 1
Регистрация: 10.02.2020
Сообщений: 41

Чтение из файла в структуру

06.03.2021, 00:42. Показов 6566. Ответов 40

Студворк — интернет-сервис помощи студентам
Здравствуйте. Не могу разобраться как правильно считать данные из файла. Запись из структуры в файл работает хорошо, а чтение только наполовину и уходит в бесконечный цикл.
Помогите пожалуйста и заранее спасибо
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
#include <iostream>
#include <fstream>
#include <string>
#include <Windows.h>
 
using namespace std;
 
struct Employee
{
    int number;
    string FIO;     // ФИО
    int Trafic;     // оплата за день
    int KolWork;    // Количество отработанных часов за месяц
    int salary;     // оклад
};
 
Employee e;
void GetData(Employee e);
void Print(Employee e);
 
 
 
int main()
{
    setlocale(LC_ALL, "RUS");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    
    int o;
 
    cout << "1 - Прочитать файл" << endl;
    cout << "2 - Продолжить записи данных в конец файла" << endl;
    cout << "3 - Перезаписать данные в файл" << endl;
    cin >> o;
    
    switch (o)
    {
    case 1:  Print(e);
        break;
    case 2: 
        GetData(e);
        break;
    default:
        cout << "Введите число от 1 - 2";
    }
 
 
    system("pause");
    return 0;
}
 
void GetData(Employee e)
{
    int N;
    cout << "Сколько сотрудников вы хотите добавить? " << endl;
    cin >> N;
    ofstream fin;
    fin.open("input.txt", ios::app);
    if (!fin.is_open())
    {
        cout << "Файл не открыт" << endl;
    }
    else
    {
        for (int i = 0; i < N; i++)
        {
            cin.ignore();
            cout << "Запись номер : " << i << endl;  e.number = i+1;
            cout << endl << "Введите ФИО сотрудника: "; getline(cin, e.FIO);
            cout << endl << "Размер почасовой оплате : "; cin >> e.Trafic;
            cout << endl << "Количество отработанных дней : "; cin >> e.KolWork;
 
            e.salary = e.Trafic * e.KolWork;
 
            
 
            fin << e.number << "\n"
                << e.FIO << "\n"
                << e.Trafic << " \n "
                << e.KolWork << " \n"
                << e.salary << " \n ";
 
            fin.close();
        }
    }
}
 
void Print(Employee e)
{
    
    ifstream fout("input.txt", ios::in); //открыли файл для чтения
 
    if (!fout.is_open())
    {
        cout << "Файл не открыт" << endl;
    }
    else
    {
        while (!fout.eof())
        {
 
            fout >> e.number;
            fout >> e.FIO;
            fout >> e.Trafic;
            fout >> e.KolWork;
            fout >> e.salary;
 
            cout << "Запись номер : " << e.number << endl;
            cout << "Введите ФИО сотрудника: " << e.FIO << endl;
            cout << "Размер почасовой оплате : " << e.Trafic << endl;
            cout << "Количество отработанных дней за месяц: " << e.KolWork << endl;
            cout << "Заработная плата за месяц" << e.salary << endl;
 
            
            
        }
    }
    
 
    
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.03.2021, 00:42
Ответы с готовыми решениями:

Чтение файла в структуру
Здравствуйте, не получается прочитать файл и компоненты записать в структуру. Допустим, содержание файла: 4 6 Text1 2 Text2 ...

Чтение из файла в структуру
Здравствуйте, имеется функция чтения из файла в структуру и последующего вывода на экран: void ReadFileFromStrucure (int...

Чтение файла в структуру
Всем привет! Есть бинарный файл test.txt, в нём заголовок, который я пытаюсь прочитать в структуру, но что-то не идёт... Содержание...

40
0 / 0 / 1
Регистрация: 10.02.2020
Сообщений: 41
06.03.2021, 21:18  [ТС]
Студворк — интернет-сервис помощи студентам
Ну вот я отредактировал его

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
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
#include <cstdlib>
#include <Windows.h>
 
using namespace std;
 
struct Employee
{
    string FIO;     // ФИО
    double Trafic;  // Почасовая оплата
    double hours;   // Количество отработанных часов за месяц
};
 
 
void GetData(Employee e);
void Print(Employee e);
 
 
int main()
{
    setlocale(LC_ALL, "RUS");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    Employee e;
    
    int o;
    cout << endl;
    cout << "1 - Прочитать файл" << endl;
    cout << "2 - Записать данные в файл" << endl;
    cout << "Введите номер "; cin >> o;
    cout << endl;
 
    switch (o)
    {
    case 1:  Print(e);
        break;
    case 2: GetData(e);
        break;
    default:
        cout << "Введите число 1 - 2" << endl;
    }
 
    system("pause");
    return 0;
}
 
void GetData(Employee e)
{
    int N;
    cout << "Количество сотрудников? " << endl;
    cin >> N;
    ofstream out;
    
        out.open("data.txt", ios::trunc);
 
    if (!out.is_open())
    {
        cout << "Файл не открыт" << endl;
    }
    else
    {
        for (int i = 0; i < N; i++)
        {
            cin.ignore();
            cout << endl << "Сотрудник " << i+1;
            cout << endl << "Введите ФИО сотрудника: "; getline(cin, e.FIO);
            cout << endl << "Размер почасовой оплате : "; cin >> e.Trafic;
            cout << endl << "Количество отработанных часов : "; cin >> e.hours;
 
            out << e.FIO << " " << e.Trafic << " " << e.hours << "\n";
        }
        cout << "Файл записан " << endl;
    }
    out.close();
 
}
 
void Print(Employee e)
{
    string surname, name, thname;
    double s;
    string str;
    ifstream in("data.txt", ios::in); 
    ofstream result("result.txt", ios::trunc);
    
    
    cout << "\t" << "ФИО сотрудника     " << "\t" << "Зарплата за месяц" << "\n";
    cout << "--------------------------------------------------\n";
 
 
    while (in >> surname >> name >> thname >> e.Trafic >> e.hours)  
    {
        s = e.Trafic * e.hours;
        cout << surname << " " << name << " " << thname <<"     "<< "\t" <<  s << "\n";
        
        result << surname << " " << name << " " << thname << " " << s << "\n";
    }
        
    result.close();
    in.close();
}
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
06.03.2021, 21:21
Цитата Сообщение от novicheks Посмотреть сообщение
Ну вот я отредактировал его
прочитайте ещё раз мой предыдущий пост
0
0 / 0 / 1
Регистрация: 10.02.2020
Сообщений: 41
06.03.2021, 21:37  [ТС]
Цитата Сообщение от Yetty Посмотреть сообщение
при таком вводе (без массива)
Как это?
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
06.03.2021, 22:08
novicheks, имел ввиду что в этой программе не используется массив структур
Цитата Сообщение от novicheks Посмотреть сообщение
ofstream out;
out.open("data.txt", ios::trunc);
C++
1
ofstream out("data.txt");
Цитата Сообщение от novicheks Посмотреть сообщение
ifstream in("data.txt", ios::in);
режим ios::in для потока чтения ifstream записывать излишне

уберите строки:
Цитата Сообщение от novicheks Посмотреть сообщение
double s;
    string str;
в функции записи GetData должна быть только запись:
Цитата Сообщение от Yetty Посмотреть сообщение
ввод N перенесите в main и передавайте в функцию
переименуйте название потока result на out1 и добавьте проверку на успешное открытие:
я пишу так (просто не хочу ошибиться) - сначала успех, потом неуспех (у Вас наоборот)
C++
1
2
3
4
5
if(in.is_open() && out1.is_open())
{
   ...
}
else cout << "Unable to open file\n";
Добавлено через 8 минут
здесь будет логично поменять местами
Цитата Сообщение от novicheks Посмотреть сообщение
cout << "1 - Прочитать файл" << endl;
    cout << "2 - Записать данные в файл" << endl;
0
0 / 0 / 1
Регистрация: 10.02.2020
Сообщений: 41
06.03.2021, 22:14  [ТС]
Цитата Сообщение от Yetty Посмотреть сообщение
режим ios::in для потока чтения ifstream записывать излишне
Так то указание режима для каждого излишне, если я не ошибаюсь по умолчанию для ofstream идёт ios::trunc
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
06.03.2021, 22:16
novicheks, пишите без режимов, если в условии не оговорены проверки
меню
C++
1
2
cout << "1 - Записать данные в файл data.txt\n";
cout << "2 - Вывести на печать и в результирующий файл ФИО и зарплату\n";
0
0 / 0 / 1
Регистрация: 10.02.2020
Сообщений: 41
07.03.2021, 00:05  [ТС]
Цитата Сообщение от Yetty Посмотреть сообщение
Вывести на печать и в результирующий файл ФИО и зарплату
Да надо пользователю сказать формируется такой файл, а то написали и для кого

Добавлено через 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
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
#include <Windows.h>
 
using namespace std;
 
struct Employee
{
    string FIO;     // ФИО
    double Trafic;  // Почасовая оплата
    double hours;   // Количество отработанных часов за месяц
};
 
 
void GetData(Employee e, int N);
void Print(Employee e);
 
 
int main()
{
    setlocale(LC_ALL, "RUS");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    Employee e;
    
    int o, N;
    cout << endl;
    cout << "1 - Записать данные в файл" << endl;
    cout << "2 - Вывести на печать и в результирующий файл ФИО и зарплату" << endl;
    cout << "Введите номер "; cin >> o;
    cout << endl;
 
    switch (o)
    {
    case 1: cout << "Количество сотрудников? " << endl;
        cin >> N;
        GetData(e, N);
        break;
    case 2:  Print(e);
        break;
    default:
        cout << "Введите число 1 - 2" << endl;
    }
 
    system("pause");
    return 0;
}
 
 
 
void GetData(Employee e, int N)
{
    ofstream out;
    
        out.open("data.txt", ios::trunc);
 
    if (!out.is_open())
    {
        cout << "Файл не открыт" << endl;
    }
    else
    {
        for (int i = 0; i < N; i++)
        {
            cin.ignore();
            cout << endl << "Сотрудник " << i+1;
            cout << endl << "Введите ФИО сотрудника: "; getline(cin, e.FIO);
            cout << endl << "Размер почасовой оплате : "; cin >> e.Trafic;
            cout << endl << "Количество отработанных часов : "; cin >> e.hours;
 
            out << e.FIO << " " << e.Trafic << " " << e.hours << "\n";
        }
        cout << "Файл записан " << endl;
    }
    out.close();
}
 
void Print(Employee e)
{
    string surname, name, thname;
    ifstream in("data.txt"); 
    ofstream out1("result.txt", ios::trunc);
    
    if (in.is_open() && out1.is_open())
    {
        cout << "\t" << "ФИО сотрудника     " << "\t" << "Зарплата за месяц" << "\n";
        cout << "--------------------------------------------------\n";
 
 
        while (in >> surname >> name >> thname >> e.Trafic >> e.hours)
        {
            double s = e.Trafic * e.hours;
            cout << surname << " " << name << " " << thname << "       " << "\t" << s << "\n";
 
            out1 << surname << " " << name << " " << thname << " " << s << "\n";
        }
 
        out1.close();
        in.close();
    }
    else cout << "Файл не удалось открыть\n";
}
Добавлено через 1 час 21 минуту
Я обнаружил мальную ошибку
Если в поле ФИО ввести 2 слова то считаться будет неправильно и я решил разделить ФИО на отдельные переменные, чтобы как то это решить итого исходный код приложения имеет следующий вид:
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
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
#include <Windows.h>
 
using namespace std;
 
struct Employee
{
    string surname; //Фамилия
    string name;    // Имя
    string thname;  // Отчество
    double Trafic;  // Почасовая оплата
    double hours;   // Количество отработанных часов за месяц
};
 
 
void GetData(Employee e, int N);
void Print(Employee e);
 
 
int main()
{
    setlocale(LC_ALL, "RUS");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    Employee e;
    
    int o, N;
    cout << endl;
    cout << "1 - Записать данные в файл" << endl;
    cout << "2 - Вывести на печать и в результирующий файл ФИО и зарплату" << endl;
    cout << "Введите номер "; cin >> o;
    cout << endl;
 
    switch (o)
    {
    case 1: cout << "Количество сотрудников? " << endl;
        cin >> N;
        GetData(e, N);
        break;
    case 2:  Print(e);
        break;
    default:
        cout << "Введите число 1 - 2" << endl;
    }
 
    system("pause");
    return 0;
}
 
 
 
void GetData(Employee e, int N)
{
    ofstream out;
    
        out.open("data.txt", ios::trunc);
 
    if (!out.is_open())
    {
        cout << "Файл не открыт" << endl;
    }
    else
    {
        for (int i = 0; i < N; i++)
        {
            cin.ignore();
            cout << endl << "Сотрудник " << i+1;
            cout << endl << "Фамилия: "; getline(cin, e.surname);
            cout << endl << "Имя: "; getline(cin, e.name);
            cout << endl << "Отчество: "; getline(cin, e.thname);
            cout << endl << "Размер почасовой оплате : "; cin >> e.Trafic;
            cout << endl << "Количество отработанных часов : "; cin >> e.hours;
 
            out << e.surname << " " << e.name << " " << e.thname << " " << e.Trafic << " " << e.hours << "\n";
        }
        cout << "Файл записан " << endl;
    }
    out.close();
}
 
void Print(Employee e)
{
    ifstream in("data.txt"); 
    ofstream out1("result.txt", ios::trunc);
    
    if (in.is_open() && out1.is_open())
    {
        cout << "\t" << "ФИО сотрудника     " << "\t" << "Зарплата за месяц" << "\n";
        cout << "--------------------------------------------------\n";
 
 
        while (in >> e.surname >> e.name >> e.thname >> e.Trafic >> e.hours)
        {
            double s = e.Trafic * e.hours;
            cout << e.surname << " " << e.name << " " << e.thname << "      " << "\t" << s << "\n";
 
            out1 << e.surname << " " << e.name << " " << e.thname << " " << s << "\n";
        }
 
        out1.close();
        in.close();
    }
    else cout << "Файл не удалось открыть\n";
}
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
07.03.2021, 01:44
Цитата Сообщение от novicheks Посмотреть сообщение
Я обнаружил мальную ошибку
это не ошибка, просто программа не рассчитана на неправильный ввод. но решать Вам. тогда ввод через getline не нужен, вводите через cin и уберите cin.ignore()

Trafic напишите с маленькой буквы

ещё раз говорю Вам замените
Цитата Сообщение от novicheks Посмотреть сообщение
ofstream out;
out.open("data.txt", ios::trunc);
на
C++
1
ofstream out("data.txt");
цикл лучше с 1 до N - лишняя операция i+1 ни к чему
C++
1
2
3
for (int i = 1; i <= N; i++)
{   
    cout << "Сотрудник " << i << ":\n";
проверку на успешность открытия сделайте однотипную в каждой функции

вот с вводом N я похоже ошибся - некрасиво получилось в коде, верните назад в функцию

добавьте пустую строку после строки 27

Добавлено через 25 минут
вроде раньше с меню у Вас получше было, нужно чтобы после ввода данных программа предложила вывести на печать

Добавлено через 9 минут
посмотрите такой вариант:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int k;
char ch;
do
{
    cout << "1 - Записать данные в файл data.txt\n";
    cout << "2 - Вывести на печать и в результирующий файл ФИО и зарплату\n";
    cin >> k; // не используйте переменную 'o' она похожа на ноль и затрудняет чтение кода
 
    if(k==1) GetData(e);
    else if(k==2) Print(e);
    
cout << "Продолжить? (Y - YES) "; cin >> ch;
}     
while (ch=='Y' || ch=='y');
0
0 / 0 / 1
Регистрация: 10.02.2020
Сообщений: 41
07.03.2021, 12:05  [ТС]
Цитата Сообщение от Yetty Посмотреть сообщение
if(k==1) GetData(e);
А как в программе будет вводится Количество сотрудников, тогда нужно так делать?
C++
1
2
3
4
5
6
7
                if (k == 1) 
        {
            cout << "Количество сотрудников? " << endl; cin >> N;
            GetData(e, N);
        }
        else if (k == 2) Print(e);
        else cout << "Введите число 1 или 2" << endl;
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
07.03.2021, 13:26
Цитата Сообщение от novicheks Посмотреть сообщение
тогда нужно так делать?
что мешает проверить ?

я вот что подумал - в условии поля перечисляются через запятую, т.е. должно быть 3 поля - несоответствие заметно сразу, т.к. структура идёт первой. посмотрите код в теме:
"Если такого нет, выдать на дисплей сообщение" (работа со структурами, некорректный вывод)
и попробуйте реализовать подобное в своём варианте, только у Вас будет поиск первой цифры. определение цифра это или нет - функция isdigit (для её работы подключите #include <cctype>). если реализуете, это решит вопрос неправильного ввода.
0
0 / 0 / 1
Регистрация: 10.02.2020
Сообщений: 41
07.03.2021, 13:31  [ТС]
Хорошо сейчас буду делать
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
07.03.2021, 13:46
кое-что не учёл, isdigit не подойдёт, используйте функцию find_first_of()

Добавлено через 11 минут
хотя нет, не заморачивайтесь - это само по себе усложнит код + ещё строку с двумя числами нужно будет разрезать и переводить строковые значения в числа. лучше сделать проверку введённой строки на количество пробелов и если это не 2 повторить ввод.
0
0 / 0 / 1
Регистрация: 10.02.2020
Сообщений: 41
07.03.2021, 13:48  [ТС]
Понял
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
07.03.2021, 13:56
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
 
int main()
{
    int k;
    string s;
    
    do
    {        
        cout << "Enter fio:\n";
        getline(cin, s);
        k=count(s.begin(),s.end(), ' ');
        if(k!=2) cout << "Repeat please...\n";
    }
    while(k!=2);
    
    cout << "GOOD: " << s << "\n";
    
    return 0;
}
0
0 / 0 / 1
Регистрация: 10.02.2020
Сообщений: 41
07.03.2021, 15:24  [ТС]
Yetty, Спасибо за предложенную проверку, я изменил код и вот
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
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
#include <Windows.h>
 
using namespace std;
 
struct Employee
{
    string FIO;  // Отчество
    double trafic;  // Почасовая оплата
    double hours;   // Количество отработанных часов за месяц
};
 
 
void GetData(Employee e, int N);
void Print(Employee e);
 
 
int main()
{
    setlocale(LC_ALL, "RUS");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    Employee e;
    int k, N;
    char ch;
 
    do
    {
        cout << "1 - Записать данные в файл" << endl;
        cout << "2 - Вывести на печать и в результирующий файл ФИО и зарплату" << endl;
        cout << "Введите номер "; cin >> k;
        cout << endl;
 
        if (k == 1) 
        {
            cout << "Количество сотрудников? " << endl; cin >> N;
            GetData(e, N);
        }
        else if (k == 2) Print(e);
        else cout << "Введите число 1 или 2" << endl;
 
        cout << "Продолжить? (Y = Yes) "; cin >> ch;
    } while (ch == 'Y' || ch == 'y');
 
    system("pause");
    return 0;
}
 
 
 
void GetData(Employee e, int N)
{
    ofstream out("data.txt");
    int p;
 
    if (!out.is_open())
    {
        cout << "Файл не удалось открыть\n" << endl;
    }
    else
    {
        for (int i = 1; i <= N; i++)
        {
            cout << "Сотрудник " << i << endl;
            cin.ignore();
            do
            {
                cout << "ФИО : ";
                getline(cin, e.FIO);
                p = count(e.FIO.begin(), e.FIO.end(), ' ');
                if (p != 2) cout << "Повторите пожалуйста...\n";
            } while (p != 2);
 
            cout << "Размер почасовой оплате : "; cin >> e.trafic;
            cout << "Количество отработанных часов : "; cin >> e.hours; cout << endl;
 
            out << e.FIO << " " << e.trafic << " " << e.hours << "\n";
        }
        cout << "Файл записан " << endl;
    }
    out.close();
}
 
void Print(Employee e)
{
    string surname, name, thname;
    ifstream in("data.txt"); 
    ofstream out1("result.txt");
    
    if (in.is_open() && out1.is_open())
    {
        cout << "\t" << "ФИО сотрудника" << "  \t" << "Зарплата за месяц" << "\n";
        cout << "--------------------------------------------------\n";
 
 
        while (in >> surname >> name >> thname >> e.trafic >> e.hours)
        {
            double s = e.trafic * e.hours;
            cout << surname << " " << name << " " << thname << "  \t" << s << "\n";
 
            out1 << surname << " " << name << " " << thname << " " << s << "\n";
        }
 
        out1.close();
        in.close();
    }
    else cout << "Файл не удалось открыть\n";
}
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
07.03.2021, 15:40
подключите
C++
1
#include <algorithm>
Цитата Сообщение от Yetty Посмотреть сообщение
проверку на успешность открытия сделайте однотипную в каждой функции
то есть или успех - неуспех или наоборот, чтобы было одинаково в двух функциях

зачем здесь поставили равно Y = Yes ? Вы же здесь не ставите: 1 - Записать данные в файл

вопросов больше нет ?
0
0 / 0 / 1
Регистрация: 10.02.2020
Сообщений: 41
07.03.2021, 15:46  [ТС]
Цитата Сообщение от Yetty Посмотреть сообщение
вопросов больше нет ?
Вопросы закончились ещё после решения проблем выводом массива
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
07.03.2021, 15:46
cout << "Размер почасовой оплаты
0
0 / 0 / 1
Регистрация: 10.02.2020
Сообщений: 41
07.03.2021, 15:47  [ТС]
Yetty, Сейчас исправлю
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
07.03.2021, 15:48
Цитата Сообщение от novicheks Посмотреть сообщение
Вопросы закончились ещё после решения проблем выводом массива
при чём здесь массив ? не понял то что Вы сказали
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.03.2021, 15:48

Чтение из бинарного файла в структуру
Собственно вопрос в заголовке, есть структура: struct StructEmployee {; int id; string fullname; string...

Чтение из текстового файла в структуру
Всем привет, я новичок в C++. Испытав многое (безрезультатно) решил просить помощи у вас. Что необходимо: 1) Чтение из файла txt данных...

Построчное чтение из файла в структуру
Всем доброго дня! Есть структура вида struct Product { char code; char name; double price;

Чтение данных из файла в структуру
Нужно считать данные с блокнота и поработать с ними. программу написала, но подчеркивает mass что не так #include...

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru