0 / 0 / 0
Регистрация: 12.10.2021
Сообщений: 103
1

Считать данные из файла в структуру

26.03.2022, 11:31. Показов 878. Ответов 12

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста считать данные из файла в структуру sot
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
#include <iostream>
#include <fstream>
using namespace std;
 
void print_shapka() {
    cout << endl << "Список сотрудников" << endl
        << " №№ п/п |     Фамилия      |     Имя     |     Отчество     |     Должность     |  Почасовой тариф \n";
}
struct sot{
 
    string fam;
    string nam;
    string oth;
    string dol;
    double tar;
};
// uchet.txt
struct uch {
    string fam;
    string dat;
    string nch;
    string fin;
    double tar;
};
// Ведомость
struct ved {
    string fam;
    double nch;
    double nlg;
    double zrp;
};
 
void print_menu() {
    system("cls");
    cout << "Выберите действие:\n"
        << "\n\t1. Список сотрудников"
        << "\n\t2. Добавить в cписок N сотрудников"
        << "\n\t3. Редактировать запись сотрудника"
        << "\n\t4. Учет работы"
        << "\n\t5. Заработная плата"
        << "\n\t0. Выйти из программы\n"
        << "\nВаш выбор --> ";
}
// Считывание меню
int get_variant() {
    int x; cin >> x;
    return x;
}
int main() {
    setlocale(LC_ALL, "ru");
    ifstream file; 
    string name;
    cin >> name;
    string path = name;
    file.open(name);
    if (!file.is_open())
        cout << "файл не открыт" << "\n";
    else
    {
 
    }
}
Вложения
Тип файла: txt shtat.txt.txt (274 байт, 9 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.03.2022, 11:31
Ответы с готовыми решениями:

Считать данные из файла в структуру
Есть одна структура, есть файл, в файл я эту структуру записал. Теперь мне надо из файла опять...

Считать данные в структуру из файла
Здравствуйте! Подскажите как считать с текстового файла в структуру Считать в строку а затем...

Не получается считать из текстового файла данные о студентах и записать в структуру
Мне нужно написать программу которая на основе данных о студентах что-то считывает и выполняет....

Описать структуру с полями, считать данные из текстового файла, вывести данные, подсчитать количество
Доброе утро. С C# я знаком весьма посредственно, однако появилась необходимость выполнить на нем...

Считать из текстового файла данные в структуру
У нас есть файл.txt, который имеет вид: Порт_интереса Порт_назначения 1-го рейса Номер 1-го...

12
515 / 407 / 188
Регистрация: 08.04.2013
Сообщений: 1,739
26.03.2022, 14:08 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
#include <iostream>
#include <sstream>
#include <fstream>
#include <vector>
#include <cstring>
#include <iomanip>
 
using namespace std;
 
 
void print_shapka() {
    cout << endl << "Список сотрудников" << endl
        << " №№ п/п |     Фамилия      |     Имя     |     Отчество     |     Должность     |  Почасовой тариф \n";
}
struct sot{
 
    string fam;
    string nam;
    string oth;
    string dol;
    double tar;
};
 
// uchet.txt
struct uch {
    string fam;
    string dat;
    string nch;
    string fin;
    double tar;
};
// Ведомость
struct ved {
    string fam;
    double nch;
    double nlg;
    double zrp;
};
 
void print_menu() {
    system("cls");
    cout << "Выберите действие:\n"
        << "\n\t1. Список сотрудников"
        << "\n\t2. Добавить в cписок N сотрудников"
        << "\n\t3. Редактировать запись сотрудника"
        << "\n\t4. Учет работы"
        << "\n\t5. Заработная плата"
        << "\n\t0. Выйти из программы\n"
        << "\nВаш выбор --> ";
}
// Считывание меню
int get_variant() {
    int x; cin >> x;
    return x;
}
int main() {
    setlocale(LC_ALL, "rus");
    vector <sot> vSotr;
    ifstream file;
    string name = "shtat.txt";
   // cin >> name;
    string path = name;
    file.open(name);
    if (!file.is_open())
        cout << "файл не открыт" << "\n";
    else
    {
string str;
 
        while (std::getline(file, str, '\n'))
        {
            std::stringstream ss(str);
            std::string item;
             int i = 0;
            sot tSotr;
            while (std::getline(ss, item, ';'))
            {
             i++;
            switch(i) {
            case 1: tSotr.fam = item;     break;
            case 2: tSotr.nam = item;     break;
            case 3: tSotr.oth = item;     break;
            case 4: tSotr.dol = item;     break;
            case 5: tSotr.tar = std::stod(item) ;     break;
            default :  break;
            }
        }
        vSotr.push_back(tSotr) ;
        }
print_shapka() ;
int i = 0;
  for (auto x : vSotr)
    {
        cout.setf(ios::fixed);
        cout << setw(5)<< i++ << setw(10)<< x.fam << ' ' << x.nam << ' ' << x.oth << ' ' << x.dol <<' '<< x.tar <<'\n';// << x.idel << endl;
    }
    }
    file.close();
    return 0;
}
1
0 / 0 / 0
Регистрация: 12.10.2021
Сообщений: 103
26.03.2022, 14:56  [ТС] 3
Простите, а как устранить ошибку, программа выводит сообщение что идентификатор vSotr не определён
0
0 / 0 / 0
Регистрация: 12.10.2021
Сообщений: 103
26.03.2022, 15:07  [ТС] 4
программа выводит некорректные данные
Миниатюры
Считать данные из файла в структуру  
0
515 / 407 / 188
Регистрация: 08.04.2013
Сообщений: 1,739
26.03.2022, 17:39 5
надо с кодировками поработать у вас UTF-8
https://notepad-plus-plus.org/

Добавлено через 57 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
std::string UTF8_to_CP1251(std::string const & utf8)
{
    if(!utf8.empty())
    {
        int wchlen = MultiByteToWideChar(CP_UTF8, 0, utf8.c_str(), utf8.size(), NULL, 0);
        if(wchlen > 0 && wchlen != 0xFFFD)
        {
            std::vector<wchar_t> wbuf(wchlen);
            MultiByteToWideChar(CP_UTF8, 0, utf8.c_str(), utf8.size(), &wbuf[0], wchlen);
            std::vector<char> buf(wchlen);
            WideCharToMultiByte(1251, 0, &wbuf[0], wchlen, &buf[0], wchlen, 0, 0);
 
            return std::string(&buf[0], wchlen);
        }
    }
    return std::string();
}
1
0 / 0 / 0
Регистрация: 12.10.2021
Сообщений: 103
27.03.2022, 11:11  [ТС] 6
простите, а как мне обратится к конкретному элементу например к тарифу, просто по условию нужно будет вывести данные конкретного работника: Известно, что рабочее время более 144 часов считается сверхурочным и оплачивается вдвойне.
Вывести размер заработной платы каждого сотрудника фирмы за вычетом налогов,
размер которых принять равным 22% от начисленной суммы
,
0
515 / 407 / 188
Регистрация: 08.04.2013
Сообщений: 1,739
27.03.2022, 13:22 7
Чтоб конкретизировать надо вам с этим разобраться, т.е. как вы будете идентифицировать каждого работника, обычно это делают через табельный номер. Где у вас будет храниться остальная информация по работнику, по начислениям. Начисления имеют свойство начисляться не один раз в месяц и т.д. и т.п
struct uch {
    string fam;
    string dat;
    string nch;
    string fin;
    double tar;
};
// Ведомость
struct ved {
    string fam;
    double nch;
    double nlg;
    double zrp;
};
так вам же дают такие задания чтоб вы читали, писали и учились
0
0 / 0 / 0
Регистрация: 12.10.2021
Сообщений: 103
27.03.2022, 13:39  [ТС] 8
Номером ведь может быть i?
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
#include <iostream>
#include <sstream>
#include <fstream>
#include <vector>
#include <cstring>
#include <iomanip>
using namespace std;
 
 
void print_shapka() {
    cout << endl << "Список сотрудников" << endl
        << " №№ п/п |    Фамилия   |  Имя  |  Отчество  |  Должность  | Почасовой тариф \n";
}
struct sot {
 
    string fam;
    string nam;
    string oth;
    string dol;
    double tar;
};
 
// uchet.txt
struct uch {
    string fam;
    string nam;
    string oth;
    string data;
    double vv;
    double vz;
};
// Ведомость
struct ved {
    string fam;
    double nch;
    double nlg;
    double zrp;
};
int main() {
    setlocale(LC_ALL, "rus");
    vector <sot> vSotr;
    vector <uch> iSotr;
    ifstream file;
    string name;
    cin >> name;
    string path = name;
    file.open(name);
    if (!file.is_open())
        cout << "файл не открыт" << "\n";
    else
    {
        string str;
 
        while (getline(file, str, '\n'))
        {
            stringstream ss(str);
            string item;
            int i = 0;
            sot tSotr;
            while (getline(ss, item, ';'))
            {
                i++;
                switch (i) {
                case 1: tSotr.fam = item;     break;
                case 2: tSotr.nam = item;     break;
                case 3: tSotr.oth = item;     break;
                case 4: tSotr.dol = item;     break;
                case 5: tSotr.tar = stod(item);     break;
                default:  break;
                }
            }
            vSotr.push_back(tSotr);
        }
        print_shapka();
        int i = 0;
        for (auto x : vSotr)
        {
            cout.setf(ios::fixed);
            cout << ++i << x.fam << ' ' << x.nam << ' ' << x.oth << ' ' << x.dol << ' ' << x.tar << '\n';
        }
    }
    file.close();
    ////////////////////////////////
    ifstream file2;
    string name2;
    cin >> name2;
    string path2 = name2;
    file2.open(name2);
    if (!file2.is_open())
        cout << "файл не открыт" << "\n";
    else
    {
        string str2;
 
        while (getline(file2, str2, '\n'))
        {
            stringstream ss2(str2);
            string item2;
            int i = 0;
            uch pSotr;
            while (getline(ss2, item2, ';'))
            {
                i++;
                switch (i) {
                case 1: pSotr.fam = item2;     break;
                case 2: pSotr.nam = item2;     break;
                case 3: pSotr.oth = item2;     break;
                case 4: pSotr.data = item2;     break;
                case 5: pSotr.vv = stod(item2);     break;
                case 6: pSotr.vz = stod(item2); break;
                default:  break;
                }
            }
            iSotr.push_back(pSotr);
        }
 
        int i = 0;
       
        for (auto z : iSotr)
        {
            cout.setf(ios::fixed);
            cout << ++i << z.fam << ' ' << z.nam << ' ' << z.oth << ' ' << z.data << ' ' << z.vv << ' ' << z.vz << '\n';
        }
    }
    file2.close();
}
0
515 / 407 / 188
Регистрация: 08.04.2013
Сообщений: 1,739
27.03.2022, 19:44 9
HONTA7, В самом задании что дано?
Цитата Сообщение от HONTA7 Посмотреть сообщение
Известно, что рабочее время более 144 часов считается сверхурочным и оплачивается вдвойне.
Вывести размер заработной платы каждого сотрудника фирмы за вычетом налогов,
размер которых принять равным 22% от начисленной суммы
а здесь про файлы, каким должны быть структуры ничего не написано ! Сказано рассчитать и вывести размер заработной платы.
0
0 / 0 / 0
Регистрация: 12.10.2021
Сообщений: 103
28.03.2022, 08:56  [ТС] 10
Цитата Сообщение от marat_miaki Посмотреть сообщение
В самом задании что дано?
информация о сотрудниках содержит фамилию, имя и отчество, должность, почасовой тариф.
Во втором файле содержится информация об учете работы каждого сотрудника за месяц.
Каждая запись содержит
фамилию, инициалы, дату, время выхода на работу, время завершения работы.
Путь к каждому файлу задается из командной строки при запуске программы.
Известно, что рабочее время более 144 часов считается сверхурочным и оплачивается вдвойне.
Вывести размер заработной платы каждого сотрудника фирмы за вычетом налогов,
размер которых принять равным 22% от начисленной суммы.
Реализовать возможность заполнения файлов программно.
Предусмотреть возможность смены должности и почасового тарифа для каждого сотрудника
0
515 / 407 / 188
Регистрация: 08.04.2013
Сообщений: 1,739
28.03.2022, 12:05 11
пример вторгог файла в студию. Вот как вы отличите Иванова Ивана Иваныча От Иванова Ильи Иваныча во втором файле по инициалам. Изначально некорректные данные. Нельзя однозначно идентифицировать данные первого и вторго файла.
У каждого из файла № 1 во втором файле будет не одна запись ( по дате будет много)
0
0 / 0 / 0
Регистрация: 12.10.2021
Сообщений: 103
28.03.2022, 15:48  [ТС] 12
Второй файл
Вложения
Тип файла: txt f2.txt (254 байт, 3 просмотров)
0
515 / 407 / 188
Регистрация: 08.04.2013
Сообщений: 1,739
28.03.2022, 18:54 13
(ни одного намека на понимание) С такими файлами сам работай, как поймешь как - расскажи, а пока читай что было написано выше

Добавлено через 9 минут
5 дней 5 разных людей? Реализуй это как 1 человек и пять дней ( это подсказка )
0
28.03.2022, 18:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.03.2022, 18:54
Помогаю со студенческими работами здесь

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

Считать данные в структуру из файла и последовательно вывести на экран
Есть структура: struct questions { int idvopr; char vopr ; }VoprList Как считать в неё из...

Как мне правильно сделать следующую задачу. Из файла нужно считать данные в структуру
Массив структур содержит информацию о 23 жителей населенного пункта: адрес проживания; фамилия;...

Считать структуру из одного файла, спросить у пользователя информацию и на ее основе вывести структуру в новый файл
Дана структура &quot;Книги&quot;:Автор, название, цена. Спросить у пользователя бюджет и на его основе выдать...

Считать данные в структуру
Здравствуйте. У меня проблема не могу считать данные из бинарного файла в поле структуры (тип...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

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