C/C++
Программирование С++ помогите пожалуйста!
В населенном пункте проживает N человек. О каждом известны фамилия, возраст, пол. Ввести информацию о жителях данного пункта и посчитать количество женщин и мужчин, вывести информацию о тех, кого больше.
#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");
}
#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");
}
формируешь массив и потом считаешь тех у кого пол женский
Похожие вопросы
- Программирование С++ помогите пожалуйста
- Программирование С++. Помогите, пожалуйста, решить задачу.
- Программирование С++. Помогите, пожалуйста, написать код (по-проще как-нибудь)
- Программирование С++, помогите,пожалуйста
- Программирование пожалуйста быстрее, и блок схему нужно тоже, помогите пожалуйста
- Программирование C++.Помогите решить пожалуйста
- Программирование помогите пожалуйста. Подскажите формулу к d
- Помогите пожалуйста сделать задачу по программированию C++
- Помогите пожалуйста с программированием на C++
- Здравствуйте помогите пожалуйста программирование c++