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

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

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

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

20.05.2013, 00:56. Просмотров 366. Ответов 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;
}

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

Массив классов с наследованием - 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++
Сформировать набор классов связанных между собой виртуальным наследованием,описать каждый класс

1
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.05.2013, 07:31 #2
Цитата Сообщение от kukhtikov Посмотреть сообщение
Скажите пожалуйста, в чем ошибка?
print() нужно виртуальным сделать и он должен быть переопределён в производном классе (это же в задании сказано, а вы сделали для каждого класса свой метод). Тогда будет вызываться метод не по типу указателя, а по типу объекта, с которым этот указатель связан.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2013, 07:31
Привет! Вот еще темы с ответами:

Динамическая списочная структура, содержащая объекты классов, связанных наследованием - C++
В общем. Есть базовый класс и 2 класса наследника. Нужно создать динамическую структуру(пусть это будет односвязный список) в который можно...

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

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

Задача с шаблонами и наследованием - C++
Ребята, есть такая проблема.. Предположим, что у нас есть класс Image (не шаблонный). И есть класс ImageExt&lt;T1,T2&gt; (шаблонный),...


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

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

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