Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 26.11.2015
Сообщений: 16
1

Создать иерархию наследования с абстрактным базовым классом

05.09.2016, 01:12. Показов 1315. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!
Помогите, пожалуйста, сделать:
2) Создать абстрактный базовый класс с виртуальной функцией "Площадь". Создать произвольные классы "Прямоугольник", "Круг", "Прямоугольны треугольник", "Трапеция" со своими функциями площади. Для проверки определить массив ссылок на абстрактный класс, которым присваивается адреса различных объектов;

В Си шарю не очень, трудно сделать самому, а сдать задания нужно срочно. Можно помочь чем-нибудь подобным. Заранее очень благодарен!

Добавлено через 1 час 57 минут
Для второго задания, ну что-то не компилит(
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
#include <iostream>
using namespace std;
class Shape
{
public:
virtual double Square() = 0;
public:
virtual ~Shape() = 0
{}
};
class Rectangle : public Shape
{
private:
double _a, _b;
public:
Rectangle()
:_a(0.0), _b(0.0)
{}
public:
Rectangle(double a, double b)
:_a(a), _b(b)
{}
public:
Rectangle(const Rectangle& rhs)
:_a(rhs._a), _b(rhs._b)
{}
public:
double Square()
{
return _a * _b;
}
};
class Circle : public Shape
{
private:
double _r;
public:
Circle()
:_r(0.0)
{}
public:
Circle(double r)
:_r(r)
{}
public:
Circle(const Circle& rhs)
:_r(rhs._r)
{}
public:
double Square()
{
static const double pi = 3.1415926;
return pi * _r * _r;
}
};
class RightTriangle : public Shape
{
private:
double _a, _b;
public:
RightTriangle()
:_a(0.0), _b(0.0)
{}
public:
RightTriangle(double a, double b)
:_a(a), _b(b)
{}
public:
RightTriangle(const RightTriangle& rhs)
:_a(rhs._a), _b(rhs._b)
{}
public:
double Square()
{
return _a * _b / 2;
}
};
class Trapezium : public Shape
{
private:
double _a, _b, _h;
public:
Trapezium()
{}
public:
Trapezium(double a, double b, double h)
:_a(a), _b(b), _h(h)
{}
public:
Trapezium(const Trapezium& rhs)
:_a(rhs._a), _b(rhs._b), _h(rhs._h)
{}
public:
double Square()
{
return (_a + _b) * _h / 2;
}
};
int main()
{
Shape* shapes[4];
shapes[0] = new Rectangle(2.0, 2.0);
shapes[1] = new RightTriangle(2.0, 2.0);
shapes[2] = new Circle(1.0);
shapes[3] = new Trapezium(1.0, 2.0, 3.0);
for (int i=0; i<4; ++i) {
cout « shapes[i]->Square() « endl;
delete shapes[i];
}
};
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.09.2016, 01:12
Ответы с готовыми решениями:

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

Создать иерархию классов с использованием механизма наследования
Создать иерархию классов с использованием механизма наследования. В качестве базового класса должен...

Полиморфизм с абстрактным классом
Добрий день, нуждаюсь в помощи. У меня есть абстрактный класс IStudent_Manip и производный класс...

Работа с абстрактным классом
По заданию должен быть один абстрактный-базовый класс и несколько наследников С абстрактными...

5
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
05.09.2016, 01:45 2
Цитата Сообщение от SuperBor Посмотреть сообщение
что-то не компилит
Компилит, если подправить 107ю строчку.
0
0 / 0 / 0
Регистрация: 26.11.2015
Сообщений: 16
05.09.2016, 01:57  [ТС] 3
Нужно добавить ;?
0
Модератор
Эксперт CЭксперт С++
5287 / 2374 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
05.09.2016, 07:35 4
Цитата Сообщение от SuperBor Посмотреть сообщение
Нужно добавить ;?
Нужно исправить это:
C++
1
cout « shapes[i]->Square() « endl;
на это:
C++
1
cout << shapes[i]->Square() << endl;
0
0 / 0 / 0
Регистрация: 26.11.2015
Сообщений: 16
07.09.2016, 23:58  [ТС] 5
В восьмой строчке выдаёт ошибку
0
Модератор
Эксперт CЭксперт С++
5287 / 2374 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
08.09.2016, 07:35 6
SuperBor, потому что вот:
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
#include <iostream>
 
class Shape
{
public:
    virtual double Square() = 0;
    virtual ~Shape()
    {}
};
 
class Rectangle : public Shape
{
private:
    double _a, _b;
 
public:
    Rectangle()
        : _a(0.0), _b(0.0)
    {}
 
    Rectangle(double a, double b)
        : _a(a), _b(b)
    {}
 
    Rectangle(const Rectangle& rhs)
        : _a(rhs._a), _b(rhs._b)
    {}
 
    double Square()
    {
        return _a * _b;
    }
};
 
class Circle : public Shape
{
private:
    double _r;
public:
    Circle()
        :_r(0.0)
    {}
 
    Circle(double r)
        :_r(r)
    {}
 
    Circle(const Circle& rhs)
        :_r(rhs._r)
    {}
 
    double Square()
    {
        static const double pi = 3.1415926;
        return pi * _r * _r;
    }
};
 
class RightTriangle : public Shape
{
private:
    double _a, _b;
public:
    RightTriangle()
        :_a(0.0), _b(0.0)
    {}
 
    RightTriangle(double a, double b)
        :_a(a), _b(b)
    {}
 
    RightTriangle(const RightTriangle& rhs)
        :_a(rhs._a), _b(rhs._b)
    {}
 
    double Square()
    {
        return _a * _b / 2;
    }
};
 
class Trapezium : public Shape
{
private:
    double _a, _b, _h;
public:
    Trapezium()
    {}
 
    Trapezium(double a, double b, double h)
        :_a(a), _b(b), _h(h)
    {}
 
    Trapezium(const Trapezium& rhs)
        :_a(rhs._a), _b(rhs._b), _h(rhs._h)
    {}
 
    double Square()
    {
        return (_a + _b) * _h / 2;
    }
};
 
int main()
{
    Shape* shapes[4];
    shapes[0] = new Rectangle(2.0, 2.0);
    shapes[1] = new RightTriangle(2.0, 2.0);
    shapes[2] = new Circle(1.0);
    shapes[3] = new Trapezium(1.0, 2.0, 3.0);
    for (int i = 0; i < 4; ++i)
    {
        std::cout << shapes[i]->Square() << std::endl;
        delete shapes[i];
    }
 
    return 0;
}
0
08.09.2016, 07:35
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.09.2016, 07:35
Помогаю со студенческими работами здесь

Непонятки с абстрактным классом
У нуба возник вопрос :) Вот объявляю я абстрактный Inline класс. Ну под инлайн я имею ввиду, что...

Работа с абстрактным классом
Доброго времени суток! Имеется небольшой класс: #include &lt;irrlicht.h&gt; class EngineInit {...

Магия с абстрактным классом
Предположим, есть абстрактный класс Funk: abstract public class Func Есть класс Funk1, который...

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Какой язык программировани­я лучший для разработки нейронных сетей
InfoMaster 20.01.2025
В современном мире технологий искусственные нейронные сети становятся неотъемлемой частью множества инновационных решений, от распознавания речи до автоматического управления транспортными. . .
Как подключить JavaScript файл в другом JavaScript файле
InfoMaster 20.01.2025
В современной веб-разработке организация кодовой базы играет ключевую роль в создании масштабируемых и поддерживаемых приложений. Модульность и правильное структурирование кода стали неотъемлемыми. . .
Как откатить изменения в исходниках, не внесенные в Git
InfoMaster 20.01.2025
При работе с системой контроля версий Git разработчики часто сталкиваются с необходимостью отменить внесенные изменения в исходном коде. Особенно актуальной становится ситуация, когда изменения еще. . .
В чем разница между px, in, mm, pt, dip, dp, sp
InfoMaster 20.01.2025
В мире цифрового дизайна и разработки интерфейсов правильный выбор единиц измерения играет ключевую роль в создании качественного пользовательского опыта. История развития систем измерений для. . .
Как изменить адрес удалённого репозитория (origin) в Git
InfoMaster 20.01.2025
В терминологии Git термин origin является стандартным именем для основного удаленного репозитория, с которым взаимодействует локальная копия проекта. Когда разработчик клонирует репозиторий с. . .
Как переместить последние коммиты в новую ветку (branch) в Git
InfoMaster 20.01.2025
При работе над проектом часто возникают ситуации, когда необходимо изолировать определенные изменения от основной линии разработки. Это может быть связано с экспериментальными функциями, исправлением. . .
Как вернуть результат из асинхронной функции в JavaScript
InfoMaster 20.01.2025
Асинхронное программирование представляет собой фундаментальную концепцию в JavaScript, которая позволяет выполнять длительные операции без блокировки основного потока выполнения программы. В. . .
Какой локальный веб-сервер выбрать
InfoMaster 19.01.2025
В современной веб-разработке локальные веб-серверы играют ключевую роль, предоставляя разработчикам надежную среду для создания, тестирования и отладки веб-приложений без необходимости использования. . .
Почему планшеты и iPad уже не так популярны, как раньше
InfoMaster 19.01.2025
Эра революционных инноваций История планшетов началась задолго до того, как эти устройства стали привычными спутниками нашей повседневной жизни. В начале 1990-х годов появились первые прототипы,. . .
Как самому прошить BIOS ноутбука
InfoMaster 19.01.2025
BIOS (Basic Input/ Output System) представляет собой важнейший компонент любого компьютера или ноутбука, который обеспечивает базовое взаимодействие между аппаратным и программным обеспечением. . .
Какой Linux выбрать для домашнего компьютера
InfoMaster 19.01.2025
Современные реалии выбора операционной системы В современном мире выбор операционной системы для домашнего компьютера становится все более важным решением, которое может существенно повлиять на. . .
Как объединить два словаря одним выражением в Python
InfoMaster 19.01.2025
В мире программирования на Python работа со словарями является неотъемлемой частью разработки. Словари представляют собой мощный инструмент для хранения и обработки данных в формате "ключ-значение". . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru