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

Виртуальные функции (создать массив указателей на объекты трех классов) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Написать программу вычисления Площади кольца. Программа должна проверять правильность исходных данных. http://www.cyberforum.ru/cpp-beginners/thread736377.html
Написать программу вычисления Площади кольца. Программа должна проверять правильность исходных данных. Ниже представлен рекомендуемый вид экрана во время работы программы (данные,введенные...
C++ наибольшее значение отношения трёхзначного числа к сумме его цифр ребят помогите пожалуста:),Составить программу.которая находит наибольшее значение отношения трёхзначного числа к сумме его цифр(на циклы) http://www.cyberforum.ru/cpp-beginners/thread736371.html
C++ нужно упростить (Найти сумму S первой группы смежных равных элементов)
#include <stdio.h> #include <conio.h> #include <vcl.h> #define size 21 void input_array(int array, int n); void output_array(int array, int n); bool processing(int array, int n); int main()
функции у=2х на отрезке от а до b с шагом c C++
Составить программу, выводящую значения функции у=2х на отрезке от а до b с шагом c Вводятся значения a, b (целые числа) и c (вещественное). Выводится список значений
C++ Поменять местами первый и последний столбец.Определить MaX http://www.cyberforum.ru/cpp-beginners/thread736363.html
в этой проге поменять нада,максимум уже нашёл) #include "stdafx.h" #include "math.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv) {setlocale(0,"RUS");
C++ Работа со ссылками #include "stdafx.h" #include "stdio.h" int _tmain() { float v1,v2; float S,t; printf("vvedite rastoyanie i vremya\n"); if (scanf("%f%f",&S,&t)==2) { подробнее

Показать сообщение отдельно
absurd_logik
0 / 0 / 0
Регистрация: 18.12.2012
Сообщений: 11

Виртуальные функции (создать массив указателей на объекты трех классов) - C++

18.12.2012, 10:32. Просмотров 1833. Ответов 14
Метки (Все метки)

Задание: создать массив указателей на объекты трех классов. Метод Show почему-то не переопределяется. В данном коде вводится 3 элемента в массив: Имя-Группа, Имя-Группа-4 оценки, Имя-Группа-4 оценки-4 оценки.

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
#include <iostream>
 
using namespace std;
 
class Student
{
protected:
    char *Name;
    int Group;
public: 
    Student () 
    {
        Name = NULL;
        Group = 0;
    }
    Student (int x, char *y)
    {
        Group = x;
        Name = y;
    }
    ~Student(){};
    virtual void Show()
    {
        cout << "Name: " << Name << endl << "Group: " << Group << endl;
    }
};
Student1.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
30
31
32
33
34
35
36
37
38
39
40
41
#include "Student.h"
class Student1:public Student 
{
protected:
    int marks1[4];
public:
    Student1 (): Student ()
    {
        for (int i=0; i<4; i++)
        {
            marks1[i]=0;
        }
    }
    Student1 (int x, char *y, int m1[4]):Student (x,y)
    {
        for (int i=0; i<4; i++)
        {
            marks1[i]=m1[i];
        }
    }
    ~Student1 () {};
    void Show() 
    {
        Student::Show();
        double ave = this->average();
        cout << "Marks: ";
        for(int i=0; i<4; i++)
        {
            cout << marks1[i] << " ";
        }
        cout << endl;
        cout << "The average: " << ave << endl; 
    }
    virtual double average()
    {
        double ave=0;
        for (int i=0; i<4; i++)
        ave += marks1[i];
        return ave/4;
    }
};
Student2.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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
include "Student1.h"
 
class Student2: public Student1
{
protected:
    int marks2[4];
public:
    Student2 (): Student1 ()
    {
        for (int i=0; i<4; i++)
        {
            marks2[i]=0;
        }
    }
    Student2 (int x, char *y, int m1[4], int m2[4]): Student1 (x, y, m1)
    {
        for (int i=0; i<4; i++)
        {
            marks2[i]=m2[i];
        }
    }
    ~Student2 () {};
    void Show();
    double average();
};
 
void Student2::Show()
{
    double ave=this->average();
    cout << "Marks: ";
    for(int i=0;i<4;i++)
    {
        cout << marks1[i] << " ";
    }
    for(int i=0;i<4;i++)
    {
        cout << marks2[i] << " ";
    }
    cout << endl;
    cout << "The average: " << ave << endl; 
}
 
double Student2::average()
{
    double ave=0;
    for (int i=0;i<4;i++)
    ave += (marks1[i] + marks2[i]);
    return ave/8;
}
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
#include "Student2.h"
#include <conio.h>
void main ()
{
    Student *mass[3];
    for (int i=0; i<2; i++)
    {
        char name[20];
        int group, mark1[4], mark2[4];
        cout << "Vvedite informaciu o treh studentah (Imia, gruppa; Imia, gruppa, ocenki; Imia, gruppa, ocenki, ocenki.)" << endl;
        cin >> name >> group;
        mass[i++] = &Student (group, name);
        cin >> name >> group;
        for (int a=0; a<4; a++)
        {
            cin >> mark1[a];
        }
        mass[i++] = &Student1 (group, name, mark1);
        cin >> name >> group;
        for (int b=0; b<4; b++)
        {
            cin >> mark1[b];
        }
        for (int c=0; c<4; c++)
        {
            cin >> mark2[c];
        }
        mass[i] = &Student2 (group, name, mark1, mark2);
    }
    for (int i=0; i<3; i++)
    {
        mass[i]->Show();
    }
 
 
    getch();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.