C/C++

Программирование С++ помогите пожалуйста!

В населенном пункте проживает N человек. О каждом известны фамилия, возраст, пол. Ввести информацию о жителях данного пункта и посчитать количество женщин и мужчин, вывести информацию о тех, кого больше.
C7
Cac 777
97
#include <iostream>
#include <string>
#include <vector>
using namespace std;
void flush(istream& inp) {
inp.ignore(inp.rdbuf()->in_avail());
}
struct Person {
char sex;
short age;
string name;
Person() : sex('-'), age(0), name("-") {}
friend istream& operator>>(istream& inp, Person& p) {
cout << "Фамилия: ";
getline(inp, p.name);
cout << "Возраст, полных лет: ";
inp >> p.age;
flush(inp);
cout << "Пол, м/ж: ";
p.sex = inp.get();
flush(inp);
return inp;
}
friend ostream& operator<<(ostream& out, const Person& p) {
return out << p.name << ", " << p.age << " лет, " << p.sex;
}
};
class Persons {
public:
void add(const Person& p) {
box.push_back(p);
}
size_t man()const {
auto n = 0U;
for (auto& x : box) if (x.sex == 'м') ++n;
return n;
}
size_t woman()const {
auto n = 0U;
for (auto& x : box) if (x.sex == 'ж') ++n;
return n;
}
void show(const char sex)const {
for (auto& x : box) if (x.sex == sex) cout << x << '\n';
}
void show()const {
for (auto& x : box) cout << x << '\n';
}
private:
vector<Person> box;
};
int main() {
system("chcp 1251 > nul");
cout << "Количество жителей: ";
size_t n;
cin >> n;
flush(cin);
Persons list;
Person human;
for (auto i = 0U; i < n; ++i) {
cin >> human;
list.add(human);
}
puts("");
if (list.man() > list.woman()) {
list.show('м');
} else if (list.man() < list.woman()) {
list.show('ж');
} else {
puts("\tПоровну!");
list.show();
}
system("pause > nul");
}
Евгений Шкабров
Евгений Шкабров
96 002
Лучший ответ
формируешь массив и потом считаешь тех у кого пол женский
RB
Romka Badalov
58 680