C/C++
Задачка на C++ на формирование массива из 10 записей
Задача: "Сформировать массив из 10 записей, содержащих информацию о работающих на заводе: фамилию, номер цеха, размер зарплаты в месяц. Вычислить сумму выплат по цехам и общую сумму по заводу"
Для решения задач такого типа используется структурирование данных. В вашем случае:
struct information{
string last_name; // фамилия
int workshop; // цех
int salary; // зарплата
};
Так, как таких записей будет 10, создаём массив структуры из 10 элементов
information worker[10];
struct information{
string last_name; // фамилия
int workshop; // цех
int salary; // зарплата
};
Так, как таких записей будет 10, создаём массив структуры из 10 элементов
information worker[10];
#include <algorithm>
#include <iostream>
#include <string>
#include <array>
#include <map>
using namespace std;
template<typename T>
T input(const char* msg) {
cout << msg;
T value;
cin >> value;
cin.ignore(cin.rdbuf()->in_avail());
return value;
}
struct Worker {
unsigned short num;
float salary;
string name;
Worker() : num(0), salary(0) {}
friend istream& operator>>(istream& inp, Worker& w) {
cout << "Ф. И. О.: ";
getline(inp, w.name);
w.num = input<unsigned short>("Номер цеха: ");
w.salary = input<float>("Зарплата: ");
puts("");
return inp;
}
};
using worker10_t = array<Worker, 3>;
map<unsigned short, float> workshops(const worker10_t& table) {
map<unsigned short, float> box;
for (const auto& rec : table) box[rec.num] += rec.salary;
return box;
}
float total(const worker10_t& table) {
float sum = 0.0F;
for (const auto& rec : table) sum += rec.salary;
return sum;
}
int main() {
system("chcp 1251 > nul");
worker10_t table;
for (auto& rec : table) cin >> rec;
auto ws = workshops(table);
cout.setf(ios::fixed);
cout.precision(2);
puts("\tЗарплата по цехам:");
for (const auto& [num, salary] : ws) cout << "Цех " << num << ": " << salary << '\n';
auto all = total(table);
cout << "\nЗарплата по заводу: " << all << '\n';
system("pause > nul");
}
#include <iostream>
#include <string>
#include <array>
#include <map>
using namespace std;
template<typename T>
T input(const char* msg) {
cout << msg;
T value;
cin >> value;
cin.ignore(cin.rdbuf()->in_avail());
return value;
}
struct Worker {
unsigned short num;
float salary;
string name;
Worker() : num(0), salary(0) {}
friend istream& operator>>(istream& inp, Worker& w) {
cout << "Ф. И. О.: ";
getline(inp, w.name);
w.num = input<unsigned short>("Номер цеха: ");
w.salary = input<float>("Зарплата: ");
puts("");
return inp;
}
};
using worker10_t = array<Worker, 3>;
map<unsigned short, float> workshops(const worker10_t& table) {
map<unsigned short, float> box;
for (const auto& rec : table) box[rec.num] += rec.salary;
return box;
}
float total(const worker10_t& table) {
float sum = 0.0F;
for (const auto& rec : table) sum += rec.salary;
return sum;
}
int main() {
system("chcp 1251 > nul");
worker10_t table;
for (auto& rec : table) cin >> rec;
auto ws = workshops(table);
cout.setf(ios::fixed);
cout.precision(2);
puts("\tЗарплата по цехам:");
for (const auto& [num, salary] : ws) cout << "Цех " << num << ": " << salary << '\n';
auto all = total(table);
cout << "\nЗарплата по заводу: " << all << '\n';
system("pause > nul");
}
Похожие вопросы
- C++ Одномерный динамический массив
- C++ | Структуры и массивы структур. Помогите пожалуйста!
- C++ | Структуры и массивы структур. Помогите пожалуйста!
- C++ двумерный статич. массив
- Мне нужна помощь с одной задачкой по c++.
- C++ Обработка одномерных массивов.
- C++ задача с массивом
- Если массив из 10 элементов содержит хотя бы один нулевой элемент
- Задача C++ с двухмерными массивами
- Помогите с задачкой по C++