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

Найдите ФИО и возраст самого высокооплачиваемого работника

01.12.2017, 12:58. Показов 1653. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дан файл INPUT.txt. В нем записаны данные работников компании: ФИО, год рождения и зарплата. За один просмотр файла найдите ФИО и возраст самого высокооплачиваемого работника, который младше 35 лет. Ответ выведите в файл OUTPUT.txt
Примечание: Возраст это разница текущего года 2017 и года рождения.

Файл INPUT.txt:
Иванов;Иван;Иванович;1952;10000
Петров;Петр;Петрович;1995;8000
Сидоров;Сидр;Сидорович;1991;15000
Богатырев;Богатырь;Богатырович;1993;12000

Файл OUTPUT.txt:
Сидоров Сидр Сидорович
возраст: 26

Примечательно то,что разделители это именно точка с запятой (.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.12.2017, 12:58
Ответы с готовыми решениями:

Определить на сколько лет возраст самого старого человека превышает возраст самого младшего
В массиве хранится информация о годе рождения каждого из 30 человек, определить на сколько лет...

На сколько зарплата самого высокооплачиваемого сотрудника отличается от самого низкооплачиваемого
В отделе работают 3 сотрудника, которые получают заработную плату в рублях. Требуется определить:...

На сколько зарплата самого высокооплачиваемого сотрудника отличается от самого низкооплачиваемого?
В отделе работают 3 сотрудника, которые получают заработную плату в рублях. Требуется определить:...

Определить, на сколько лет возраст самого старого человека превышает возраст самого молодого
Решите задачу: В массиве хранится информация о годе рождения каждого из 30 человек. Определить,...

5
243 / 268 / 219
Регистрация: 14.11.2016
Сообщений: 1,043
01.12.2017, 13:34 2
dubstik, писал на коленке, не проверял, по идее должно работать.
Чуть позже проверю, как будет возможноть и исправлю ошибки (если есть).
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
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <list>
#include <utility>
 
const std::string FILE_NAME_INPUT("input.txt");
const std::string FILE_NAME_OUTPUT("output.txt");
const int YEAR_NOW = 2017;
const int YEARS_OLD = 35;
 
struct Employee
{
    std::string surname;
    std::string firstname;
    std::string patronymic;
    int date;
    int pay;
};
 
int main()
{
    std::ifstream infile(FILE_NAME_INPUT);
    if (!infile)
    {
        std::cerr << "File '" << FILE_NAME_INPUT << "' not found!" << std::endl;
        std::cin.get();
        return -1;
    }
    else
    {
        std::list<std::pair<Employee, int> > data;
        std::string buffer;
        while (infile >> buffer)
        {
            std::stringstream sstr;
            for (const char &Ch : buffer)
            {
                sstr << (Ch == ';' ? ' ' : Ch);
            }
            Employee item;
            sstr >> item.surname >> item.firstname >> item.patronymic >> item.date >> item.pay;
            {
                int res = YEAR_NOW - item.date;
                if (res < YEARS_OLD)
                {
                    data.push_back(std::make_pair(item, res));
                }
            }
        }
        std::ofstream outfile(FILE_NAME_OUTPUT, std::ios_base::trunc);
        for (auto it : data)
        {
            outfile << it.first.surname << ' ' << it.first.firstname << ' ' << it.first.patronymic << std::endl
                << "Age: " << it.second << std::endl << std::endl;
        }
    }
}
0
0 / 0 / 0
Регистрация: 12.09.2017
Сообщений: 28
01.12.2017, 14:32  [ТС] 3
Цитата Сообщение от anapshy Посмотреть сообщение
dubstik, писал на коленке, не проверял, по идее должно работать.
Чуть позже проверю, как будет возможноть и исправлю ошибки (если есть).
ВОзможно ли решение без <list>?
0
243 / 268 / 219
Регистрация: 14.11.2016
Сообщений: 1,043
01.12.2017, 16:00 4
Цитата Сообщение от dubstik Посмотреть сообщение
ВОзможно ли решение без <list>?
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
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
 
const std::string FILE_NAME_INPUT("input.txt");
const std::string FILE_NAME_OUTPUT("output.txt");
const int YEAR_NOW = 2017;
const int YEARS_OLD = 35;
 
struct Employee
{
    std::string surname;
    std::string firstname;
    std::string patronymic;
    int date;
    int pay;
};
 
int main()
{
    std::ifstream infile(FILE_NAME_INPUT);
    if (!infile)
    {
        std::cerr << "File '" << FILE_NAME_INPUT << "' not found!" << std::endl;
        std::cin.get();
        return -1;
    }
    else
    {
        bool isFlag = false;
        std::string buffer;
        while (infile >> buffer)
        {
            std::stringstream sstr;
            for (const char &Ch : buffer)
            {
                sstr << (Ch == ';' ? ' ' : Ch);
            }
            Employee item;
            sstr >> item.surname >> item.firstname >> item.patronymic >> item.date >> item.pay;
            {
                int res = YEAR_NOW - item.date;
                if (res < YEARS_OLD)
                {
                    std::ofstream outfile;
                    if (!isFlag) /// Если не было записей...
                    {
                        isFlag = true;
                        outfile.open(FILE_NAME_OUTPUT, std::ios_base::trunc); // создаем чистый файл
                        outfile.close();
                    }
                    outfile.open(FILE_NAME_OUTPUT, std::ios_base::app); // открываем для записи в конец
                    outfile << item.surname << ' ' << item.firstname << ' ' << item.patronymic << std::endl
                        << "Age: " << res << std::endl << std::endl;
                }
            }
        }
    }
}
0
0 / 0 / 0
Регистрация: 12.09.2017
Сообщений: 28
01.12.2017, 16:09  [ТС] 5
задача найти самого высокооплачиваемого сотрудника!
а получается что просто сотрудников младше 35.
0
243 / 268 / 219
Регистрация: 14.11.2016
Сообщений: 1,043
01.12.2017, 16:52 6
dubstik,
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
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
 
const std::string FILE_NAME_INPUT("input.txt");
const std::string FILE_NAME_OUTPUT("output.txt");
const int YEAR_NOW = 2017;
const int YEARS_OLD = 35;
 
struct Employee
{
    std::string surname;
    std::string firstname;
    std::string patronymic;
    int date;
    int pay;
};
 
int main()
{
    std::ifstream infile(FILE_NAME_INPUT);
    if (!infile)
    {
        std::cerr << "File '" << FILE_NAME_INPUT << "' not found!" << std::endl;
        std::cin.get();
        return -1;
    }
    else
    {
        bool isFlag = false;
        Employee *temp = new Employee();
        Employee *item = nullptr;
        int age = 0;
        std::string buffer;
        while (infile >> buffer)
        {
            std::stringstream sstr;
            for (const char &Ch : buffer)
            {
                sstr << (Ch == ';' ? ' ' : Ch);
            }
            sstr >> temp->surname >> temp->firstname >> temp->patronymic >> temp->date >> temp->pay;
            {
                int tempAge = YEAR_NOW - temp->date;
                if (tempAge < YEARS_OLD)
                {
                    if (!isFlag)
                    {
                        isFlag = true;
                        item = new Employee();
                        std::swap(temp, item);
                        std::swap(tempAge, age);
                    }
                    else
                    {
                        if (temp->pay > item->pay)
                        {
                            std::swap(temp, item);
                            std::swap(tempAge, age);
                        }
                    }
                }
            }
        }
        delete temp;
        if (item != nullptr)
        {
            std::ofstream outfile(FILE_NAME_OUTPUT, std::ios_base::trunc);
            outfile << item->surname << ' ' << item->firstname << ' ' << item->patronymic << std::endl
                << "Age: " << age << std::endl << std::endl;
            delete item;
        }
    }
}
0
01.12.2017, 16:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.12.2017, 16:52
Помогаю со студенческими работами здесь

Найти возраст самого старшего и самого молодого посетителей спортзала, а так же посчитать средний возраст посетителей
В спортзал ежедневно приходит какое-то количество посетителей. Необходимо предложить пользователю...

Определить, в какой фирме у "пятого самого высокооплачиваемого" зарплата больше
2)В каждой из двух фирм работают по 15 человек. Известны зарплаты каждого сотрудника каждой фирмы....

Отыскать телефон по ФИО работника
Ребят, помогите пожалусто сделать 2 задачки: Задача по типизованих файлах. 1) Заданный файл,...

Определить фамилию самого молодого работника
Помогите пожалуйста, не успеваю! Ко дню основания фирмы решили выдать премию самому молодому...


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

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