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

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

Войти
Регистрация
Восстановить пароль
 
LordSilren
0 / 0 / 0
Регистрация: 25.11.2011
Сообщений: 32
#1

Наследование - C++

07.06.2013, 07:50. Просмотров 359. Ответов 5
Метки нет (Все метки)

Доброе утро всем.
Есть готовая рабочая программа
"Студент. Преподаватель. Человек"
нужно закоментить код, не могу разобраться в нем

Man.h
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
#ifndef MAN_H
#define MAN_H
 
#include<iostream>
#include <string.h>
using namespace std;
 
class Man
{
public:
    Man();
    Man(int _age, int _gender);
    Man(int _age, int _gender,char *_name); 
    Man(const Man &x);
    ~Man();
 
    friend istream& operator >> (istream& in, Man &x);
    friend ostream& operator << (ostream& out, Man &x);
 
    virtual void Show() = 0;
    virtual void Get();
 
public:
    char *name;
    int gender;
    int age;
};
 
#endif MAN_H


Man.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
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
#include "Man.h"
 
 
Man::Man() {name = new char[30];}
 
Man::Man(int _age, int _gender) // конструктор с параметрами
{
    age = _age;
    gender = _gender;
    name = new char[30];
}
 
Man::Man(int _age, int _gender,char *_name) // конструктор с параметрами
{
    age = _age;
    gender = _gender;
    name = new char[30];
    strcpy(name, _name);
}
 
Man::Man(const Man &x)// конструктор копирования
{
    age = x.age;
    gender = x.gender;
    name = new char[30];
    strcpy(name, x.name);
}
 
 
Man::~Man()
{
    delete name;
}
 
 
void Man:: Show()
{
    cout << "/////////////////////////\n" << endl;
    cout << "Возраст: " << age << endl;
    if(gender == 1) cout << "Пол: мужской" << endl;
    if(gender == 2) cout << "Пол: женский" << endl;
    cout << "Имя: " << name << endl;
    cout << "\n/////////////////////////" << endl;
}
 
void Man::Get()
{
    cout << "Введите возраст" << endl;
    cin >> age;
    
    while(true)
    {
        cout << "Выберите пол:\n" << endl;
        cout << "1: мужской" << endl << "2: женский" << endl;
        cin >> gender;
        if((gender != 1) && (gender != 2)) cout << "неверный ввод!" << endl;
        else break;
    }
 
    cout << "Введите имя" << endl;
    cin >> name;
}
 
istream& operator >> (istream& in, Man &x)
{
    cout << "Введите возраст" << endl;
    in >> x.age;
    
    while(true)
    {
        cout << "Выберите пол:\n" << endl;
        cout << "1: мужской" << endl << "2: женский" << endl;
        in >> x.gender;
        if((x.gender != 1) && (x.gender != 2)) cout << "неверный ввод!" << endl;
        else break;
    }
 
    cout << "Введите имя" << endl;
    in >> x.name;
    return in;
}


Student.h
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
#pragma once
#ifndef STUDENT_H
#define STUDENT_H
#include "man.h"
class Student :
    public Man
{
public:
    Student();
    Student(int _form, int _lvl);
    Student(int _form, int _lvl, char *_prof);
    ~Student(void);
 
    Student New_Prof();
    int End();
    void Get();
    void Show();
 
    friend istream& operator >> (istream &in, Student &x);
public: 
    int form;
    int lvl;
    char *prof;
};
 
#endif STODENT_H


Student.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
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
#include "Student.h"
 
Student::Student()
{
    prof = new char[20];
}
Student::Student(int _form, int _lvl)
{
    form = _form;
    lvl = _lvl;
    prof = new char[20];
}
 
Student::Student(int _form, int _lvl, char *_prof) 
{
    form = _form;
    lvl = _lvl;
    prof = new char[20];
    strcpy(prof, _prof);
}
 
Student Student::New_Prof ()
{
    delete [] prof;
    prof = new char [20];
    cin >> prof;
    return *this;
}
 
int Student:: End()
{
    int e;
    e = 4 - lvl;
    return e;
}
 
void Student:: Get()
{
    cout << "Введите возраст" << endl;
    cin >> age;
    
    while(true)
    {
        cout << "Выберите пол:\n" << endl;
        cout << "1: мужской" << endl << "2: женский" << endl;
        cin >> gender;
        if((gender != 1) && (gender != 2)) cout << "неверный ввод!" << endl;
        else break;
    }
 
    cout << "Введите имя" << endl;
    cin >> name;
 
    cout << "Введите специальность:" << endl;
    cin >> prof;
 
    while(true)
    {
        cout << "Выберите форму обучения:\n" << endl;
        cout << "1: очная" << endl << "2: заочная" << endl << "3: экстернат" << endl << "4: очно - заочная" << endl;
        cin >> form;
        if((form != 1) && (form != 2) && (form != 3) && (form != 4)) cout << "Неверный ввод!" << endl;
        else break;
    }
 
    cout << "Введите курс:" << endl;
    cin >> lvl;
}
 
istream& operator >> (istream &in, Student &x)
{
    cout << "Введите возраст" << endl;
    in >> x.age;
    
    while(true)
    {
        cout << "Выберите пол:\n" << endl;
        cout << "1: мужской" << endl << "2: женский" << endl;
        in >> x.gender;
        if((x.gender != 1) && (x.gender != 2)) cout << "неверный ввод!" << endl;
        else break;
    }
 
    cout << "Введите имя" << endl;
    in >> x.name;
 
    cout << "Введите специальность:" << endl;
    in >> x.prof;
 
    while(true)
    {
        cout << "Выберите форму обучения:\n" << endl;
        cout << "1: очная" << endl << "2: заочная" << endl << "3: экстернат" << endl << "4: очно - заочная" << endl;
        in >> x.form;
        if((x.form != 1) && (x.form != 2) && (x.form != 3) && (x.form != 4)) cout << "Неверный ввод!" << endl;
        else break;
    }
 
    cout << "Введите курс:" << endl;
    in >> x.lvl;
 
    
 
    return in;
}
 
void Student:: Show()
{
    cout << "/////////////////////////\n" << endl;
 
    cout << "Возраст: " << age << endl;
    if(gender == 1) cout << "Пол: мужской" << endl;
    if(gender == 2) cout << "Пол: женский" << endl;
    cout << "Имя: " << name << endl;
 
    cout << "Специальность: " << prof << endl;
    
    switch(form)
    {
        case 1:
            cout << "Очная форма обучения" << endl;
            break;
        
        case 2:
            cout << "Заочная форма обучения" << endl;
            break;
 
        case 3:
            cout << "Экстернат" << endl;
            break;
 
        case 4:
            cout << "Очно - заочная форма обучения" << endl;
            break;
    }
 
    cout << "Курс: " << lvl << endl;
 
    cout << "\n/////////////////////////" << endl;
}
 
Student::~Student(void)
{
}


Teacher.h
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
#pragma once
#ifndef TEACHER_H
#define TEACHER_H
#include "man.h"
 
class Teacher : public Man
{
public:
    Teacher(void);
    Teacher(float _pay);
    Teacher(float _pay, char *_post);
    ~Teacher(void);
 
    friend istream& operator >> (istream& in, Teacher &x);
 
    void Show();
    void Get();
 
    void New_Post();
    void New_Pay();
 
public:
    char *post;
    float pay;
};
 
#endif TEACHER_H


Teacher.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
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
#include "Teacher.h"
 
Teacher::Teacher()
{
    post = new char[20];
}
 
Teacher::Teacher(float _pay)
{
    pay = _pay;
    post = new char[20];
}
 
Teacher::Teacher(float _pay, char *_post)
{
    pay = _pay;
    post = new char[20];
    strcpy(post, _post);
}
 
void Teacher:: Show()
{
    cout << "/////////////////////////\n" << endl;
 
    cout << "Возраст: " << age << endl;
    //out << "Пол: " << x.gender << endl;
    if(gender == 1) cout << "Пол: мужской" << endl;
    if(gender == 2) cout << "Пол: женский" << endl;
    cout << "Имя: " << name << endl;
    cout << "Должность: " << post << endl;
    cout << "Зар. плата: " << pay << endl;
 
    cout << "\n/////////////////////////" << endl;
}
 
void Teacher::New_Post()
{
    delete [] post;
    post = new char[20];
    cin >> post;
}
 
void Teacher:: New_Pay()
{
    cin >> pay;
}
 
Teacher::~Teacher(void)
{
    delete [] post;
}
 
void Teacher::Get()
{
    cout << "Введите возраст" << endl;
    cin >> age;
    while(true)
    {
        cout << "Выберите пол:\n" << endl;
        cout << "1: мужской" << endl << "2: женский" << endl;
        cin >> gender;
        if((gender != 1) && (gender != 2)) cout << "НЕВЕРНЫЙ ВВОД!" << endl;
        else break;
    }
 
    cout << "Введите имя" << endl;
    cin >> name;
    cout << "Укажите должность преподавателя: " << endl;
    cin >> post;
    cout << "Зарплата" << endl;
    cin >> pay;
}
 
istream& operator >> (istream& in, Teacher &x)
{
    cout << "Введите возраст" << endl;
    in >> x.age;
    while(true)
    {
        cout << "Выберите пол:\n" << endl;
        cout << "1: мужской" << endl << "2: женский" << endl;
        in >> x.gender;
        if((x.gender != 1) && (x.gender != 2)) cout << "НЕВЕРНЫЙ ВВОД!" << endl;
        else break;
    }
 
    cout << "Введите имя" << endl;
    in >> x.name;
    cout << "Укажите должность преподавателя: " << endl;
    in >> x.post;
    cout << "Зарплата" << endl;
    in >> x.pay;
    return in;
}


Main.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
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
#include <locale.h>
#include "Teacher.h"
#include "Man.h"
#include "Student.h"
int main()
{
    setlocale(LC_ALL, "Russian");
 
    Man *pmas[2]; int x, t, s;
    Teacher T; Student S;
    /*T.Get(); 
    T.Show();
    T.Show();
    /*pmas[0] = new Teacher(); 
    pmas[1] = new Student();
    pmas[0] ->Get();
    pmas[0] -> Show();
    pmas[1] ->Get();
    pmas[1] -> Show();*/
 
    while(1)
    {
        cout << "1: Преподаватель\n" << "2: Студент\n" << "3: Выход\n"; 
        cin >> x;
        switch(x)
        {
            case 1:
                T.Get();
                T.Show();
                while(1)
                {
                    cout << "1: Сменить должность\n" << "2: Сменить зарплату\n" << "3: Выход\n";
                    cin >> t;
                    switch(t)
                    {
                    case 1:
                        cout <<"Введите новую должность";
                        T.New_Post();
                        T.Show();
                        break;
                    case 2:
                        cout <<"Введите новую зарплату";
                        T.New_Pay();
                        T.Show();
                        break;
                    case 3:
                        break;
                    default:
                        cout << "неверный ввод\n";
                    }
                    if(t == 3) break;
                }
                break;
            
            case 2:
                S.Get();
                S.Show();
                while(1)
                {
                    cout << "1: Сменить специальность\n" << "2: Сколько еще учиться\n" << "3: Выход\n";
                    cin >> s;
                    switch(s)
                    {
                    case 1:
                        cout <<"Введите новую специальность\n";
                        S.New_Prof();
                        S.Show();
                        break;
                    case 2: 
                        int z;
                        z = S.End();
                        cout << "Осталось единиц времени: " << z << endl;
                        break;
                    case 3:
                        break;
                        //exit(0);
                    default:
                        cout << "неверный ввод\n";
                    }
                    if(s == 3) break;
                }
                break;
 
            case 3:
                exit(0);
            
            default:
                cout<<"Неверный ввод\n"; 
            break;
        }
    }
    return 0;
}


буду очень признателен за помощь
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2013, 07:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Наследование (C++):

Заменить наследование классов на наследование интерфейсов - C++
#include &lt;iostream&gt; #include &lt;assert.h&gt; using namespace std; int people_on_base = 100; int vehicles_on_base = 100; double...

Наследование - C++
char* Texts :: SetBit() { char a; int b; cout &lt;&lt; &quot;Получаем битовую строку&quot; &lt;&lt; endl; cin &gt;&gt; a; b = strlen(a);...

наследование - C++
Пытаюсь разобраться в наследовании Есть класс class File { public: struct comp { char num; // Имя переменной char st;...

Наследование - C++
Всем привет. Может кто нибудь подсказать с чего начать при создании класса для работы с файлами на подобии ostream( а точнее как правильно...

наследование - C++
определить базовый класс ''точка''. Затем от него определить два произвольных класса ''прямоугольник'' и ''параллелепипед'', в каждом из...

Наследование?! - C++
привет всем. Есть класс Circle c1, c2, c3 Нужно реализовать через наследование класс множество, прошу помочь как он будет выглядеть...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Croessmah
Эксперт CЭксперт С++
13237 / 7509 / 847
Регистрация: 27.09.2012
Сообщений: 18,448
Записей в блоге: 3
Завершенные тесты: 1
07.06.2013, 08:08 #2
C++
1
2
3
/*
Тут код
*/
1
LordSilren
0 / 0 / 0
Регистрация: 25.11.2011
Сообщений: 32
07.06.2013, 08:40  [ТС] #3
не смешно( через 2 часа сдавать, а я ничего не знаю(

Добавлено через 25 минут
ребят, выручайте...
0
Pro_ha
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 32
07.06.2013, 09:18 #4
Никто и не смеется, тебе уже дали правильный ответ на _твой_вопрос_
0
LordSilren
0 / 0 / 0
Регистрация: 25.11.2011
Сообщений: 32
07.06.2013, 09:18  [ТС] #5
почти во всем разобрался, только не могу понять..
для чего это?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
istream& operator >> (istream& in, Teacher &x)
{
    cout << "Введите возраст" << endl;
    in >> x.age;
    while(true)
    {
        cout << "Выберите пол:\n" << endl;
        cout << "1: мужской" << endl << "2: женский" << endl;
        in >> x.gender;
        if((x.gender != 1) && (x.gender != 2)) cout << "НЕВЕРНЫЙ ВВОД!" << endl;
        else break;
    }
 
    cout << "Введите имя" << endl;
    in >> x.name;
    cout << "Укажите должность преподавателя: " << endl;
    in >> x.post;
    cout << "Зарплата" << endl;
    in >> x.pay;
    return in;
}
и еще нужно разобраться с Man.h , Student.h , Teacher.h...помогите пожалуйста
0
DarkSkazochnik
3 / 3 / 0
Регистрация: 17.11.2012
Сообщений: 39
07.06.2013, 09:29 #6
LordSilren, это перегрузка оператора получения данных из потока (поправьте, если неправ).

Перегружаешь для того, чтобы из потока данные считывались именно в объекты класса Teacher
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.06.2013, 09:29
Привет! Вот еще темы с ответами:

наследование - C++
Как наследовать классы с использованием виртуальных функций? Можете привести пример?

наследование в С++ - C++
Добрый вечер. относительно недавно мною была получена задача, а точнее несколько задач в одной...И как это ни печально звучит, проблемы...

наследование - C++
помогите пожалуйсто дописать класс многоугольников , и рисовать на монитор с помощью mfc , заранее благодарен... class figure{ public: ...

Наследование в C++ - C++
Прошу помощи, ибо С++ не моё, а лабораторные работы девушке сдавать надо: Создать 1 базовый класс и несколько производных. Все...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
07.06.2013, 09:29
Ответ Создать тему
Опции темы

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