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

Классы с виртуальными функциями. Class Student

05.11.2016, 22:28. Показов 2226. Ответов 5
Метки нет (Все метки)

Создать класс Студент со свойствами: ФИО, Факультет, Курс, минималь-
ная оценка по экзаменам за последнюю сессию (по 5-ти бальной системе).
Определить виртуальные методы: «Перевести на следующий курс», увели-
чивающий курс на 1, если минимальная оценка не менее 3, иначе не
делающий ничего, а также «Стипендия», возвращающий стипендию (в
$): 0 $, если минимальная оценка не выше 3, 15$, если минималь-
ная оценка равна 4 и 30 $, если минимальная оценка равна 5
(Если значение поля курс установлено 0, то "Стипендия" равна 0. Опреде-
лить также метод «Информация», который возвращает строку,
содержащую информацию о студенте: ФИО, Факультет, Курс, минималь-
ная оценка по экзаменам и начисленную стипендию, либо: ФИО и строку
"Больше не студент" (в случае, если значение курса 0).

Создать также класс наследник Студент-контрактник, в котором будет
дополнительный логический параметр – уплачен ли контракт и переопре-
делены методы «Перевести на следующий курс», увеличивающий курс на
1, если минимальная оценка не менее 3 и долг за обучение равен 0,
иначе не делающий ничего (Если курс равен 5, то установить значение курса в 0,
значение поля факультет сделать пустой строкой; при попытке перевода с текущим
значение курса 0 не производить никаких действий,
а также метод «Стипендия» возвращающий всегда 0 $.

Переопределить метод "Информация" , который выводит строку,
содержащий информацию о студенте: ФИО, факультет, курс, минимальная оценка
по экзаменам и долг за обучение,
либо: ФИО и строку "Больше не студент" (в случае, если значение курса 0).
В главной программе (либо по нажатию на кнопку) создать 2 объекта класса
Студент и 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
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
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
#include<stdio.h>
#include<conio.h>
#include<locale.h>
#include<time.h>
#include<stdlib.h>
#include<string.h>
#include<windows.h>
#include <math.h>
 
//=================KLASS==================//
class Student
{
    protected:
    char *FIO;
    char *facult;
    int kurs;
    int min_grade;
    
    public:
//-------------Constructor--------------//
         Student(char *FIO, char *facult, int kurs, int min_grade)        //wiht parameters
         {  
           this->FIO=new char[strlen(FIO)+1];
           strcpy(this->FIO,FIO);
           
           this->facult=new char[strlen(facult)+1];
           strcpy(this-> facult, facult);
           
           this->kurs=kurs;
 
           this->min_grade=min_grade;
         }
         
        Student()                // without parameters
         {
           this->FIO=new char(0);
           this->facult=new char(0);
           this->kurs=0;
           this->min_grade=0;
         }
//-------------Set-------------------//
        void set_FIO(char *FIO)
         {
           delete(this->FIO=FIO);
           this->FIO=new char[strlen(FIO)+1]; // dinamic mamory allocation
           strcpy(this->FIO,FIO);
        }
        
        void set_facult(char *facult)
         {
           delete(this->facult=facult);
           this->facult=new char[strlen(facult)+1]; // dinamic mamory allocation
           strcpy(this->facult,facult);
        }
 
        void set_kurs (int kurs)
         {
           this->kurs=kurs;
         } 
         
        void set_min_grade (int min_grade)
         {
           this->min_grade=min_grade;
         }
//-------------Get-------------------//
        char *get_FIO()
         {
           return(this->FIO);
         } 
         
        char *get_facult()
         {
           return(this->facult);
         }
 
        int get_kurs()
         {
           return(this->kurs);
         }
         
            int get_min_grade()
         {
           return(this->min_grade);
         }
         
//-------------Let to go in next kurs-------------------//
        virtual void next_course ()
        {
            if (min_grade>=3)
                {
                kurs = kurs+1;
                }
                else if (kurs==5)
                    {
                    kurs=0;
                    facult=NULL;
                    }
        }
 
 //----------------Stipend-------------------//set_kurs(get_kurs()+10);
        virtual int Stipend ( )
        {   
            int Stipend;
            if (min_grade<=3)
                Stipend=0;
            else if (min_grade==4)
                Stipend=15;
            else if (min_grade==5)
                Stipend=30;
            
            if (kurs==0)
                Stipend=0;
            else
            return (Stipend);
        }
//-----------info_method-------------------//
        void ShowStudent()
         {
            if (Stipend==0)
            printf("\n|FIO:%s-is no longer a student",this->FIO);
            else 
            printf("\n|FIO:%s|facult:%s|kurs:%d|min grade:%d|Stipend:%d|", this->FIO,this->facult, this->kurs, this->min_grade);
        
         }
//-----------Destructor-------------------//
        ~ Student()
         {
            delete(this->FIO);
         }           
};
 
//========================================//
//==========Derived Class=============//
class Student_contractor: public Student
{
    protected:
    int debt;
    public:
//-------------Constructor---------------//
        Student_contractor(int debt): Student(*FIO,*facult, int kurs, int min_grade)       //wiht parameters
         { 
            this->debt=debt;
         
         }
         
        Student_contractor(): Student()   // without parameters
         {  this->debt;}
 
 
//-------------Set-------------------//
     
        void set_debt (int debt)
         {
           this->debt=debt;
         } 
         
    
//-------------Get-------------------//
        int debt()
         {
           return(this->debt);
         } 
         
//-------------Let to go in next kurs-------------------//  
         void next_course ()
        {
            if (min_grade>=3 && debt==0)
                {
                kurs = kurs+1;
                }
                else (kurs==5)
                {
                    kurs=0;
                    facult=NULL;
                }
        }
 //----------------Stipend-------------------//set_kurs(get_kurs()+10);
        int Stipend ()
        {   
            
            return (0);
        }
//-----------info_method-------------------//
        void Show_Student_contractor()
         {
            printf("\n|FIO:%s|facult:%s|kurs:%d|min grade:%d|debt:%d|", this->FIO,this->facult, this->kurs, debt);
                if (kurs==0)
            {
                printf("\n|FIO:%s-is no longer a student",this->FIO);
            }
            
         }
                 
//-----------Destructor-------------------//
        ~Student_contractor()
         {    }
};
//========================================//
 
main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);       
    srand(time(0));
    
    Student *S = new Student ("Student", 140);
    S->ShowStudent();
    S->next_course ();
    S->Stipend(23);
    S->ShowStudent();
    
    Student *S1 = new Student ("Student", 14);
    S1->ShowStudent();
    S1->next_course ();
    S1->Stipend(15);
    S1->ShowStudent();
    
    Student_contractor *A1=new Student_contractor("Student_contractor", 160);
    A1->Show_Student_contractor();
    A1->Show_next_course ();
    A1->Show_Student_contractor();
    
    Student_contractor *A2=new Student_contractor("Student_contractor", 12);
    A2->Show_Student_contractor();
    A2->Show_next_course ();
    A2->Show_Student_contractor();
 
    
    system ("pause");
    return(0);  
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.11.2016, 22:28
Ответы с готовыми решениями:

Проблема с виртуальными функциями
Привет. Столкнулся с небольшой проблемой, касательно виртуальных функций. Стыдно спрашивать, ибо...

Работа с виртуальными функциями
Доброго времени суток, форумчани! Помогите мне, пожалуйста, с задачей, у меня просто нет этой темы,...

Задачка с наследованием и виртуальными функциями
Диаграмма классов на приложенном рисунке. #include &lt;iostream&gt; class IData { public:...

Неправильный вывод при работе с виртуальными функциями
В общем, учу плюсы по книге Праты. Там есть одно задание по виртуальным функциям. Но дело сейчас не...

5
2548 / 1207 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
05.11.2016, 22:39 2
Zohan1234567, вопрос будет то?
0
0 / 0 / 0
Регистрация: 09.07.2016
Сообщений: 26
05.11.2016, 23:00  [ТС] 3
Вопрос в том, что не работает!
Компилятор останавливается на ошибке в 119 строке. А почему не верно не пойму

Добавлено через 1 минуту
Переменная в данной функции не инициализирована наверное.
0
Комп_Оратор)
Эксперт по математике/физике
8760 / 4502 / 605
Регистрация: 04.12.2011
Сообщений: 13,431
Записей в блоге: 16
05.11.2016, 23:03 4
Цитата Сообщение от Zohan1234567 Посмотреть сообщение
Компилятор останавливается на ошибке в 119 строке. А почему не верно не пойму
Вы хоть знаете что он пишет. А нам не говорите. Забавно наблюдать как дядьки морщат лбы?
Ну тут и без диагностического сообщения ясно, что Ваша ShowStudent() понятия не имеет что такое Stipend и не переваривает:
Stipend==0
А у Вас как со Stipend? Нормально?
Ещё раз взглянул и подумалось, а может Вы имели ввиду:
Stipend()==0
?
0
0 / 0 / 0
Регистрация: 09.07.2016
Сообщений: 26
05.11.2016, 23:08  [ТС] 5
Подскажите ошибки. Хотя бы парочку. Please
0
Комп_Оратор)
Эксперт по математике/физике
8760 / 4502 / 605
Регистрация: 04.12.2011
Сообщений: 13,431
Записей в блоге: 16
05.11.2016, 23:09 6
Цитата Сообщение от Zohan1234567 Посмотреть сообщение
Подскажите ошибки. Хотя бы парочку. Please
Do not understand russian?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.11.2016, 23:09
Помогаю со студенческими работами здесь

Реализовать абстрактный класс pair c виртуальными арифметическими функциями
Вот задание: Создать абстрактный базовый класс Pair с виртуальными арифметическими операциями....

Создать абстрактный базовый класс Point с указанными виртуальными функциями
Доброго времени суток! Есть у меня задачка: Если с ф-цией draw и area мне все понятно, то как...

Создать абстрактный базовый класс с виртуальными функциями - площадь и периметр
Помогите написать,не врублюсь как писать много пропустил (( Задание:Создать абстрактный базовый...

Создать абстрактный базовый класс Body (тело) с виртуальными функциями вычисления площади поверхности и объема
Напишите эту программу пожалуйста. Создать абстрактный базовый класс Body (тело) с виртуальными...


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

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

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