0 / 0 / 0
Регистрация: 21.12.2015
Сообщений: 9
1

Создать класс Person со свойствами name, gender, age, married и методами чтения/установки этих свойств

12.03.2016, 02:58. Показов 3756. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание:
Создать класс Person со свойствами
name, gender, age, married
и методами чтения/установки этих свойств.
Добавить метод Print - распечатка сведений о человеке
Код:
Person.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <string>
#ifndef PERSON_H
#define PERSON_H
class Person
{
private:
    bool gender, married;
    std::string name[3];
    int age;
public:
    int GetAge() { return age; }
    std::string GetName() { return name[2]; }
    void GetGen(int g) { if (g) gender = false; else gender = true; }
    void GetMar(int m) { if (m) married = false; else married = true; }
    void Check();
    void SetAge(int);
    void SetName(std::string);
    void Print();
    
};
#endif
Person.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include "Person.h"
 
void Person::Check()
{
    if (gender) name[0] = "Male";
    else name[0] = "Female";
    if (married) name[1] = "Married";
    else name[1] = "Single";
}
void Person::Print()
{
    std::cout << "Name: " << Person::GetName() << " Age: " << age << " " << name[0] << " " << name[1];
    
}
void Person::SetAge(int _a)
{
    _a = age;
}
void Person::SetName(std::string _str)
{
    _str = name[2];
}
usrPerson.cpp
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
#include <iostream>
#include <string>
#include "Person.h"
 
int main()
{
    int _g,_m;
    int _a = 10;
    std::string str;
    Person a;
    std::cout << "Input your name: \n";
    std::cin >> str;
    a.SetName(str);
    std::cout << "Input your age: \n";
    std::cin >> _a;
    a.SetAge(_a);
    std::cout << "Input your gender: \n 0 - Male, 1 - Female\n";
    std::cin >> _g;
    a.GetGen(_g);
    std::cout << "Input your marrige: \n 0 - Married, 1 - Single \n";
    std::cin >> _m;
    a.GetMar(_m);
    a.Check();
    a.Print();
    return 0;
}
Выводит все, кроме age(Возраста) и имени(string name). Т.к новенький, сложно понять, потому что код компилируется и все значения присваиваются.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.03.2016, 02:58
Ответы с готовыми решениями:

Создать свой класс с методами и свойствами
Разработать структуру объекта &quot;Газовая колонка&quot;. Объект должен иметь не менее пяти методов и не...

Создайте производный класс с дополнительными полями, конструктором по умолчанию и методами чтения/изменения значений этих полей
Помогите! Завтра экзамен,времени нет! Заранее спасибо. 11. На базе заданного класса создайте...

Определить абстрактный класс Shape с абстрактными свойствами и методами
Определить абстрактный класс Shape с абстрактными свойствами и методами: абстрактные свойства...

Параметр Gender типа Lab5.Gender (enum)
- авто-сгенерированный параметр только для чтения Gender типа Lab5.Gender (enum) - Enum...

6
Вездепух
Эксперт CЭксперт С++
10896 / 5894 / 1612
Регистрация: 18.10.2014
Сообщений: 14,785
12.03.2016, 03:01 2
Цитата Сообщение от neronv2 Посмотреть сообщение
все значения присваиваются.
Откуда и куда они присваиваются? У вас в 'SetAge' и 'SetName' присваивания написаны задом-наперед.
0
183 / 182 / 56
Регистрация: 10.06.2011
Сообщений: 871
12.03.2016, 07:36 3
neronv2, в SetName вы вообще хотите запихнуть в char - string.
0
0 / 0 / 0
Регистрация: 21.12.2015
Сообщений: 9
13.03.2016, 18:14  [ТС] 4
Ryuk, не совсем понимаю, string - это библиотечная функция массивов из char
0
183 / 182 / 56
Регистрация: 10.06.2011
Сообщений: 871
13.03.2016, 21:19 5
neronv2, я говорю о том, что вы пытаетесь запихнуть массив в 1 элемент массива того же типа.
0
Вездепух
Эксперт CЭксперт С++
10896 / 5894 / 1612
Регистрация: 18.10.2014
Сообщений: 14,785
13.03.2016, 21:28 6
Лучший ответ Сообщение было отмечено neronv2 как решение

Решение

Цитата Сообщение от Ryuk Посмотреть сообщение
я говорю о том, что вы пытаетесь запихнуть массив в 1 элемент массива того же типа.
Вы говорите что-то непонятное. Где вы увидели какое-то "запихивание массива"?

Здесь

C++
1
_str = name[2];
один std::string присваивается другому std::string.

Другое дело, что присваивания в вышеупомянутых функциях записаны задом-наперед (потому программа и не работает). Но никаких проблем с "запихиванием массива" в коде нет.
0
183 / 182 / 56
Регистрация: 10.06.2011
Сообщений: 871
13.03.2016, 21:31 7
Пардон, не заметил что там тоже массив стрингов.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.03.2016, 21:31
Помогаю со студенческими работами здесь

Создать абстрактный базовый класс Тройка чисел с виртуальными методами увеличения на 1. Создать производный класс Время со своими функциями
Здравствуйте, пожалуйста помогите написать код к данной задаче, с таким условием: Создать...

Создать класс Person с полями: ФИО, дата рождения. Создать два производных от него класса
Создать класс Person с полями: ФИО, дата рождения. Создать два производных от него класса: студент...

Создать класс Person с методом IntroduceYourSelf ()
Доброго времени суток. Столкнулся с такой проблемой. Недавно начал изучать C#. Задание было такое:...

Создать класс Person с полями name,surname,year
Нужно создать класс Person с полями name,surname,year, реализовать конструктор по умолчанию , с...

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

Создать класс Person для ввода фамилии и имя человека
Здравствуйте. Что-то не получается, ошибки выскакивают, именно в заголовочном файле при...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru