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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ввод имени файла с клавиатуры http://www.cyberforum.ru/cpp-beginners/thread399999.html
Всем привет! Хочу сделать так: int main() { char finame; printf("Enter the name of file: "); scanf_s("%s", &finame); FILE *f = fopen(finame, 'r'); if(!f) printf ("Error!");
C++ Поставить в начало последовательности нули, а затем единицы 1 Последовательность a1; a2; ...; an состоит из нулей и единиц. Поставить в начало этой последовательности нули, а затем единицы. http://www.cyberforum.ru/cpp-beginners/thread399998.html
Классы C++
Условие задачи Построить систему классов для описания плоских геометрических фигур: круг, квадрат, прямоугольник. Предусмотреть методы для создания объектов, перемещения на плоскости, изменения размеров.Программа должна содержать меню, позволяющее осуществить проверку всех методов классов. В интернете нашла похожую решенную задачку, но в ней много лишнего по сравнению с моим заданием, поэтому...
C++ Разжуйте определенную часть написания программы. В частности enum.
Дело в том, что нужно написать программу, в которой вводиться с клавиатуры Название месяца на английском, а выводится у кого из друзей и когда выводится день рождения (текст вообщем). Сложность состоит в том, что программу нужно написать с помощью 16-ти дополнительных ф-ций, из которых 12-это просто вывод текста для каждого месяца, 1-на ф-ция (должна быть void) для вывода сообщения для ввода...
C++ создание string в namespece std http://www.cyberforum.ru/cpp-beginners/thread399955.html
В руки попала программа. Необходимо вместо фиксированных аргументов "to be or not to be", "beer", "bread", "milk" брать какой-нибудь string. А создать его не могу. Вроде и библиотека подключена... Помогите пожалуйста. // recurstring.cpp: определяет точку входа для консольного приложения. // /* написать консольное приложение, которое будет работать с последовательностями слов. Вывести...
C++ Построение таблицы значений функции y=f(x) для x на отрезке [a;b] с шагом h Помогите, пожалуйста, исправить следующую ситуацию: при a=-2, b=1 и h=0.3 на экран не выводится значение функции в крайней точке отрезка f(1) :gsad: #include <iostream> #include <cmath> using namespace std; double f(double x); int main() { setlocale(LC_ALL,"rus_rus.1251"); double a; подробнее

Показать сообщение отдельно
silent_1991
Эксперт С++
4956 / 3032 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
06.12.2011, 16:43     Абстрактные базовые классы
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 вы уж как-нибудь сами.
 
Текущее время: 07:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru