Дан пофамильный список рабочих с указанием номера бригады, количества отработанных за
месяц часов, типа работ (малярные, сантехника, электрика). Для каждого типа работ установлен
тариф оплаты (400, 650, 700 рублей соответственно). Вывести номера бригад, суммарно
заработавших больше остальных.
Вот чего добился пока что: https://onlinegdb.com/-iuTnb8h3
C/C++
Задача на структуры по c++
#include < iostream >
#include < vector >
#include < map >
#include < algorithm >
using namespace std;
class worker
{
string name;
short number_of_brigade;
short number_of_hours;
short oklad; //400,650,700 - santech,malar,electric
public:
worker (const string n, const short a, const short b, const short c)
{
name = n;
number_of_brigade = a;
number_of_hours = b;
oklad = c;
}
worker (const string n, const short a, const short b, const string c)
{
name = n;
number_of_brigade = a;
number_of_hours = b;
oklad = c == "santech" ? 400 : c == "malar" ? 650 : 700;
}
const short get_hours () const
{
return number_of_hours;
}
const short get_oklad() const
{
return oklad;
}
const short get_brig() const
{
return number_of_brigade;
}
const string get_name() const
{
return name;
}
void print()
{
cout << "Name: " << name << " Brig_N: " << number_of_brigade << " Hours: " << number_of_hours << " Oklad: " << oklad << endl;
}
};
class brigada
{
vector < worker > units;
int money;
int num;
public:
brigada() { money = 0; }
void add(worker wor)
{
units.push_back(wor);
money += wor.get_hours() * wor.get_oklad();
num = wor.get_brig();
}
int get_money()
{
return money;
}
int get_brig()
{
return num;
}
};
int main()
{
vector < worker > list;
map < int,brigada > brigads;
vector < brigada > brigds_s;
cout << "Add worker: name, brig, hours, prof\n";
cout << "Add stop name for stop\n";
while (true)
{
string name, prof;
short brig, hours;
cin >> name;
if (name == "stop") break;
cin >> brig >> hours;
cin >> prof;
worker temp(name, brig, hours, prof);
list.push_back(move(temp));
}
for (auto& s : list) brigads[s.get_brig()].add(move(s)); //формирование бригад
for (auto& br : brigads) brigds_s.push_back(move(br.second)); //создание списка бригад
auto sorter = [](brigada& one, brigada& two) {return one.get_money() > two.get_money(); };
sort(brigds_s.begin(), brigds_s.end(), sorter); // сортировка по прибыли
cout << "Brigada N " << brigds_s[0].get_brig() << " get max money: " << brigds_s[0].get_money();
}
#include < vector >
#include < map >
#include < algorithm >
using namespace std;
class worker
{
string name;
short number_of_brigade;
short number_of_hours;
short oklad; //400,650,700 - santech,malar,electric
public:
worker (const string n, const short a, const short b, const short c)
{
name = n;
number_of_brigade = a;
number_of_hours = b;
oklad = c;
}
worker (const string n, const short a, const short b, const string c)
{
name = n;
number_of_brigade = a;
number_of_hours = b;
oklad = c == "santech" ? 400 : c == "malar" ? 650 : 700;
}
const short get_hours () const
{
return number_of_hours;
}
const short get_oklad() const
{
return oklad;
}
const short get_brig() const
{
return number_of_brigade;
}
const string get_name() const
{
return name;
}
void print()
{
cout << "Name: " << name << " Brig_N: " << number_of_brigade << " Hours: " << number_of_hours << " Oklad: " << oklad << endl;
}
};
class brigada
{
vector < worker > units;
int money;
int num;
public:
brigada() { money = 0; }
void add(worker wor)
{
units.push_back(wor);
money += wor.get_hours() * wor.get_oklad();
num = wor.get_brig();
}
int get_money()
{
return money;
}
int get_brig()
{
return num;
}
};
int main()
{
vector < worker > list;
map < int,brigada > brigads;
vector < brigada > brigds_s;
cout << "Add worker: name, brig, hours, prof\n";
cout << "Add stop name for stop\n";
while (true)
{
string name, prof;
short brig, hours;
cin >> name;
if (name == "stop") break;
cin >> brig >> hours;
cin >> prof;
worker temp(name, brig, hours, prof);
list.push_back(move(temp));
}
for (auto& s : list) brigads[s.get_brig()].add(move(s)); //формирование бригад
for (auto& br : brigads) brigds_s.push_back(move(br.second)); //создание списка бригад
auto sorter = [](brigada& one, brigada& two) {return one.get_money() > two.get_money(); };
sort(brigds_s.begin(), brigds_s.end(), sorter); // сортировка по прибыли
cout << "Brigada N " << brigds_s[0].get_brig() << " get max money: " << brigds_s[0].get_money();
}
Похожие вопросы
- [C++] Помогите написать задачу на структуры!
- [C++] Задача на структуры
- Помогите решить задачу на структуры в Си.
- Помогите решить задачу по программированию на C++
- [C++] Задача на структуры
- Задача на сортировку структур. Язык C++.
- Как решить ошибку C2079 использует не имеющую определения структуру class C++
- Основы программирования. Решение задач. Обработка структур. Программа.
- Задача на структуры данных, очереди и стек, не могу понять что делаю нет так?
- Задачи по динамической памяти. C++