С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/34: Рейтинг темы: голосов - 34, средняя оценка - 4.68
1 / 1 / 0
Регистрация: 30.09.2017
Сообщений: 30
1

Составить класс person

10.03.2018, 17:11. Показов 6415. Ответов 14

Author24 — интернет-сервис помощи студентам
Составить класс person. Переменная типа person должна вмещать следующую информацию про некоторого человека: фамилия, имя и отчество; адрес; год рождения; телефон; рост; вес; пол. Создать функции для выполнения след. операций: консольное введение и выведение значений типа person; инициализация. Создать динамический массив, который содержить информацию про некоторую группу людей. Подсчитать кол-во мужчин и женщин (friend-функция)

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
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <string.h>
 #include <cstdlib>
using namespace std;
class person
{
    char *year;
    char *phone;
    char *height;
    char *weight;
    char *PIB;
    char *adress;
    char *sex;
public:
person()
{
    year = new char[4];
     strcpy(year, "2000");
    phone = new char[10];
     strcpy(phone, "111-22-33");
    height = new char[3];
     strcpy(height, "173");
    weight = new char[3];
     strcpy(weight, "65");
    PIB = new char[30];
     strcpy(PIB, "Pupkin Petro Petrovich");
    adress = new char[25];
     strcpy(adress, "vul.Krasnaya 14/114");
    sex = new char[1];
     strcpy(sex, "0");
}
~person()
{
     delete [] year;
     delete [] phone;
     delete [] height;
     delete [] weight;
     delete [] PIB;
     delete [] adress;
     delete [] sex;
    cout << "Delete" << endl;  
}
     void input();
     void show();
     friend person mas(person obj1, person obj2, person obj3, person obj4);
     friend person sex(person obj1, person obj2, person obj3, person obj4);
};
 
void person::input()
{
    cout<<"Year of birth:";
    for(int i=0;i<3;i++)
    cin>>year[i];
    cout<<"Phone number:";
    for(int i=0;i<9;i++)
    cin>>phone[i];
    cout<<"Height:";
    for(int i=0;i<2;i++)
    cin>>height[i];
    cout<<"Weight:";
    for(int i=0;i<2;i++)
    cin>>weight[i];
    cout<<"PIB:";
    for(int i=0;i<29;i++)
    cin>>PIB[i];
    cout<<"Adress:";
    for(int i=0;i<24;i++)
    cin>>adress[i];
    cout<<"Sex:";
    for(int i=0;i<1;i++)
    cin>>sex[i];
}
void person::show()
{
cout<<"Year of birth:";
    for(int i=0;i<3;i++)
     cout>>year[i];
cout<<"Phone number:";
    for(int i=0;i<9;i++)
     cout>>phone[i];
cout<<"Height:";
    for(int i=0;i<2;i++)
     cout>>height[i];
cout<<"Weight:";
    for(int i=0;i<2;i++)
     cout>>weight[i];
cout<<"PIB:";
    for(int i=0;i<29;i++)
     cout>>PIB[i];
cout<<"Adress:";
    for(int i=0;i<24;i++)
     cout>>adress[i];
cout<<"Sex:";
    for(int i=0;i<1;i++)
     cout>>sex[i];
}
int main()
{
    person m;
    m.input();
    m.show();
    system("pause");
    return 0;
}
Помогие найти ошибки и доделать программу, пожалуйста.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.03.2018, 17:11
Ответы с готовыми решениями:

Создайте класс person. Создайте тип people, описывающий массив элементов типа person.
Создайте класс person. У него должны быть поля: name: string; sex: (&quot;муж&quot;, &quot;жен&quot;); height:...

Реализовать пользовательские типы: класс Person и класс String
1)Разработать класс Person, который содержит соответствующие члены для хранения: имени, ...

Базовый класс PERSON и производный класс STUDENT
Базовый класс: ЧЕЛОВЕК(PERSON) Имя(name) - string Возраст (age) - int Определить методы...

Производный класс Employee и базовый класс Person
Класс Person содержит информацию о человеке - firstName - lastName - age - address -...

14
474 / 426 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
10.03.2018, 21:31 2
Цитата Сообщение от Sasha0001 Посмотреть сообщение
C++
1
2
3
4
5
void person::show() 
{ 
cout<<"Year of birth:"; 
for(int i=0;i<3;i++) cout>>year[i];
...
И ему же подобные далее заменить на
C++
1
cout <<
Оператор вывода "стрелочки" влево.

Если ошибки связаны с strcpy (т.е. не безопасный), можно исп.
C++
1
#define _CRT_SECURE_NO_WARNINGS
Перед всеми #include

Сама реализация конечно чудная. Ввод подвергает шоку)
Для ввода строки есть getline, который ожидает ввод (ограниченного числа символов в твоем случае) до нажатия enter.
C++
1
2
3
cin.getline(year, 3);
cin.getline(phone, 9);
и тд.
0
1 / 1 / 0
Регистрация: 30.09.2017
Сообщений: 30
12.03.2018, 13:17  [ТС] 3
Исправила, осталось добавить функции обьединения обьектов в массив и посчета людей каждого пола
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
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <string.h>
 #include <cstdlib>
using namespace std;
class person
{
    char *year;
    char *phone;
    char *height;
    char *weight;
    char *PIB;
    char *adress;
    char *sex;
public:
person()
{
    year = new char[5];
     strcpy(year, ".2000");
    phone = new char[11];
     strcpy(phone, ".111-22-33");
    height = new char[4];
     strcpy(height, ".173");
    weight = new char[4];
     strcpy(weight, ".65");
    PIB = new char[31];
     strcpy(PIB, ".Osipovich Sasha Olegovna");
    adress = new char[25];
     strcpy(adress, ".vul.Mikoyana14/114");
    sex = new char[8];
     strcpy(sex, ".0");
}
~person()
{
     delete [] year;
     delete [] phone;
     delete [] height;
     delete [] weight;
     delete [] PIB;
     delete [] adress;
     delete [] sex;
    cout << "Delete" << endl;  
}
     void input();
     void show();
     friend person mas(person obj1, person obj2, person obj3, person obj4);
     friend person sex(person obj1, person obj2, person obj3, person obj4);
};
 
void person::input()
{
    cout<<"Year of birth:";
        cin.getline(year, 5);
        cout<<endl;
    cout<<"Phone number:";
        cin.getline(phone, 11);
         cout<<endl;
    cout<<"Height:";
        cin.getline(height, 4);
         cout<<endl;
    cout<<"Weight:";
        cin.getline(weight, 4);
         cout<<endl;
    cout<<"PIB:";
        cin.getline(PIB, 31); 
        cout<<endl;
    cout<<"Adress:";
        cin.getline(adress, 25);
         cout<<endl;
    cout<<"Sex:";
        cin.getline(sex, 8);
         cout<<endl;
}
void person::show()
{
cout<<"Year of birth:";
    for(int i=0;i<5;i++)
     cout<<year[i];
      cout<<endl;
cout<<"Phone number:";
    for(int i=0;i<11;i++)
     cout<<phone[i];
      cout<<endl;
cout<<"Height:";
    for(int i=0;i<4;i++)
     cout<<height[i];
      cout<<endl;
cout<<"Weight:";
    for(int i=0;i<4;i++)
     cout<<weight[i];
      cout<<endl;
cout<<"PIB:";
    for(int i=0;i<31;i++)
     cout<<PIB[i];
      cout<<endl;
cout<<"Adress:";
    for(int i=0;i<25;i++)
     cout<<adress[i];
      cout<<endl;
cout<<"Sex:";
    for(int i=0;i<8;i++)
     cout<<sex[i]; 
     cout<<endl;
}
int main()
{
    person obj1, obj2, obj3, obj4;
    obj1.input();
    obj2.input();
    obj3.input();
    obj4.input();
    obj1.show();
    system("pause");
    return 0;
}
0
1046 / 967 / 153
Регистрация: 10.08.2015
Сообщений: 5,220
12.03.2018, 15:50 4
Цитата Сообщение от Sasha0001 Посмотреть сообщение
cout<<"Sex:"; for(int i=0;i<8;i++) cout<<sex[i]; cout<<endl; }
C++
1
cout << "Sex:" << sex << endl;
0
1 / 1 / 0
Регистрация: 30.09.2017
Сообщений: 30
20.03.2018, 21:00  [ТС] 5
Составить класс person. Переменная типа person должна вмещать следующую информацию про некоторого человека: фамилия, имя и отчество; адрес; год рождения; телефон; рост; вес; пол. Создать функции для выполнения след. операций: консольное введение и выведение значений типа person; инициализация. Создать динамический массив, который содержить информацию про некоторую группу людей. Подсчитать кол-во мужчин и женщин (friend-функция)

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
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <string.h>
 #include <cstdlib>
using namespace std;
class person
{
    char *year;
    char *phone;
    char *height;
    char *weight;
    char *PIB;
    char *adress;
    char *sex;
public:
person()
{
    year = new char[5];
     strcpy(year, ".2000");
    phone = new char[11];
     strcpy(phone, ".111-22-33");
    height = new char[4];
     strcpy(height, ".173");
    weight = new char[4];
     strcpy(weight, ".65");
    PIB = new char[31];
     strcpy(PIB, ".Osipovich Sasha Olegovna");
    adress = new char[25];
     strcpy(adress, ".vul.Mikoyana14/114");
    sex = new char[8];
     strcpy(sex, ".0");
}
     void input();
     void show();
};
 
class persons:public person
{
  public:
persons()
{
person obj1;
person obj2;
person obj3; 
person obj4;    
}
     friend persons sex(person obj1, person obj2, person obj3, person obj4);
     friend persons mas(person obj1, person obj2, person obj3, person obj4);
};
 
persons mas(person obj1, person obj2, person obj3, person obj4) 
{
    char mas* = new char[3][6];
    for(int i=1,j=0; i<5,j<3; i++,j++)
    {
    mas[j][0]=obji.year;
    mas[j][1]=obji.phone;
    mas[j][2]=obji.height;
    mas[j][3]=obji.weight;
    mas[j][4]=obji.PIB;
    mas[j][5]=obji.adress;
    mas[j][6]=obji.sex;
    }
    return 0;
}
 
persons sex(person obj1, person obj2, person obj3, person obj4)
{
for(int i=1; i<5; i++)
{   int man=0, woman=0;
    if(obj1.sex = "m") man=man+1;
    if(obj1.sex = "w") woman=woman+1;
}
cout<<"Man:"<<man<<endl;
cout<<"Woman:"<<woman<<endl;
}
 
void person::input()
{
    cout<<"Year of birth:";
        cin.getline(year, 5);
        cout<<endl;
    cout<<"Phone number:";
        cin.getline(phone, 11);
         cout<<endl;
    cout<<"Height:";
        cin.getline(height, 4);
         cout<<endl;
    cout<<"Weight:";
        cin.getline(weight, 4);
         cout<<endl;
    cout<<"PIB:";
        cin.getline(PIB, 31); 
        cout<<endl;
    cout<<"Adress:";
        cin.getline(adress, 25);
         cout<<endl;
    cout<<"Sex:";
        cin.getline(sex, 8);
         cout<<endl;
}
void person::show()
{
cout<<"Year of birth:"<<year<<endl;
cout<<"Phone number:"<<phone<<endl;
cout<<"Height:"<<height<<endl;
cout<<"Weight:"<<weight<<endl;
cout<<"PIB:"<<PIB<<endl;
cout<<"Adress:"<<adress<<endl;
cout<<"Sex:"<<sex<<endl;
}
 
 
 
int main()
{
    person obj1, obj2, obj3, obj4;
    persons a;
    obj1.input();
    obj2.input();
    obj3.input();
    obj4.input();
    obj1.show();
    a=mas;
    a=sex;
    system("pause");
    return 0;
}
Похоже, с классами у меня все плохо, но может эту программу еще можно подправить?
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
20.03.2018, 21:17 6
Убери persons, сделай обычный массив. И поля в person сделай массивами текстовые и числовыми нетекстовые.
0
8 / 5 / 7
Регистрация: 15.02.2018
Сообщений: 36
20.03.2018, 21:39 7
Допили по этому коду остальное, тут должно быть все интуитивно понятно
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
class Person
{
      private:
              std::string name;
              std::string surname;
              std::string patronymic;
              Date birthday;
      public:
             Person()
             {
                     name = "no name";
                     surname = "no surname";
                     patronymic = "no patronymic";
             }
             Person(std::string fname, std::string lname, std::string patr, Date bday) : 
                    name(fname), surname(lname), patronymic(patr), birthday(bday.getYear(), bday.getMonth(), bday.getDay()){}
                    
             void setName(std::string n){ name = n; }
             void setSurname(std::string s){ surname = s; }
             void setPatronymic(std::string p){ patronymic  = p; }
             void setBirthday(Date * date)
             {
                  birthday.setYear(date -> getYear());
                  birthday.setMonth(date -> getMonth());
                  birthday.setDay(date -> getDay());
             }
             
             std::string getName(){ return name; }
             std::string getSurname(){ return surname; }
             std::string getPatronymic(){ return patronymic; }
             Date getBirthday(){ return birthday; }
                    
             void printPerson()
             {
                  std::cout << surname << " " << name << " " << patronymic << "   "; birthday.printDate();
             }
};
 
int main()
{   
  Date bday(1990, 9, 3); 
  Person p1("Ivan","Ivanov","Ivanovich", bday);
  p1.printPerson(); std::cout << std::endl;
  
        system("PAUSE"); 
        return 0;
}
0
1 / 1 / 0
Регистрация: 30.09.2017
Сообщений: 30
25.03.2018, 16:57  [ТС] 8
Составить класс person. Переменная типа person должна вмещать следующую информацию про некоторого человека: фамилия, имя и отчество; адрес; год рождения; телефон; рост; вес; пол. Создать функции для выполнения след. операций: консольное введение и выведение значений типа person; инициализация. Создать динамический массив, который содержить информацию про некоторую группу людей. Подсчитать кол-во мужчин и женщин (friend-функция)

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
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <string>
#include <cstdlib>
using namespace std;
class person
{
public:
    string year;
    string phone;
    string height;
    string weight;
    string PIB;
    string adress;
    string sex; 
     void input();
     void show();
     friend person sex(person *people, int amount);
};
 
void person::input()
{
    cout<<"Year of birth:";
        getline(cin,year);
        cout<<endl;
    cout<<"Phone number:";
        getline(cin,phone);
         cout<<endl;
    cout<<"Height:";
        getline(cin,height);
         cout<<endl;
    cout<<"Weight:";
        getline(cin,weight);
         cout<<endl;
    cout<<"PIB:";
        getline(cin,PIB); 
        cout<<endl;
    cout<<"Adress:";
        getline(cin,adress);
         cout<<endl;
    cout<<"Sex:";
        getline(cin,sex);
         cout<<endl;
}
void person::show()
{
cout<<"Year of birth:"<<year<<endl;
cout<<"Phone number:"<<phone<<endl;
cout<<"Height:"<<height<<endl;
cout<<"Weight:"<<weight<<endl;
cout<<"PIB:"<<PIB<<endl;
cout<<"Adress:"<<adress<<endl;
cout<<"Sex:"<<sex<<endl;
}
 
person sex(person *people, int amount)
{   
int man = 0; int woman = 0; 
for (int i=0; i << amount; i++) {
if(people[i].sex == "m") man=man++; 
if(people[i].sex == "w") woman=woman++;
}
cout << man << " " << woman;
}
 
int main()
{
    cout << "Amount of people: "; 
    int amount; 
    cin >> amount; 
    cin.ignore(); 
    person *people = new person[amount];
    for(int i=0; i << amount; i++)
    {
        person obj;
        obj.input();
        people[i]=obj;
        obj.show();
    }
    system("pause");
    return 0;
}
Что я делаю не так?
0
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
25.03.2018, 17:00 9
Цитата Сообщение от Sasha0001 Посмотреть сообщение
Что я делаю не так?
а нам откуда знать?
0
1 / 1 / 0
Регистрация: 30.09.2017
Сообщений: 30
25.03.2018, 17:10  [ТС] 10
Код не работает, прошу помочь найти ошибку..
0
Заклинатель змей
705 / 560 / 219
Регистрация: 30.04.2016
Сообщений: 2,605
25.03.2018, 17:25 11
Sasha0001, в чем проявляется "неработание"?
0
474 / 426 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
25.03.2018, 17:29 12
Цитата Сообщение от Sasha0001 Посмотреть сообщение
for (int i=0; i << amount; i++)
Зачем здесь << ?

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
#include <iostream>
#include <string>
 
using namespace std;
 
class person
{
private:
    string _FIO;
    string _adress;
    int _year = 0;
    string _phone;
    double _height;
    double _weight;
    string _sex;
public:
    person();
    void input();
    void show();
    friend int GetMen(person *people, int amount);
    friend int GetWomen(person *people, int amount);
};
 
int GetMen(person* people, int amount)
{
    int count = 0;
    for (int i = 0; i < amount; i++)
        if (people[i]._sex == "m") count++;
    return count;
}
 
int GetWomen(person* people, int amount)
{
    int count = 0;
    for (int i = 0; i < amount; i++)
        if (people[i]._sex == "w") count++;
    return count;
}
 
person::person()
{
    _FIO = "";
    _adress = "";
    _year = 0;
    _phone = "";
    _height = 0.0;
    _weight = 0.0;
    _sex = "";
}
 
void person::input()
{
    cout << "FIO: ";
    getline(cin, this->_FIO);
    cout << "Adress: ";
    getline(cin, this->_adress);
    cout << "Year of birth: ";
    cin >> this->_year;
    cin.ignore();
    cout << "Phone number: ";
    getline(cin, this->_phone);
    cout << "Height: ";
    cin >> this->_height;
    cin.ignore();
    cout << "Weight: ";
    cin >> this->_weight;
    cin.ignore();
    cout << "Sex: ";
    getline(cin, this->_sex);
    cout << endl;
}
void person::show()
{
    cout << "FIO: " << this->_FIO << endl;
    cout << "Adress: " << this->_adress << endl;
    cout << "Year of birth: " << this->_year << endl;
    cout << "Phone number: " << this->_phone << endl;
    cout << "Height: " << this->_height << endl;
    cout << "Weight: " << this->_weight << endl;
    cout << "Sex: " << this->_sex << endl;
    cout << endl;
}
 
int main()
{
    cout << "Amount of people: ";
    int amount;
    cin >> amount;
    cin.ignore();
    person *people = new person[amount];
    for (int i = 0; i < amount; i++)
        people[i].input();
    for (int i = 0; i < amount; i++)
        people[i].show();
    cout << "Men: " << GetMen(people, amount) << endl;
    cout << "Women: " << GetWomen(people, amount) << endl;
    delete[]people;
    system("pause");
    return 0;
}
2
1046 / 967 / 153
Регистрация: 10.08.2015
Сообщений: 5,220
29.03.2018, 01:25 13
Цитата Сообщение от SuperKir Посмотреть сообщение
person();
* * void input();
* * void show();
у вас ребятки талант писать непутевый код! так заставляют делать только преподы в замшелых уневерах...
0
474 / 426 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
29.03.2018, 12:21 14
Цитата Сообщение от vlisp Посмотреть сообщение
у вас ребятки талант писать непутевый код! так заставляют делать только преподы в замшелых уневерах...
Что было у ТС, так и оставил)
0
0 / 0 / 0
Регистрация: 12.10.2021
Сообщений: 103
12.02.2022, 09:27 15
SuperKir, Простите, а как написать эту же программу с использованием конструктора и деструктора?
0
12.02.2022, 09:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.02.2022, 09:27
Помогаю со студенческими работами здесь

Класс Person
Добрый день, форумчане. Решал задание из книги С.Прата, №2 из главы 10. Пусть имеется определение...

Класс Person
Здравствуйте есть одна задачка с вариантом её выполнения. Кто сможет помочь разобратьсяв этом...

Класс Person
Здравствуйте! Задание: Разработать класс Person, который содержит соответствующие члены для...

Класс: создать класс "Person"
1,2 #include &lt;iostream&gt; #include &lt;string&gt; class Person { Person() : name(&quot;Alex&quot;),...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru