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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Написать программу вычисления Площади кольца. Программа должна проверять правильность исходных данных. http://www.cyberforum.ru/cpp-beginners/thread736377.html
Написать программу вычисления Площади кольца. Программа должна проверять правильность исходных данных. Ниже представлен рекомендуемый вид экрана во время работы программы (данные,введенные пользователем,выделенны полужирным шрифтом Вычислите площади кольца. Введите исходные данные: Радиус кольца (см)-->3.5 Радиус отверстия (см)-->7
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
18.12.2012, 10:32     Виртуальные функции (создать массив указателей на объекты трех классов)
Задание: создать массив указателей на объекты трех классов. Метод 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();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 04:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru