Задан массив данных следующей структуры:
Фамилия; Год рождения; Адрес;
Мужчина: 1) военный; 2) заработная плата
Женщина: 1) количество детей, 2) замужем или нет, 3) заработная плата.
Составить программу с использованием структуры данных, которая обеспечивает ввод полученной информации, вывод ее в виде таблицы и обнаружение разницы между максимальной и минимальной заработной платой мужчин и женщин.В С++
Answers & Comments
Приведенный ниже код на C++ демонстрирует решение задачи с использованием структуры данных. Он запрашивает у пользователя информацию о людях, используя структуру Person, сохраняет данные в массив и выводит таблицу всех людей. Затем программа находит максимальную и минимальную заработную плату среди мужчин и женщин и выводит разницу.
Объяснение:
#include <iostream>
#include <string>
using namespace std;
// Структура данных для человека
struct Person {
string name;
int birthYear;
string address;
bool isMale;
bool isMilitary; // только для мужчин
int numChildren; // только для женщин
bool isMarried; // только для женщин
double salary; // только для мужчин и женщин
};
int main() {
const int MAX_PEOPLE = 100; // максимальное количество людей в базе данных
Person people[MAX_PEOPLE]; // массив для хранения информации о людях
int numPeople = 0; // текущее количество людей в базе данных
// Запрос информации о каждом человеке у пользователя
while (numPeople < MAX_PEOPLE) {
cout << "Введите информацию о человеке #" << numPeople + 1 << endl;
// Общая информация о человеке
cout << "Фамилия: ";
cin >> people[numPeople].name;
cout << "Год рождения: ";
cin >> people[numPeople].birthYear;
cout << "Адрес: ";
cin >> people[numPeople].address;
// Информация о поле и занятости
char gender;
cout << "Пол (M/F): ";
cin >> gender;
people[numPeople].isMale = (gender == 'M');
if (people[numPeople].isMale) {
cout << "Военный? (0/1): ";
cin >> people[numPeople].isMilitary;
} else {
cout << "Количество детей: ";
cin >> people[numPeople].numChildren;
cout << "Замужем? (0/1): ";
cin >> people[numPeople].isMarried;
}
// Информация о заработной плате
cout << "Заработная плата: ";
cin >> people[numPeople].salary;
// Запрос на продолжение ввода информации
char response;
cout << "Добавить еще человека? (Y/N): ";
cin >> response;
if (response != 'Y' && response != 'y') {
break;
}
numPeople++;
}
// Вывод таблицы с информацией о каждом человеке
cout << "Список людей:" << endl;
cout << "Фамилия\tГод рождения\tАдрес\tПол\tЗанятость\tДети\tЗамужем\tЗаработная плата" << endl;
for (int i = 0; i < numPeople; i++) {
cout
// Поиск максимальной и минимальной заработной платы среди мужчин и женщин
double maxMaleSalary = 0.0;
double minMaleSalary = numeric_limits<double>::max(); // начальное значение - максимальное возможное число
double maxFemaleSalary = 0.0;
double minFemaleSalary = numeric_limits<double>::max();
for (int i = 0; i < numPeople; i++) {
if (people[i].isMale) {
if (people[i].salary > maxMaleSalary) {
maxMaleSalary = people[i].salary;
}
if (people[i].salary < minMaleSalary) {
minMaleSalary = people[i].salary;
}
} else {
if (people[i].salary > maxFemaleSalary) {
maxFemaleSalary = people[i].salary;
}
if (people[i].salary < minFemaleSalary) {
minFemaleSalary = people[i].salary;
}
}
}
// Вычисление разницы между максимальной и минимальной заработной платой мужчин и женщин
double diff = maxMaleSalary - minMaleSalary - (maxFemaleSalary - minFemaleSalary);
cout << "Разница между максимальной и минимальной заработной платой мужчин и женщин: " << diff << endl;