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

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

Войти
Регистрация
Восстановить пароль
 
kukhtikov
2 / 2 / 0
Регистрация: 16.12.2012
Сообщений: 97
#1

Проблемы с наследованием классов - C++

20.05.2013, 00:56. Просмотров 352. Ответов 1
Метки нет (Все метки)

1-е задание:
Кликните здесь для просмотра всего текста

Создать класс базовый класс «вещественное число».
Элементы класса (поля имеют статус доступа protected):
поле, задающее значение числа;
конструктор для инициализации поля;
метод для вычисления модуля числа и его печати.
Создать производный класс «комплексное число».
Элементы класса:
дополнительно поле, задающее значение мнимой части числа;
конструктор для инициализации полей;
переопределенный метод для вычисления модуля числа и его печати (модуль числа – корень квадратный из суммы квадратов вещественной и мнимой частей числа).
Создать по 1 объекту каждого из классов. Объявить переменную - указатель, имеющею тип базового класса, вначале настроить ее на объект базового класса, вызвать метод базового класса через указатель на объект. Затем настроить ее на объект производного класса, вызвать метод производного класса через указатель на объект.

Код:
Кликните здесь для просмотра всего текста
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
#include "stdafx.h"
#include <math.h>
#include <Windows.h>
#include <iostream>
#include <conio.h>
using namespace std;
 
class vesh_chis
{
protected:
    double x;
public:
    vesh_chis()
    {
        this->x=0;
    }
    vesh_chis(double a)
    {
        this->x=a;
    }
    double mnim()
    {
        return abs(x);
    }
    void print()
    {
        cout << "Модуль числа :" << mnim() << endl;
        return;
    }
};
 
class comp_chis : public vesh_chis
{
    protected:
    double y;
public:
    comp_chis()
    {
        this->y=0;
    }
    comp_chis(double a, double b) : vesh_chis()
    {
        this->x=a;
        this->y=b;
        
    }
    double ob()
    {
        return sqrt(x*x+y*y);
    }
    void Print()
    {
        cout << "Модуль вещественного и мнимого числа :" << ob() << endl;
        return;
    }
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    
    setlocale (LC_ALL, "rus");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    double x1, y1;
    cout << "Введите число: ";
    cin >> x1;
    cin.sync();
    vesh_chis D1(x1), *d1;
    d1=&D1;
    d1->print();
    cout << endl << endl;
    comp_chis D2(x1, y1), *d2;
    d1=&D2;
    d1->print();
    d2=&D2;
    d2->Print();
    getch();
    return 0;
}

Скажите пожалуйста, в чем ошибка?

2-е задание:
Кликните здесь для просмотра всего текста

Создать класс базовый класс «вектор на плоскости».
Элементы класса (поля имеют статус доступа protected):
поля, задающие координаты точки, определяющей конец вектора (начало вектора находится в точке с координатами 0, 0);
конструктор для инициализации полей;
метод для печати координат вектора.
Создать производный класс «вектор в трехмерном пространстве».
Элементы класса:
дополнительное поле, задающее дополнительную координату;
конструктор для инициализации полей;
переопределенный метод для печати координат вектора.
Создать по 1 объекту каждого из классов. Объявить переменную - указатель, имеющею тип базового класса, вначале настроить ее на объект базового класса, вызвать метод базового класса через указатель на объект. Затем настроить ее на объект производного класса, вызвать метод производного класса через указатель на объект.

Код:
Кликните здесь для просмотра всего текста
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 "stdafx.h"
#include <Windows.h>
#include <locale.h>
#include <string.h>
#include <iostream>
using namespace std;
 
class vekt_na_pl
{
protected:
    double x, y;
public:
    vekt_na_pl()
    {
        this->x=0;
        this->y=0;
    }
    vekt_na_pl(double a, double b)
    {
        this->x=a;
        this->y=b;
    }
    void print()
    {
        cout << "Начальные координаты: x[0]=0, y[0]=0" << endl;
        cout << "Конечные координаты: x[1]=" << x << " y[1]=" << y << endl;
        return;
    }
};
 
class vekt_v_pr : public vekt_na_pl
{
    protected:
    double z;
public:
    vekt_v_pr()
    {
        this->z=0;
    }
    vekt_v_pr(double a, double b, double c) : vekt_na_pl()
    {
        this->x=a;
        this->y=b;
        this->z=c;
    }
    
    void Print()
    {
        cout << "Начальные координаты: x[0]=0, y[0]=0, z[0]=0" << endl;
        cout << "Конечные координаты: x[1]=" << x << "  y[1]=" << y << " z[1]=" << z << endl;
        return;
    }
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale (LC_ALL, "rus");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    double x1, y1, z1;
    cout << "Введите x[1]: ";
    cin >> x1;
    cin.sync();
    cout << "Введите y[1]: ";
    cin >> y1;
    cin.sync();
    vekt_na_pl D1(x1, y1), *d1;
    d1=&D1;
    d1->print();
    cout << endl << endl;
    cout << "Введите z[1]: ";
    cin >> z1;
    cin.sync();
    vekt_v_pr D2(x1, y1, z1), *d2;
    d1=&D2;
    d1->print();
    d2=&D2;
    d2->Print();
    system("pause");
    return 0;
}

Проверьте, правильно ли я понял смысл задания, плиз
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2013, 00:56     Проблемы с наследованием классов
Посмотрите здесь:

Массив классов с наследованием - C++
Hi,all and thanks in advance. Shape base class, line and Point derived classes. What should I declare in .h files and implement in .cpp...

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

Проблемы с наследованием - C++
Выпадает такая ошибка Error 3 error C2259: 'Operator' : cannot instantiate abstract class d:\учёба\ооп\терминал...

Слово return в простом примере с наследованием классов - C++
Добрый день! Ниже приведён код. Подскажите, пожалуйста, для чего тут return . Почему нельзя просто вставить ++ count (или --count)?...

помогите решить задачу с массовым наследованием классов - C++
Общая постановка. Создать программу с абстрактным базовым классом и множественным наследованием, реализовать в нем: • конструктор, ...

Сформировать набор классов связанных между собой виртуальным наследованием,описать каждый класс - C++
Сформировать набор классов связанных между собой виртуальным наследованием,описать каждый класс

Проблема с наследованием - C++
Здравствуйте, уважаемые Все! Столкнулся со следующей проблемой. Необходимо реализовать паттерн программирования &quot;Фабричный метод&quot;....

Непонятки с наследованием - C++
Будьте добры, проясните пожалуйста такой момент: Есть код: #include &lt;iostream&gt; using namespace std; class Counter { ...

Не разберусь с наследованием класса - C++
Помогите разобраться с классами. Есть класс - шаблон и 2 класса наследуемые от него template &lt;class Type&gt; class VRTSmartStr : public...

Класс со множественным наследованием - C++
Доброе день! Необходимо оперативно написать программу, надеюсь на вашу помощь! Текст программы: Написать класс &quot;Автомобиль&quot; с...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.05.2013, 07:31     Проблемы с наследованием классов #2
Цитата Сообщение от kukhtikov Посмотреть сообщение
Скажите пожалуйста, в чем ошибка?
print() нужно виртуальным сделать и он должен быть переопределён в производном классе (это же в задании сказано, а вы сделали для каждого класса свой метод). Тогда будет вызываться метод не по типу указателя, а по типу объекта, с которым этот указатель связан.
Ответ Создать тему
Опции темы

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