Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Nevermind_qqq
72 / 58 / 24
Регистрация: 25.06.2014
Сообщений: 358
#1

Класс Human. Выбрать всех людей, старше 30 лет и с определенным индексом массы - C++

26.06.2014, 00:07. Просмотров 401. Ответов 4
Метки нет (Все метки)

Пишу программу которая способом итерации находит решение, при этом в начале необходимо удалить неподходящие объекты. Можно ли реализовать это с помощью классов и как(с массивами более-менее получается). Если кто-нибудь решит спонтанно придуманный мной пример, это очень поможет мне разобраться.
Если это возможно решить задачу с помощью классов.
Например.
Есть 4 человека (класс Human), имеющих параметры Имя(name) , возраст(age) , вес(weight) , рост(height).
Алексей-23 года-70 кг-1.76 м , Виталий - 28 лет - 82 кг - 1.8 м , Валерий - 42 года - 85 кг - 1.76 см ,Игорь - 18 лет - 65 кг - 1.7 м
1)Удалить всех, кто старше 30 лет
2)Найти подбором того у кого индекс массы (BMI=weight/(height*height)) больше 22 и меньше 23(независимо от числа решений нужно только первое, при этом программа должна подбирать начиная с тех у кого масса больше(я так понимаю нужен еще один параметр для сортировки))
Программа должна быть рассчитана на n-ое число объектов класса Human.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.06.2014, 00:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Класс Human. Выбрать всех людей, старше 30 лет и с определенным индексом массы (C++):

Сведения об абонентах старше 25 лет в алфавитном порядке - C++
Всем доброго вечера, нашел программу в интернете, сперва она у меня запустилась, но после последующих запусков стала ругаться на printf и...

Класс Human - C++
создать класс human состоящий из полей -имя -фамилия -дата рождения -пол -национальность Класс должен иметь скрытую для...

Определите на сколько лет самый взрослый работник старше самого младшего - C++
Не могу найти ошибку в коде Вводится натуральное число N. После этого вводится возраст n работников. Определите на сколько лет старше...

Работа с файлами: найти сотрудников, чей возраст старше 45 или стаж превышает 20 лет - C++
работа с файлами поместить в файл n записей, содержащих сведения о сотрудниках: ФИО, год рождения, стаж работы. Найти сотрудников, чей...

Класс human. Ссылка на неразрешенный внешний символ - C++
Есть код программы. Но при компиляции он выдает ошибки: 1>File1.obj : error LNK2019: ссылка на неразрешенный внешний символ "public:...

SQL-запрос "выбрать из таблицы людей, которые старше 25 лет" - MS Access
Здравствуйте. Скажите пожалуйста, как выбрать из таблицы людей, которые старше 25 лет, дата рождения занесена в поле birthday? SELECT...

4
BatonPro
30 / 30 / 24
Регистрация: 21.06.2014
Сообщений: 81
26.06.2014, 01:46 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#include <iostream>
#include <list>
#include <string>
using namespace std;
 
class Human
{
private:
    string name;
    int age;
    int weight;
    double height;
public:
    Human(){name="";age=0;weight=0;height=0;}
    Human(Human& hmn)
    {
        this->name=hmn.name;
        this->age=hmn.age;
        this->weight=hmn.weight;
        this->height=hmn.height;
    }
    Human(string& name,int age,int weight,double height)
    {
        this->name=name;
        this->age=age;
        this->weight=weight;
        this->height=height;
    }
    double getBMI()
    {
        return weight/(height*height);
    }
    
