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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 29, средняя оценка - 4.83
Малиновая тень
4 / 4 / 0
Регистрация: 07.12.2010
Сообщений: 19
#1

Абстрактные базовые классы - C++

06.12.2011, 09:38. Просмотров 3878. Ответов 2
Метки нет (Все метки)

Помогите решить пожалуйста!)
Задание 1 .
Создать базовый класс - фигура, и производные класс - круг, прямоугольник, трапеция. Определить виртуальные функции площадь, периметр и вывод на печать.
Задание 2 .
Создать абстрактный базовый класс с виртуальной функцией - сумма прогрессии. Создать производные классы: арифметическая прогрессия и геометрическая прогрессия. Каждый класс имеет два поля типа double. Первое - первый член прогрессии, второе (double) - постоянная разность (для арифметической) и постоянное отношение (для геометрической). Определить функцию вычисления суммы, где параметром является количество элементов прогрессии.
Арифметическая прогрессия aj=a0+jd, j=0,1,2,…
Сумма арифметической прогрессии: sn=(n+1)(a0+an)/2
Геометрическая прогрессия: aj=a0rj, j=0,1,2,…
Сумма геометрической прогрессии: sn=(a0-anr)/(1-r)
Задание 3.
Создать класс - данные - абстрактный базовый класс. Создать производные классы - данные типа сигнал, данные типа результат обработки и вспомогательные данные. Все данные имеют функции отображения, сохранения и обработки.
1
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2011, 09:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Абстрактные базовые классы (C++):

Абстрактные базовые классы - C++
Не могу создать экземпляр производного от АБК класса: #pragma once class BaseEllips { private: double x; double y; public: ...

Виртуальные абстрактные базовые классы - C++
Привет всем!:-) Вчера столкнулся со следующей проблемой: компилятор ругается на чистый виртуальный деструктор. Собственно листинги: ...

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

Абстрактные классы - C++
Объясните пожалуйста почему это не работает и как исправить? cannot declare variable 'b1' to be of abstract type 'classB' because the...

Абстрактные классы - C++
Никак не могу понять смысл абстрактных данных.Ведь мы можем использовать и обычный класс,только абстракция запрещает создавать объекты.

Абстрактные классы - C++
Народ, вопрос есть такой. Есть абстрактный класс class A { protected: int a; public: A(int b=0):a(b) {

2
silent_1991
Эксперт С++
4984 / 3041 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
06.12.2011, 16:43 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#include <iostream>
#include <cmath>
 
//-----------------------------------------------------------------------------
 
class Figure
{
public:
    virtual double area() const = 0;
    virtual double perimeter() const = 0;
 
    virtual void print() const
    {
        std::cout << "area = " << area() << "; perimeter = " << perimeter() << std::endl;
    }
};
 
//-----------------------------------------------------------------------------
 
class Circle : public Figure
{
public:
    Circle(double radius):
    m_radius(radius)
    {
    }
 
    virtual double area() const
    {
        return pi * m_radius * m_radius;
    }
 
    virtual double perimeter() const
    {
        return 2.0 * pi * m_radius;
    }
 
    virtual void print() const
    {
        std::cout << "Circle: ";
 
        Figure::print();
    }
 
private:
    static const double pi;
 
private:
    double m_radius;
};
 
const double Circle::pi = 3.14159265358979323;
 
//-----------------------------------------------------------------------------
 
class Rectangle : public Figure
{
public:
    Rectangle(double width, double height):
    m_width(width),
    m_height(height)
    {
    }
 
    virtual double area() const
    {
        return m_width * m_height;
    }
 
    virtual double perimeter() const
    {
        return 2.0 * m_width + 2.0 * m_height;
    }
 
    virtual void print() const
    {
        std::cout << "Rectangle: ";
 
        Figure::print();
    }
 
private:
    double m_width;
    double m_height;
};
 
//-----------------------------------------------------------------------------
 
class Trapezoid : public Figure
{
public:
    Trapezoid(double base1, double base2, double side1, double side2):
    m_base1(base1),
    m_base2(base2),
    m_side1(side1),
    m_side2(side2)
    {
    }
 
    virtual double area() const
    {
        return sqrt(pow(m_side1, 2.0) - pow((pow(m_base2 - m_base1, 2.0) + pow(m_side1, 2.0) - pow(m_side2, 2.0)) / (2.0 * (m_base2 - m_base1)), 2.0)) * (m_base1 + m_base2) / 2.0;
    }
 
    virtual double perimeter() const
    {
        return m_base1 + m_base2 + m_side1 + m_side2;
    }
 
    virtual void print() const
    {
        std::cout << "Trapezoid: ";
 
        Figure::print();
    }
 
private:
    double m_base1;
    double m_base2;
    double m_side1;
    double m_side2;
};
 
//-----------------------------------------------------------------------------
 
void figure_info(const Figure &figure)
{
    figure.print();
}
 
int main()
{
    Circle c(2.0);
    Rectangle r(2.0, 3.0);
    Trapezoid t(3.0, 6.0, 3.0, sqrt(18.0));
 
    figure_info(c);
    figure_info(r);
    figure_info(t);
 
    return 0;
}
Добавлено через 13 минут
2.
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
#include <iostream>
#include <cmath>
 
//-----------------------------------------------------------------------------
 
class Progression
{
public:
    virtual double amount(size_t number) const = 0;
};
 
//-----------------------------------------------------------------------------
 
class ArithmeticalProgression : public Progression
{
public:
    ArithmeticalProgression(double start, double d):
    m_start(start),
    m_d(d)
    {
    }
 
    virtual double amount(size_t number) const
    {
        return number * (2.0 * m_start + m_d * (number - 1.0)) / 2.0;
    }
 
private:
    double m_start;
    double m_d;
};
 
//-----------------------------------------------------------------------------
 
class GeometricalProgression : public Progression
{
public:
    GeometricalProgression(double start, double q):
    m_start(start),
    m_q(q)
    {
    }
 
    virtual double amount(size_t number) const
    {
        return (m_q == 1) ? (number * m_start) : (m_start * (1.0 - pow(m_q, static_cast<double>(number))) / (1.0 - m_q));
    }
 
private:
    double m_start;
    double m_q;
};
 
//-----------------------------------------------------------------------------
 
void print_amount(const Progression &progression, size_t number)
{
    std::cout<< progression.amount(number) << std::endl;
}
 
int main()
{
    ArithmeticalProgression ap(0.0, 3.0);
    GeometricalProgression gp(1.0, 0.5);
 
    print_amount(ap, 10);
    print_amount(gp, 5);
 
    return 0;
}
Добавлено через 24 секунды
3 вы уж как-нибудь сами.
5
Малиновая тень
4 / 4 / 0
Регистрация: 07.12.2010
Сообщений: 19
06.12.2011, 18:30  [ТС] #3
silent_1991 , спасибо вам большое)
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2011, 18:30
Привет! Вот еще темы с ответами:

Абстрактные классы - C++
Помогите пожалуйста, сообразить не могу. Есть абстрактный класс. У него есть метод, чтение из файла. Есть производный от него класс....

Абстрактные классы - C++
В общем есть у нас 2 абстрактных класса CA и CB и 2 дочерних от них класса CC и CD. Как сделать так чтобы CD наследовал CB поверх которого...

Абстрактные классы - C++
Помогите плиз, экзаменационное задание, а разобраться не могу с ним: Создать консольное приложение, в котором реализовать работу...

Абстрактные классы - C++
void _tmain() { const int lim = 100; MyFunction *pFunc ; int count = 0; pFunc = new My_Exp; pFunc = new Line; pFunc...


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

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

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