Задача:
В населенном пункте проживает N человек. О каждом известны фамилия, возраст, пол. Ввести информацию о жителях данного пункта и посчитать количество женщин и мужчин, вывести информацию о средний возраст мужчин, напечатать фамилии тех мужчин, чей возраст ниже среднего.
Как реализовать ее условие?
Создаете структуру с фамилией, возрастом и полом. Создаете массив где будете хранить объекты структур, считываете и заполняете структуры. Параллельно суммировать возраст мужчин, после чего, поделить сумму возрастов на кол-во мужчин, и пройтись еще раз по массиву, выводя имена тех у кого возраст ниже среднего значения
Пример:
#include <string>
#include <iostream>
#include <list>
struct Human{
enum class Gender{
Male = 1,
Female = 2
};
Human(int age = 0, Gender gender = Gender::Male, const std::string&
lastName = {}):
age{age},
gender{gender},
lastName{lastName}
{}
Human(const Human& other):
age{other.age},
gender{other.gender},
lastName{other.lastName}
{}
Human& operator=(const Human& other){
if (this != &other){
age = other.age;
gender = other.gender;
lastName = other.lastName;
}
return *this;
}
int age;
Gender gender;
std::string lastName;
};
Human readFromUser(){
int age;
int gender;
std::string lastName;
std::cout << "Enter gender of human:\n"
<< "1 - Male\n"
<< "2 - Female" << std::endl;
std::cin >> gender;
std::cout << "Enter age of human:\n";
std::cin >> age;
std::cout << "Enter lastName of human:";
std::cin >> lastName;
return Human(age, static_cast<Human::Gender>(gender), lastName);
}
int main()
{
std::cout << "Enter number of humans:";
int n;
std::cin >> n;
std::list<Human> humans;
for (int i = 0; i < n; i++){
humans.push_back(readFromUser());
}
double ageSum = 0.0;
int maleCount = 0;
int femaleCount = 0;
//считаем сумму возрастов мужчин,
//а заодно и количество женщин и мужчин
for (const auto& h: humans){
switch (h.gender) {
case Human::Gender::Female: //женщины
femaleCount++;
break;
case Human::Gender::Male:
ageSum += static_cast<double>(h.age);
maleCount++;
break;
default:
break;
}
}
double ageAvg = 0.0;
if (maleCount != 0){
ageAvg = ageSum / static_cast<double>(maleCount);
}
std::cout << "male count: " << maleCount << std::endl;
std::cout << "female count: " << femaleCount << std::endl;
std::cout << "ageAvg:" << ageAvg << std::endl;
std::cout << "list of lastnames:" << std::endl;
for (const auto& h: humans){
if (h.gender == Human::Gender::Male){
if (static_cast<double>(h.age) < ageAvg){
std::cout << "age: " << h.age << " lastname:" << h.lastName << std::endl;
}
}
}
}
Пример использования:
Enter number of humans:10
Enter gender of human:
1 - Male
2 - Female
1
Enter age of human:
45
Enter lastName of human:ivanov
Enter gender of human:
1 - Male
2 - Female
1
Enter age of human:
25
Enter lastName of human:Egorov
Enter gender of human:
1 - Male
2 - Female
2
Enter age of human:
19
Enter lastName of human:Smirnova
Enter gender of human:
1 - Male
2 - Female
1
Enter age of human:
38
Enter lastName of human:Sidorov
Enter gender of human:
1 - Male
2 - Female
1
Enter age of human:
25
Enter lastName of human:Petrov
Enter gender of human:
1 - Male
2 - Female
2
Enter age of human:
36
Enter lastName of human:Barabash
Enter gender of human:
1 - Male
2 - Female
1
Enter age of human:
26
Enter lastName of human:Skladanov
Enter gender of human:
1 - Male
2 - Female
1
Enter age of human:
27
Enter lastName of human:Karlov
Enter gender of human:
1 - Male
2 - Female
2
Enter age of human:
59
Enter lastName of human:Poroshina
Enter gender of human:
1 - Male
2 - Female
1
Enter age of human:
45
Enter lastName of human:Petrov
male count: 7
female count: 3
ageAvg:33
list of lastnames:
age: 25 lastname:Egorov
age: 25 lastname:Petrov
age: 26 lastname:Skladanov
age: 27 lastname:Karlov
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Пытаюсь загрузить аудиофайл через api вк (с++, qt)Загрузка на сайт проходит нормально, но при попытке вызвать метод api
Не могу придумать идею для решения данной задачи, ищу помощи
Здравствуйте, как правильно передавать параметр в функцию потокаТо есть как передать "а" в метод Func? Я читал что вроде бы 4 параметр метода...
Есть простенькая программа на с++Есть три класса, один содержит приватными полями 2 других