    bool operator > (Human& hmn)
    {
        if (this->weight>hmn.weight)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    bool operator < (Human& hmn)
    {
        if (this->weight<hmn.weight)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    bool operator == (Human& hmn)
    {
        if (this->weight==hmn.weight)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    Human& operator = (Human& hmn)
    {
        
        this->name=hmn.name;
        this->age=hmn.age;
        this->weight=hmn.weight;
        this->height=hmn.height;
    }
 
    friend ostream& operator <<(ostream& out,Human& hmn)
    {
        out<<"Имя:"<<hmn.name<<endl;
        out<<"Возраст:"<<hmn.age<<endl;
        out<<"Вес:"<<hmn.weight<<endl;
        out<<"Рост:"<<hmn.height<<endl;
        out<<"BMI="<<hmn.getBMI()<<endl;
        return out;
    }
 
 
};
 
int main()
{
    setlocale(LC_ALL,"Russian");
    list<Human> List1;
    list<Human>::iterator i;
    double BMI;
    List1.push_back(Human((string)"Алексей",23,70,1.76));
    List1.push_back(Human((string)"Виталий",28,82,1.8));
    List1.push_back(Human((string)"Валерий",42,85,1.76));
    List1.push_back(Human((string)"Игорь",18,65,1.7));
 
    List1.sort();
    List1.reverse();
    for(i= List1.begin();i!=List1.end();i++)
    {
         BMI=(*i).getBMI();
         if(BMI>22 && BMI<23)
         {
             cout<<*i;
             break;
         }
    }
    return 0;
}
1
Nevermind_qqq
72 / 58 / 24
Регистрация: 25.06.2014
Сообщений: 358
26.06.2014, 02:01  [ТС] #3
BatonPro, спасибо буду разбираться
0
Nevermind_qqq
72 / 58 / 24
Регистрация: 25.06.2014
Сообщений: 358
01.07.2014, 16:01  [ТС] #4
хотелось бы еще увидеть пример функции erase( "1)Удалить всех, кто старше 30 лет")

Добавлено через 5 часов 10 минут
и по какому из свойств объекта сортирует List1.sort(); ?
0
BatonPro
30 / 30 / 24
Регистрация: 21.06.2014
Сообщений: 81
01.07.2014, 17:15 #5
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Удаление можно сделать так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#include <iostream>
#include <list>
#include <string>
using namespace std;
 
class Human
{
private:
    string name;
    int age;
    int weight;
    double height;
public:
    Human(){name="";age=0;weight=0;height=0;}
    Human(Human& hmn)
    {
        this->name=hmn.name;
        this->age=hmn.age;
        this->weight=hmn.weight;
        this->height=hmn.height;
    }
    Human(string& name,int age,int weight,double height)
    {
        this->name=name;
        this->age=age;
        this->weight=weight;
        this->height=height;
    }
    double getBMI()
    {
        return weight/(height*height);
    }
    int getAge()
    {
        return age;
    }
    bool operator > (Human& hmn)
    {
        if (this->weight>hmn.weight)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    bool operator < (Human& hmn)
    {
        if (this->weight<hmn.weight)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    bool operator == (Human& hmn)
    {
        if (this->weight==hmn.weight)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    Human& operator = (Human& hmn)
    {
        
        this->name=hmn.name;
        this->age=hmn.age;
        this->weight=hmn.weight;
        this->height=hmn.height;
    }
 
    friend ostream& operator <<(ostream& out,Human& hmn)
    {
        out<<"Имя:"<<hmn.name<<endl;
        out<<"Возраст:"<<hmn.age<<endl;
        out<<"Вес:"<<hmn.weight<<endl;
        out<<"Рост:"<<hmn.height<<endl;
        out<<"BMI="<<hmn.getBMI()<<endl;
        return out;
    }
 
 
};
 
class OlderThan
{
    int age;
public:
    OlderThan(int _age): age(_age){}
    bool operator()( Human& hmn)
    {
        if(hmn.getAge() > age)
            return true;
        else
            return false;
    }
};
 
 
int main()
{
    setlocale(LC_ALL,"Russian");
    list<Human> List1;
    list<Human>::iterator i;
    double BMI;
    List1.push_back(Human((string)"Алексей",23,70,1.76));
    List1.push_back(Human((string)"Виталий",28,82,1.8));
    List1.push_back(Human((string)"Валерий",42,85,1.76));
    List1.push_back(Human((string)"Игорь",18,65,1.7));
 
    List1.remove_if(OlderThan(30));
    
    for(i= List1.begin();i!=List1.end();i++)
    {
        cout<<*i;   
    }
    cout<<endl<<"----------------------"<<endl;
    List1.sort();
    List1.reverse();
    for(i= List1.begin();i!=List1.end();i++)
    {
         BMI=(*i).getBMI();
         if(BMI>22 && BMI<23)
         {
             cout<<*i;
             break;
         }
    }
    return 0;
}
sort() - сортирует объекты с помощью операторов сравнения, в данном случае они перегружены так, что сортировка идет по весу.
1
01.07.2014, 17:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.07.2014, 17:15
Привет! Вот еще темы с ответами:

Вывести людей, старше 30 лет. - Prolog
Доброго времени суток. Помогите справится с задачкой. Задание: необходимо изменить условие так, чтобы программа вывела всех людей,...

Составьте программу для вывода на экран фамилий людей, старше 50 лет - PascalABC.NET
Результаты переписи населения хранятся в массивах F и GR. Составьте программу для вывода на экран фамилий людей, старше 50 лет. Для...

Определить кто из людей старше по количеству полных лет, зная их даты рождения - QBasic
Здравствуйте. Известны даты рождения 2х человек, определить кто старше по количеству полных лет. Как я понял это нужно ещё и...

Выборка SQL Foxpro муж от 60 лет старше и жен от 55 лет и старше - MySQL
Помогите сделать запрос sql муж от 60 лет старше и жен от 55 лет и старше одним запросом Добавлено через 5 минут SELECT * FROM...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru