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

Программа не считывает данные из файла

07.05.2023, 14:47. Показов 635. Ответов 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
#include <iostream>
#include <fstream>
#include <string>
#include <algorithm>
#include <ctime>
 
using namespace std;
 
struct WORKER {
    string name;
    string position;
    int year;
    int birth_year;
    int birth_month;
    int birth_day;
};
 
const int MAX_WORKERS = 10;
WORKER workers[MAX_WORKERS];
int num_workers = 0;
 
void read_workers(string filename) {
    ifstream file(filename);
    if (!file.is_open()) {
        cout << "Ошибка открытия файла" << filename << endl;
        return;
    }
 
    while (!file.eof() && num_workers < MAX_WORKERS) {
        WORKER worker;
        file >> worker.name >> worker.position >> worker.year >> worker.birth_year >> worker.birth_month >> worker.birth_day;
        workers[num_workers++] = worker;
    }
 
    file.close();
}
 
void print_workers() {
    cout << "Имя\tДолжность\tГод назначения\tДата рождения" << endl;
    for (int i = 0; i < num_workers; i++) {
        cout << workers[i].name << "\t" << workers[i].position << "\t" << workers[i].year << "\t" << workers[i].birth_year << "-" << workers[i].birth_month << "-" << workers[i].birth_day << endl;
    }
}
 
bool compare_workers(WORKER a, WORKER b) {
    return a.name < b.name;
}
 
void sort_workers() {
    sort(workers, workers + num_workers, compare_workers);
}
 
int calculate_age(int birth_year, int birth_month, int birth_day) {
    time_t now = time(0);
    tm* ltm = localtime(&now);
    int current_year = 1900 + ltm->tm_year;
    int current_month = 1 + ltm->tm_mon;
    int current_day = ltm->tm_mday;
 
    int age = current_year - birth_year;
    if (current_month < birth_month || (current_month == birth_month && current_day < birth_day)) {
        age--;
    }
 
    return age;
}
 
void print_workers_by_experience(int min_experience, int max_experience) {
    cout << "Имя\tДолжность\tГод назначения\tДата рождения\tСтаж" << endl;
    bool found = false;
    for (int i = 0; i < num_workers; i++) {
        int experience = calculate_age(workers[i].year, 1, 1) - workers[i].birth_year;
        if (experience >= min_experience && experience <= max_experience) {
            cout << workers[i].name << "t" << workers[i].position << "t" << workers[i].year << "t" << workers[i].birth_year << "-" << workers[i].birth_month << "-" << workers[i].birth_day << "t" << experience << endl;
            found = true;
        }
    }
 
    if (!found) {
        cout << "Не найдено работников с таким стажем" << min_experience << " and " << max_experience << endl;
    }
}
 
void print_workers_by_birth_month(int month) {
    cout << "Имя\tДолжность\tГод назначения\tДата рождения" << endl;
    bool found = false;
    for (int i = 0; i < num_workers; i++) {
        if (workers[i].birth_month == month) {
            cout << workers[i].name << "t" << workers[i].position << "t" << workers[i].year << "t" << workers[i].birth_year << "-" << workers[i].birth_month << "-" << workers[i].birth_day << endl;
            found = true;
        }
    }
 
    if (!found) {
        cout << "Не найдено работников с данным месяцем рождения " << month << endl;
    }
}
 
void print_workers_by_age() {
    cout << "Имя\tДолжность\tГод назначения\tДата рождения\tВозраст" << endl;
    for (int i = 0; i < num_workers; i++) {
        int age = calculate_age(workers[i].birth_year, workers[i].birth_month, workers[i].birth_day);
        cout << workers[i].name << "t" << workers[i].position << "t" << workers[i].year << "t" << workers[i].birth_year << "-" << workers[i].birth_month << "-" << workers[i].birth_day << "t" << age << endl;
    }
}
 
void sort_workers_by_field(bool (*compare)(WORKER, WORKER)) {
    sort(workers, workers + num_workers, compare);
}
 
bool compare_workers_by_experience(WORKER a, WORKER b) {
    int experience_a = calculate_age(a.year, 1, 1) - a.birth_year;
    int experience_b = calculate_age(b.year, 1, 1) - b.birth_year;
    return experience_a < experience_b;
}
 
bool compare_workers_by_birth_date(WORKER a, WORKER b) {
    if (a.birth_month == b.
birth_month) {
        return a.birth_day < b.birth_day;
    } else {
 
        return a.birth_month < b.birth_month;
    }
}
 
int main() {
    read_workers("workers.txt");
 
    char choice;
    do {
        cout << "Выберите вариант:" << endl;
        cout << "1. Вывести всех работников" << endl;
        cout << "2. Сортировать по имени" << endl;
        cout << "3. Сортировать по стажу" << endl;
        cout << "4. Сортировать по дате рождения" << endl;
        cout << "5. Сортировать по возрасту" << endl;
        cout << "6. Выйти" << endl;
        cin >> choice;
 
        switch (choice) {
            case '1':
                print_workers();
                break;
            case '2':
                sort_workers();
                print_workers();
                break;
            case '3':
                int min_experience, max_experience;
                cout << "Введите минимальный стаж: ";
                cin >> min_experience;
                cout << "Введите максимальный стаж: ";
                cin >> max_experience;
                print_workers_by_experience(min_experience, max_experience);
                break;
            case '4':
                int month;
                cout << "Введите месяц рождения: ";
                cin >> month;
                print_workers_by_birth_month(month);
                break;
            case '5':
                sort_workers_by_field(compare_workers_by_birth_date);
                print_workers_by_age();
                break;
            case '6':
                break;
            default:
                cout << "Неверный выбор" << endl;
                break;
        }
 
        if (choice != '6') {
            cout << "Продолжить? (Y/N): ";
            cin >> choice;
        }
    } while (choice == 'Y' || choice == 'y');
 
    return 0;
}
Пример вводных данных:
John Smith, Manager, 2010, 01/01/1980
Jane Doe, Developer, 2015, 05/12/1990
Bob Johnson, Developer, 2012, 11/30/1985
Alice Williams, Manager, 2011, 07/04/1978
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.05.2023, 14:47
Ответы с готовыми решениями:

Почему программа не считывает данные с xml-файла
создала через блокнот xml-файл: &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt; &lt;Configuration&gt; &lt;Baud_rate&gt; 7 &lt;/Baud_rate&gt; ...

Изменить программу (программа считывает исходные данные из файла. Процедура обработки находится в юните отличном от основного)
Помогите решить проблему.. Процедура Р создает массив из элементов z, удовлетворяющих условию F1(z)&lt;F2(z). Для каждой строки матрицы...

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

1
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
07.05.2023, 17:48
Сам не видишь, что там пробел между именем и фамилией?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.05.2023, 17:48
Помогаю со студенческими работами здесь

Программа не считывает введенные данные
Программа не считывает введенные данные. Помогите, пожалуйста, не вижу, где проблема) #include &lt;iostream&gt;//файловый ввод вывод ...

Не считывает данные из файла с++
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;string&gt; #include &lt;vector&gt; using namespace std; struct Info { string...

Не считывает данные с файла
program project1; const MAX_VALUE = 1000; //Макисмально вводимое значение type int = integer; pint = ^int; procedure...

Не считывает данные из файла
Дано задание (полностью писать не буду не имеет смысла) &quot;... также создать функции ввода и вывода массива из файла SaveArray и...

Не считывает входные данные из файла
Здравствуйте! Это моя первая программа, которая считывает вход данные из файла и записывает сумму в файл. Она что-то выводит, но выводит...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru