Odpowiedź :
Odpowiedź:
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <numeric>
struct Person {
std::string m_name;
std::string m_surname;
int m_age;
std::string m_city;
std::string m_gender;
Person(const std::string &name, const std::string &surname, const int age, const std::string &city,
const std::string &gender) :
m_name(name), m_surname(surname), m_age(age), m_city(city), m_gender(gender) {};
};
void printYoungest(const std::vector<Person>
&tab) {
auto youngest = *std::min_element(tab.begin(), tab.end(), [](const Person &a, const Person &b) {
return a.m_age < b.m_age;
});
std::cout << youngest.m_name << std::endl
<< youngest.m_surname << std::endl
<< youngest.m_age << std::endl
<< youngest.m_city << std::endl
<< youngest.m_gender << std::endl;
}
void printOldest(const std::vector<Person> &tab) {
auto oldest = *std::max_element(tab.begin(), tab.end(), [](const Person &a, const Person &b) {
return a.m_age < b.m_age;
});
std::cout << oldest.m_name << std::endl
<< oldest.m_surname << std::endl
<< oldest.m_age << std::endl
<< oldest.m_city << std::endl
<< oldest.m_gender << std::endl;
}
void printAverageAge(const std::vector<Person> &tab) {
int sum = std::accumulate(tab.begin(), tab.end(), 0, [](int sum, const Person &b) {
sum += b.m_age;
return sum;
});
std::cout << 1.0 * sum / tab.size() << std::endl;
}
void printManInfo(const std::vector<Person> &tab) {
std::for_each(tab.begin(), tab.end(), [](const Person &a) {
if (a.m_gender == "man") {
std::cout << a.m_name << std::endl
<< a.m_surname << std::endl
<< a.m_age << std::endl
<< a.m_city << std::endl
<< a.m_gender << std::endl;
}
});
}
void printWomanInfo(const std::vector<Person> &tab) {
std::for_each(tab.begin(), tab.end(), [](const Person &a) {
if (a.m_gender == "woman") {
std::cout << a.m_name << std::endl
<< a.m_surname << std::endl
<< a.m_age << std::endl
<< a.m_city << std::endl
<< a.m_gender << std::endl;
}
});
}
void menu(const std::vector<Person> &tab) {
int option = -1;
std::cout << "Wpisz 0 - 5 w zaleznosci co chcesz zrobic\n";
while (option != 0) {
std::cin >> option;
switch (option) {
case 0:
break;
case 1:
printYoungest(tab);
break;
case 2:
printOldest(tab);
break;
case 3:
printAverageAge(tab);
break;
case 4:
printManInfo(tab);
break;
case 5:
printWomanInfo(tab);
break;
default:
std::cout << "Podano nieodpowiedni numer\n";
}
}
}
int main() {
auto person1 = Person("Adam", "Dada", 27, "Lublin", "man");
auto person2 = Person("Wojtek", "Golas", 34, "Warszawa", "man");
auto person3 = Person("Zosia", "Samosia", 18, "Gdansk", "woman");
auto person4 = Person("Lola", "Koala", 57, "Katowice", "woman");
auto person5 = Person("Bartek", "Pokaz", 51, "Wroclaw", "man");
std::vector<Person> people = {person1, person2, person3, person4, person5};
menu(people);
return 0;
}
Wyjaśnienie:
Mało punktów dałeś, a zajęło mi to 117 linijek, więc jak dasz naj, to będę wdzięczny :)