Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <string>
- using namespace std;
- typedef vector<string> vecstr; // добавление шаблона для типа данных vector<string>
- struct Body{
- Body(string F, int age, bool sex){
- this->F = F;
- this->age = age;
- this->sex = sex;
- }; // Конструктор для структуры. this - указатель на члены структуры , а не на члены функции.
- string F;
- int age;
- bool sex;
- static const bool male = false;
- static const bool female = true; // статичные переменные для определения пола
- };
- vecstr split(string str, string substr = " "){ // функция для разделения строки на вектор строк
- vecstr result;
- str += substr;
- int ssl = substr.length();
- int sl = str.length();
- int sub = 0;
- for (int i = 0; i < sl; i++){
- string buff = str.substr(i, ssl);
- if (buff == substr) {
- i+=ssl - 1;
- result.push_back(str.substr(i-sub+1, sub-1));
- sub = 0;
- }
- sub++;
- }
- return result;
- }
- int main(){
- vector<Body> city; // вектор жителей города
- vecstr data = split("Первый 12 0 Второй 19 0 Третяя 22 1 Четвертый 15 0 Пятый 19 0");
- for(int i = 0; i!=data.size()/3; i++){
- bool sex;
- if (data[3*i+2] == "1") sex = Body::female;
- else sex = Body::male; // чтение из строки пола
- Body body(data[3*i], stoi(data[3*i+1]), sex); // создание класса
- city.push_back(body); //добавление класса в вектор классов
- }
- double malemid = 0;
- double femalemid = 0;
- int femcount = 0;
- int malecount = 0;
- for(auto v : city){ // цикл for основанный на длинне вектора city, auto - самоподставляющийся тип данных
- if (v.sex == Body::male) {malecount++; malemid+=v.age;}
- else {femcount++; femalemid+=v.age;} // суммарный возвраст и кол-во
- }
- cout << "Колличество женщин " << femcount << endl;
- cout << "Колличество мужчин " << malecount << endl;
- malemid /= malecount;
- femalemid /= femcount; //вычисление среднего возвраста
- cout << "Средний возвраст женщин " << femalemid << endl;
- cout << "Средний возвраст мужчин " << malemid << endl;
- cout << "\nСписок мужчин, чьих возвраст выше среднего" << endl;
- for(auto v: city){ // вывод списков
- if (v.sex == Body::male and v.age > malemid){
- cout << v.F << endl;
- }
- }
- cout << "\nСписок женщин, чьих возвраст выше среднего" << endl;
- for(auto v: city){
- if (v.sex == Body::female and v.age < femalemid){
- cout << v.F << endl;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement