
Задан массив данных следующей структуры: Фамилия; Год рождения; Адрес; Мужчина: 1) военный; 2)
заработная плата Женщина: 1) количество детей, 2) замужем или нет, 3) заработная плата. Составить программу с использованием структуры данных, которая обеспечивает ввод полученной информации, вывод ее в виде таблицы и обнаружение разницы между максимальной и минимальной заработной платой мужчин и женщин.В С++

Ответы на вопрос

Приведенный ниже код на 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;



Ниже приведен пример программы на языке C++, которая реализует указанные требования. Программа использует структуру данных для хранения информации о людях и их характеристиках. Затем программа обрабатывает эту информацию и выводит ее в виде таблицы. В конце программа находит разницу между максимальной и минимальной заработной платой мужчин и женщин.
cpp#include <iostream>
#include <string>
#include <vector>
struct Person {
std::string surname;
int birthYear;
std::string address;
char gender; // 'M' for male, 'F' for female
union {
struct {
bool isMilitary;
double salary;
} maleData;
struct {
int numChildren;
bool isMarried;
double salary;
} femaleData;
};
};
int main() {
std::vector<Person> people;
// Ввод информации о людях
int numPeople;
std::cout << "Введите количество людей: ";
std::cin >> numPeople;
for (int i = 0; i < numPeople; ++i) {
Person person;
std::cout << "Введите фамилию: ";
std::cin >> person.surname;
std::cout << "Введите год рождения: ";
std::cin >> person.birthYear;
std::cout << "Введите адрес: ";
std::cin >> person.address;
std::cout << "Введите пол (M - мужчина, F - женщина): ";
std::cin >> person.gender;
if (person.gender == 'M') {
std::cout << "Военный? (1 - да, 0 - нет): ";
std::cin >> person.maleData.isMilitary;
std::cout << "Введите заработную плату: ";
std::cin >> person.maleData.salary;
} else if (person.gender == 'F') {
std::cout << "Введите количество детей: ";
std::cin >> person.femaleData.numChildren;
std::cout << "Замужем? (1 - да, 0 - нет): ";
std::cin >> person.femaleData.isMarried;
std::cout << "Введите заработную плату: ";
std::cin >> person.femaleData.salary;
}
people.push_back(person);
}
// Вывод информации в виде таблицы
std::cout << "\nИнформация о людях:\n";
std::cout << "---------------------------------------------------------\n";
std::cout << "Фамилия\t\tГод рождения\tАдрес\t\t\tПол\t\tЗарплата\n";
std::cout << "---------------------------------------------------------\n";
for (const Person& person : people) {
std::cout << person.surname << "\t\t"
<< person.birthYear << "\t\t"
<< person.address << "\t\t"
<< (person.gender == 'M' ? "Мужчина\t\t" : "Женщина\t\t");
if (person.gender == 'M') {
std::cout << (person.maleData.isMilitary ? "Военный\t" : "


Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili