Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
1 / 1 / 1
Регистрация: 06.09.2015
Сообщений: 83
1

Класс Human

19.11.2015, 10:02. Просмотров 2030. Ответов 7
Метки нет (Все метки)

создать класс human состоящий из полей
-имя
-фамилия
-дата рождения
-пол
-национальность
Класс должен иметь скрытую для сторонних методов и классов функции для вычисления возраста человека и защишенную функцию для вывода возраста человека на экран
Помогите с решением...

Добавлено через 31 минуту
помогите пожалуйста
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.11.2015, 10:02
Ответы с готовыми решениями:

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

Создать класс Human состоящий из 3 полей. Как найти возраст?
создать класс Human состоящий из 3 полей -дата рождения -пол -национальность Класс Human должен...

Класс Human. Выбрать всех людей, старше 30 лет и с определенным индексом массы
Пишу программу которая способом итерации находит решение, при этом в начале необходимо удалить...

Структура Human (хранение, сортировка)
Привет! Сам текст задания звучит так: Реализовать структуру Human, которая должна содержать...

7
18 / 11 / 8
Регистрация: 07.09.2013
Сообщений: 63
19.11.2015, 10:43 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
#include <iostream>
#include <sys/time.h>
#include <ctime>
 
using namespace std;
 
class human {
private:
  string name;
  string surname;
  unsigned short year;
  unsigned short month;
  unsigned short day;
  string gender;
  string race;
 
  int age(class human a)
  {
    int y, m, d;
    int y1, m1, d1;
    time_t now = time(0);
    tm *ltm = localtime(&now);
 
    y = 1900 + ltm->tm_year;
    m = 1 + ltm->tm_mon;
    d = ltm->tm_mday;
 
    y1 = y - year;
    if (m < month || (m == month && d < day))
      y1--;
    return y1;
  }
 
public:
  human()
  {
    name = "";
    surname = "";
    year = 0;
    month = 0;
    day = 0;
    gender = "";
    race = "";
  }
  ~human() {}
 
  void add(string name1, string surname1, unsigned short year1,
                                          unsigned short month1,
                                          unsigned short day1,
                                          string gender1, string race1)
  {
    name = name1;
    surname = surname1;
    year = year1;
    month = month1;
    day = day1;
    gender = gender1;
    race = race1;
  }
 
protected:
  void outAge(class human a)
  {
    cout << age(a);
  }
};
 
class hmn : public human {
public:
  void useProtectedFunction(class human a)
  {
    outAge(a);
    cout << endl;
  }
};
 
int main()
{
  human a;
  hmn y;
  y.add("serega", "petrov", 1913, 12, 12, "mujik", "beliy");
  y.useProtectedFunction(y);
  return 0;
}
3
1 / 1 / 1
Регистрация: 06.09.2015
Сообщений: 83
19.11.2015, 11:01  [ТС] 3
неправильно работает...
0
18 / 11 / 8
Регистрация: 07.09.2013
Сообщений: 63
19.11.2015, 11:04 4
что именно?
0
1 / 1 / 1
Регистрация: 06.09.2015
Сообщений: 83
19.11.2015, 11:09  [ТС] 5
выходит 101!
а мне надо было сделать так
сначала имя выходит, потом фамилия и т.д и возраст соответственно
0
18 / 11 / 8
Регистрация: 07.09.2013
Сообщений: 63
19.11.2015, 11:24 6
ну да, 101 - это возраст добавленного хумана.
про остальной вывод вы вообще ни слова не сказали...

Добавлено через 10 минут
исправил
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  string age(class human a)
  {
    int y, m, d;
    int y1, m1, d1;
    string out = "";
    time_t now = time(0);
    tm *ltm = localtime(&now);
 
    y = 1900 + ltm->tm_year;
    m = 1 + ltm->tm_mon;
    d = ltm->tm_mday;
 
    y1 = y - year;
    if (m < month || (m == month && d < day))
      y1--;
    out += name + " " + surname + " " + to_string(y1) + " " + gender + " " + race;
    return out;
  }
1
2540 / 1199 / 358
Регистрация: 30.11.2013
Сообщений: 3,819
19.11.2015, 11:58 7
na1l, вот ваш код - только читабельнее

Кликните здесь для просмотра всего текста
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
#include <iostream>
#include <time.h>
#include <ctime>
 
using namespace std;
 
 
 
// ----------------------------------------------------------------------------------------------------
const std::string EMPTY_STRING = "";
// ----------------------------------------------------------------------------------------------------
 
 
 
 
// ----------------------------------------------------------------------------------------------------
class Human
{
public:
    enum eGender
    {
        NOSET,
        
        FEMALE,
        MALE,
        ALIEN,
    };
    struct Date
    {
    private:
        static const Date sIncorrectDate;
 
    public:
        typedef unsigned short tYear;
        typedef unsigned short tMounth;
        typedef unsigned short tDay;
 
        static Date getIncorrectDate()
        {
            return sIncorrectDate;
        }
 
        tYear                   _year;
        tMounth                 _month;
        tDay                    _day;
 
        Date(tDay day, tMounth mounth, tYear year) :
            _day(day)
            , _month(mounth)
            , _year(year)
        {
 
        }
        
    };
private:
    std::string                 m_name;
    std::string                 m_surname;
    std::string                 m_race;
    Date                        m_birthDayDate;
    eGender                     m_gender;
    
    int calculateAge() const
    {
        time_t now = time(0);
        tm *ltm = new tm();
        localtime_s( ltm, &now);
        
        int y = 1900 + ltm->tm_year;
        int m = 1 + ltm->tm_mon;
        int d = ltm->tm_mday;
 
        int y1 = y - m_birthDayDate._year;
        if(m < m_birthDayDate._month || (m == m_birthDayDate._month && d < m_birthDayDate._day))
            y1--;
        return y1;
    }
 
    void setName(const std::string& set)
    {
        m_name = set;
    }
    void setSurname(const std::string& set)
    {
        m_surname = set;
    }
    void setGender(const eGender& set)
    {
        m_gender = set;
    }
    void setRace(const std::string& set)
    {
        m_race = set;
    }
    void setBirthdayDate(const Date& set)
    {
        m_birthDayDate = set;
    }
    void setBirthdayDate(const Date::tDay& day, const Date::tMounth& mounth, const Date::tYear& year)
    {
        setBirthdayDate(Date(day, mounth, year));
    }
public:
 
    Human() :
  m_name(EMPTY_STRING)
, m_surname(EMPTY_STRING)
, m_race(EMPTY_STRING)
, m_gender(NOSET)
, m_birthDayDate(Date::getIncorrectDate())
    {
        
    }
 
 
    ~Human()
    {
    }
 
 
 
    void add(string name1, string surname1, unsigned short year1,
             unsigned short month1,
             unsigned short day1,
             Human::eGender gender1, string race1)
    {
        m_name = name1;
        m_surname = surname1;
        m_gender = gender1;
        m_race = race1;
        m_birthDayDate = Date(day1, month1, year1);
    }
 
protected:
    void outAge()
    {
        cout << calculateAge() << endl;
    }
};
const Human::Date Human::Date::sIncorrectDate = Date(-1,-1,-1);
// ----------------------------------------------------------------------------------------------------
 
 
 
 
 
 
 
// ----------------------------------------------------------------------------------------------------
class SpeacialHuman : public Human
{
public:
    void useProtectedFunction()
    {
        this->outAge();     
    }
};
// ----------------------------------------------------------------------------------------------------
 
 
int main()
{   
    SpeacialHuman special;
    special.add("serega", "petrov", 1913, 12, 12, Human::eGender::MALE, "beliy");
    special.useProtectedFunction();
    return 0;
}
1
18 / 11 / 8
Регистрация: 07.09.2013
Сообщений: 63
19.11.2015, 19:13 8
rikimaru2013, спасибо, просто я не особо разбираюсь, но пытаюсь помочь людям как могу
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.11.2015, 19:13

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Найти ошибку в Class Human
Найдите ошибку: Class Human{ int Age; string Name; public: Human() {} }

Human Time to Unix Timestamp
Запутался с переводом времени /* Перевод времени из формата %d.%m.%y %H:%M:%S (UTC) * в метку...

Написать программу, работающую с массивом струтур human
Есть задание –создать программу, которая будет использовать структуру human с элементами surname,...

Написать код программы для реализации класса human
Написать код программы для реализации класса human с атрибутами класса имя и возраст и методами...

Не могу вывести значения строк/переменных из класса human
Здравствуйте, дорогие форумчане. Я работаю над кодом класса human, но дошел до момента, когда...

Нужно изменить class human под изменение строк/переменных в ходе использования
Здравствуйте, дорогие форумчане. У меня есть готовый код класса human, но вот только нужно его...


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

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

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