Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/43: Рейтинг темы: голосов - 43, средняя оценка - 4.91
3 / 3 / 3
Регистрация: 17.10.2012
Сообщений: 147

[ООП] Геометрические функции

04.11.2014, 12:32. Показов 9072. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Очередное задание по ООП (наследование):
Используя метод декомпозиции реализовать геометрические функции + значение площадей этих фигур.
Какие функции, каких фигур - ничего не известно. Сказали на свой выбор.
Не могли бы показать, как примерно это должно выглядеть?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.11.2014, 12:32
Ответы с готовыми решениями:

ООП . Геометрические тела
Здравствуйте , нужна ваша помощь . Дан класс Geometric_object . И у него есть два подкласса Plane_figure_2d и Volumetric_body_3d , и у...

ООП . Геометрические тела
Здравствуйте , нужна ваша помощь . Дан класс Geometric_object . И у него есть два подкласса Plane_figure_2d и Volumetric_body_3d , и у...

ООП. Геометрические фигуры
Классическая задачка на абстрактные классы: создать абстрактный класс Figure, напихать туда чисто виртуальных методов аля Draw(), Rotate(),...

11
Модератор
 Аватар для vxg
3407 / 2178 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
04.11.2014, 14:32
геометрическая фигура->
-круг
-четырехугольник->
--прямоугольник->квадрат
--равнобедренная трапеция
-треугольник->
--равнобедренный
--равносторонний
геометрические функции:
-расчет периметра
-расчет площади
0
3 / 3 / 3
Регистрация: 17.10.2012
Сообщений: 147
04.11.2014, 14:34  [ТС]
Я имел ввиду, как это выглядит в коде, часть какой-то фигуры.
0
Модератор
 Аватар для vxg
3407 / 2178 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
04.11.2014, 16:10
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
143
class shape
{
public:
    virtual double p(void) = 0;
    virtual double s(void) = 0;
};
 
class circle:
public shape
{
public:
    double r;
 
    circle(const double &r): r(r) {}
 
    virtual double p(void) {return 2 * M_PI * r;}
    virtual double s(void) {return M_PI * r * r;}
};
 
struct point
{
    double x;
    double y;
 
    point(const double &x, const double &y): x(x), y(y) {}
};
 
class polygon:
public shape
{
public:
    std::vector<point> vertex;
 
    virtual double p(void)
    {
        double length = 0;
 
        std::vector<point>::iterator i = vertex.begin();
 
        double x1 = i->x;
        double y1 = i->y;
 
        i++;
 
        for (; i != vertex.end(); i++)
        {
            double x2 = i->x;
            double y2 = i->y;
 
            length += hypot(x2 - x1, y2 - y1);
 
            x1 = x2;
            y1 = y2;
        }
 
        length += hypot(vs.front().x - vs.back().x, vs.front().y - vs.back().y);
 
        return length;
    }
 
    virtual double s(void)
    {
        double area = 0;
 
        std::vector<vector>::iterator i = vertex.begin();
 
        double x1 = i->x;
        double y1 = i->y;
 
        i++;
 
        for (; i != vertex.end(); i++)
        {
            double x2 = i->x;
            double y2 = i->y;
 
            area += x1 * y2 - x2 * y1;
 
            x1 = x2;
            y1 = y2;
        }
 
        area += vs.back().x * vs.front().y - vs.front().x * vs.back().y;
 
        area *= 0.5;
 
        if (area < 0)
        {
            area = -area;
        }
 
        return area;
    }
};
 
class quad:
public polygon
{};
 
class rectangle:
public quad
{
public:
    double a;
    double b;
 
    rectangle(const double &a, const double &b): a(a), b(b)
    {
        vertex.push_back(point(0, 0));
        vertex.push_back(point(a, 0));
        vertex.push_back(point(a, b));
        vertex.push_back(point(0, b));
    }
};
 
class square:
public rectangle
{
public:
    square(const double &a): rectangle(a, a)
    {}
}
 
class trapezium:
public quad
{
public:
    double a;
    double b;
    double h;
 
    trapezium(const double &a, const double &b, const double &h): a(a), b(b), h(h)
    {
        vertex.push_back(point(0, 0));
        vertex.push_back(point(a, 0));
        vertex.push_back(point(a - (a - b) / 2, h));
        vertex.push_back(point((a - b) / 2, h));
    }
};
 
class triangle:
public polygon
{};
Добавлено через 4 минуты
...для равнобедренного и равностороннего не стал делать думаю понятно что там должно быть

Добавлено через 1 час 1 минуту
-в начале идет абстрактный базовый класс shape (фигура)
-у него есть чистые виртуальные функции p (периметр) и s (площадь)
-из этого класса мы выводим классы circle (окружность) и polygon (многоугольник) для которых определены функции расчета периметра и площади известные нам из курса геометрии
-из класса многоугольник мы выводим класс quad (четырехугольник) который сам по себе не несет никакой нагрузки
-из класса четырехугольник мы выводим класс rectangle (прямоугольник) которому для удобства даем поля a и b (стороны) и соответствующий конструктор
-из класса прямоугольник мы выводим класс square (квадрат) которому для удобства мы даем соответствующий конструктор который просто передает единственный параметр (сторону) в конструктор прямоугольника
-из класса четырехугольник мы выводим класс trapezium (равнобедренная трапеция) которому для удобства мы даем поля a, b и h (основания и высота) и соответствующий конструктор
-из класса многоугольник мы выводим класс triangle (треугольник) который сам по себе не несет никакой нагрузки
-аналогично из класса треугольник выводятся классы равнобедренный треугольник и равносторонний треугольник которым для удобства даются поля a, h (основание и высота для равнобедренного) или a (для равностороннего) и соответствующие конструкторы
-----
демонстрация проводится как-то так
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
#include <math.h>
#include <iostream>
 
//тут наши классы
 
int main(void)
{
    int type;
    std::cout << "select shape type (1 - circle, 2 - rectangle):";
    int std::cin >> type;
 
    shape *p = 0;
 
    if (type == 1)
    {
        double r;
        std::cout << "r=";
        std::cin >> r;
        p = new circle(r);
    }
    else if (type == 2)
    {
        double a;
        std::cout << "a=";
        std::cin >> a;
 
        double b;
        std::cout << "b=";
        std::cin >> b;
 
        p = new rectangle(a, b);
    }
    else
    {
        std::cout << "bad type" << std::endl;
        return 1;
    }
 
    std::cout >> "p=" << p->p() << std::endl;
    std::cout >> "s=" << p->s() << std::endl;
 
    return 0;
}
при желании можно озаботиться для каждого класса методом получающим параметры с клавиатуры.
0
3 / 3 / 3
Регистрация: 17.10.2012
Сообщений: 147
04.11.2014, 16:11  [ТС]
Возникает ошибка на этом месте:
C++ (Qt)
1
2
3
4
5
class polygon:
public shape
{
public:
    std::vector<point> vertex;
IntelliSense: namespace "std" не содержит члена "vector"
0
Модератор
 Аватар для vxg
3407 / 2178 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
04.11.2014, 17:06
Лучший ответ Сообщение было отмечено Andrea13 как решение

Решение

C++
1
#include <vector>
Добавлено через 51 минуту
для тех кто не может исправить незначительные неточности связанные с тем что код вводили прямо на форум приводится рабочая версия
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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
#include <math.h>
#include <iostream>
#include <vector>
 
class shape
{
public:
    virtual double p(void) = 0;
    virtual double s(void) = 0;
};
 
class circle:
public shape
{
public:
    double r;
 
    circle(const double &r): r(r) {}
 
    virtual double p(void) {return 2 * M_PI * r;}
    virtual double s(void) {return M_PI * r * r;}
};
 
struct point
{
    double x;
    double y;
 
    point(const double &x, const double &y): x(x), y(y) {}
};
 
class polygon:
public shape
{
public:
    std::vector<point> vertex;
 
    virtual double p(void)
    {
        double length = 0;
 
        std::vector<point>::iterator i = vertex.begin();
 
        double x1 = i->x;
        double y1 = i->y;
 
        i++;
 
        for (; i != vertex.end(); i++)
        {
            double x2 = i->x;
            double y2 = i->y;
 
            length += hypot(x2 - x1, y2 - y1);
 
            x1 = x2;
            y1 = y2;
        }
 
        length += hypot(vertex.front().x - vertex.back().x, vertex.front().y - vertex.back().y);
 
        return length;
    }
 
    virtual double s(void)
    {
        double area = 0;
 
        std::vector<point>::iterator i = vertex.begin();
 
        double x1 = i->x;
        double y1 = i->y;
 
        i++;
 
        for (; i != vertex.end(); i++)
        {
            double x2 = i->x;
            double y2 = i->y;
 
            area += x1 * y2 - x2 * y1;
 
            x1 = x2;
            y1 = y2;
        }
 
        area += vertex.back().x * vertex.front().y - vertex.front().x * vertex.back().y;
 
        area *= 0.5;
 
        if (area < 0)
        {
            area = -area;
        }
 
        return area;
    }
};
 
class quad:
public polygon
{};
 
class rectangle:
public quad
{
public:
    double a;
    double b;
 
    rectangle(const double &a, const double &b): a(a), b(b)
    {
        vertex.push_back(point(0, 0));
        vertex.push_back(point(a, 0));
        vertex.push_back(point(a, b));
        vertex.push_back(point(0, b));
    }
};
 
class square:
public rectangle
{
public:
    square(const double &a): rectangle(a, a)
    {}
};
 
class trapezium:
public quad
{
public:
    double a;
    double b;
    double h;
 
    trapezium(const double &a, const double &b, const double &h): a(a), b(b), h(h)
    {
        vertex.push_back(point(0, 0));
        vertex.push_back(point(a, 0));
        vertex.push_back(point(a - (a - b) / 2, h));
        vertex.push_back(point((a - b) / 2, h));
    }
};
 
class triangle:
public polygon
{};
 
int main(void)
{
    int type;
    std::cout << "select shape type (1 - circle, 2 - rectangle):";
    std::cin >> type;
 
    shape *p = 0;
 
    if (type == 1)
    {
        double r;
        std::cout << "r=";
        std::cin >> r;
        p = new circle(r);
    }
    else if (type == 2)
    {
        double a;
        std::cout << "a=";
        std::cin >> a;
 
        double b;
        std::cout << "b=";
        std::cin >> b;
 
        p = new rectangle(a, b);
    }
    else
    {
        std::cout << "bad type" << std::endl;
        return 1;
    }
 
    std::cout << "p=" << p->p() << std::endl;
    std::cout << "s=" << p->s() << std::endl;
 
    return 0;
}
1
3 / 3 / 3
Регистрация: 17.10.2012
Сообщений: 147
04.11.2014, 20:39  [ТС]
Все здорово, но у меня несколько вопросов:
C++ (Qt)
1
1. area += x1 * y2 - x2 * y1;
Откуда была взята формула по нахождению площади?
Что-за формула? Где ее можно посмотреть в интернете? (не нашел)
2.
C++ (Qt)
1
2
3
4
5
6
7
Rectangle(const double &a, const double &b): a(a), b(b)
    {
        vertex.push_back(Point(0, 0));
        vertex.push_back(Point(a, 0));
        vertex.push_back(Point(a, b));
        vertex.push_back(Point(0, b));
    }
Что означает push_back и что в скобках указывается?
Это какие-то варианты или что? Пояснения все на англ. языке.
3.
C++ (Qt)
1
2
3
4
5
6
7
Trapezium(const double &a, const double &b, const double &h): a(a), b(b), h(h)
    {
        vertex.push_back(Point(0, 0));
        vertex.push_back(Point(a, 0));
        vertex.push_back(Point(a - (a - b) / 2, h));
        vertex.push_back(Point((a - b) / 2, h));
    }
А здесь что-за формулы в скобках?
0
Модератор
 Аватар для vxg
3407 / 2178 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
04.11.2014, 20:59
1 тут формула http://www.mathsisfun.com/geom... ygons.html
2 push_back добавляет точку в список вершин. пусть вас не смущает название класса vector - смотрите на него просто как на динамический массив хранящий точки многоугольника.
3 в скобках точки трапеции. первая точка (0, 0), вторая лежит на оси X на расстоянии a и имеет координаты (a, 0). потом идут точки принадлежащие второму основанию - они удалены от оси X на расстояние h, а их координаты по оси X мы вычисляем зная длины оснований
0
3 / 3 / 3
Регистрация: 17.10.2012
Сообщений: 147
06.11.2014, 13:21  [ТС]
Все таки этот предмет называется ООП, преподаватель все поменял и сделал такой код:
C++ (Qt)
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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
#include "stdafx.h"
 
//const double M_PI = 3.14159265;
 
#pragma warning (push)
#pragma warning (disable:4996)
 
class Figura
{
public:
    /*Чистые виртуальные функции: p - периметр, s - площадь*/
    virtual double Perimeter(void) = 0;
    virtual double Square(void) = 0;
    virtual double Offset(double, double) = 0;
    virtual ~Figura() {}
};
 
class Point : public Figura
{
private:
    double x;
    double y;
public:
    Point(double x, double y): x(x), y(y) {}
};
 
/*Из класса фигуры мы выводим класс Сircle (оружность)*/
class Сircle : public Point
{
private:
    /*Радиус*/
    double r;
public:
    Сircle(const double &r): r(r) {}
 /*Формулы рассчета площади и периметра*/
    virtual double p(void) {return 2 * M_PI * r;}
    virtual double s(void) {return M_PI * r * r;}
};
 
class Ellipse : public Circle
{
};
 
/**Из класса фигуры мы выводим класс Polygon (многоугольник)*/
class Polygon : public Figura
{
private:
    /*std::vector<тип_содержимого>*/
    /*Массив, который можно добавлять элементы без перевыделения памяти.*/
    std::vector<Point> vertex;
 /*Вычисление периметра*/
    virtual double p(void)
    {
        double length = 0;
        /*Присваиваем координатам x1 и y1 первой точки*/
        /*vertex - это массив точек, составляющих фигуру*/
        double x1 = vertex[0].x;
        double y1 = vertex[0].y;
 
        for (unsigned int i = 1; i < vertex.size(); i++)
            {
                double x2 = vertex[i].x;
                double y2 = vertex[i].y;
 
                length += hypot(x2 - x1, y2 - y1);
 
                x1 = x2;
                y1 = y2;
            }
 
        length += hypot(vertex.front().x - vertex.back().x, vertex.front().y - vertex.back().y);
 
        return length;
    }
  /*Вычисление площади*/
    virtual double s(void)
    {
        double area = 0;
 
        std::vector<Point>::iterator i = vertex.begin();
 
        double x1 = vertex[0].x;
        double y1 = vertex[0].y;
 
        for (unsigned int i = 0; i < vertex.size(); i++)
            {
                double x2 = vertex[i].x;
                double y2 = vertex[i].y;
 
                area += x1 * y2 - x2 * y1;
 
                x1 = x2;
                y1 = y2;
            }
        area += vertex.back().x * vertex.front().y - vertex.front().x * vertex.back().y;
        area *= 0.5;
        if (area < 0)
        {
            area = -area;
        }
        return area;
    }
};
/*Из класса многоугольник мы выводим класс Quad (четырехугольник),*/
/*который сам по себе не несет никакой нагрузки*/
class Quad : public Polygon
{};
/*Из класса четырехугольник мы выводим класс Rectangle (прямоугольник),*/
/*которому для удобства даем поля a и b (стороны) и соответствующий конструктор*/
class Rectangle : public Quad
{
public:
    double a;
    double b;
 
    Rectangle(const double &a, const double &b): a(a), b(b)
    {
        /*push_back добавляет точку в список вершин.*/
        /*Добавление точки с координатами 0,0 в массив(вектор) вершин и т.д.*/
        vertex.push_back(Point(0, 0));
        vertex.push_back(Point(a, 0));
        vertex.push_back(Point(a, b));
        vertex.push_back(Point(0, b));
    }
};
/*Из класса прямоугольник мы выводим класс Square (квадрат)*/
class Square : public Rectangle
{
public:
    /*Передаем единственный параметр (сторону) в конструктор прямоугольника*/
    Square(const double &a): Rectangle(a, a)
    {}
};
/*Из класса четырехугольник мы выводим класс Trapezium (равнобедренная трапеция)*/
class Trapezium : public Quad
{
public:
    /*основные поля: a, b, h (высота) и соотв. конструктор*/
    double a;
    double b;
    double h;
 
    Trapezium(const double &a, const double &b, const double &h): a(a), b(b), h(h)
    {
        /*В скобках указаны точки трапеции. первая точка (0, 0), вторая лежит на оси X
        на расстоянии a и имеет координаты (a, 0). потом идут точки принадлежащие
        второму основанию - они удалены от оси X на расстояние h, а их координаты
        по оси X мы вычисляем зная длины оснований"*/
        vertex.push_back(Point(0, 0));
        vertex.push_back(Point(a, 0));
        vertex.push_back(Point(a - (a - b) / 2, h));
        vertex.push_back(Point((a - b) / 2, h));
    }
};
/*Из класса многоугольник мы выводим класс Triangle (треугольник), которые не несет никакой нагрузки*/
class Triangle : public Polygon
{};
 
#pragma warning (pop)
Разумеется здесь появилось кучу ошибок. Он сказал их исправить..
Сказал также сделать диструктор, и, что он обязательно должен присутствовать здесь:
C++ (Qt)
1
virtual ~Figura() {}
Это смещение. Не знаю, что значит, ну наверное надо реализовать:
C++ (Qt)
1
virtual double Offset(double, double) = 0;
Возникла проблема 2 раза на этом участке кода:
C++ (Qt)
1
2
class Triangle : public Polygon
{};
И спросил здесь:
Он: Что нам мешает в треугольнике сделать 5 вершин?!
Я : Ничего.
Это так он намекнул, что, возможно, тут что-то по-другому надо сделать. Или проверку - не знаю.
C++ (Qt)
1
2
lass Quad : public Polygon
{};
Здесь был тоже акцент. Это многоугольник - у него много вершин, а у четырехугольника - их 4.
Помогите разобраться с этим.
0
Модератор
 Аватар для vxg
3407 / 2178 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
06.11.2014, 16:37
очень странные правки.
1 назвать фигурой точку можно только с очень большими оговорками тем более, что такие понятия как периметр и площадь к ней неприменимы. точка это скорее нечто большее. например, точка - это геометрический объект.
2 выводить окружность из точки может только дебил некорректно
3 выводить эллипс из круга может только дебил в квадрате некорректно
4 виртуальный деструктор можете сделать. правда он у вас не будет выполнять никаких действий.
5 функция смещение если перевести ее на человеческий язык и включить телепатию наверное означает возврат координат точки вставки фигуры (некоторой точки принятой за начало локальной системы координат фигуры)
6 относительно того что мешает сделать в треугольнике 5 вершин - можно было смело ответить "руководство пользователя библиотекой графических примитивов и квалификация разработчика". в качестве альтернативы можно сделать список вершин закрытым полем которое будет недоступно снаружи класса.
7 многоугольник - это такая штука у которой много вершин. 3. или 4. или 1 000 000. в чем проблема вывести четырехугольник из многоугольника? многоугольник - это базовый класс который реализует общее поведение всех фигур являющихся многоугольниками. дочерний класс треугольник может расширять этот класс своими методами в зависимости от специфики задачи. может вы разрабатываете библиотеку для применения в САПР где предусмотрены функции растягивания фигуры и они будут существенно отличаться для треугольника и чего-нибдь еще.
====
таким образом если учесть отсутствие четкой формулировки задачи все претензии можно назвать высосанными из пальца - программист решает задачу - если задача не ставится он решает ее так как телепатия подсказывает и глупо потом стучать в закрытые двери головой. тем более что задача на самом деле решена в объеме заявленного учебного материала. тем более что правки на половину состоят то ли из провокаций то ли из маразма
0
0 / 0 / 0
Регистрация: 05.04.2011
Сообщений: 7
18.11.2014, 22:28
виртуальный деструктор можете сделать. правда он у вас не будет выполнять никаких действий.
Вот тут как раз кроется очень большая ошибка) Виртуальный деструктор - можно сказать must have в ООП на С++. Потому что без него всё наследование можно сказать не работает. Проиллюстрирую:

допустим, у нас есть класс A и унаследованный от него класс B. В классе А память не выделяется и не очищается, ничего такого. В классе B же есть выделение памяти и очистка её в деструкторе. Примерно так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class A {
public:
    A() {
        cout << "Constructor A" << endl;
    }
    ~A() {
        cout << "Destructor A" << endl;
}
};
 
class B : public A {
private:
    int *someVar;
public:
    B() {
        someVar = new int[10];
        cout << "Constructor B" << endl;
    }
    ~B() {
        delete[] someVar;
        cout << "Destructor B" << endl;
    }
};
Теперь если мы напишем в main:
C++
1
2
A* a = new B();
delete a;
То деструктор класса B не вызовется! Вызовется только деструктор класса А, следовательно произойдёт утечка памяти (delete[] то не сработал). Чтобы деструктор класса В вызвался, нужно сделать деструктор в классе А виртуальным.
Собственно, практически всегда нужно делать деструкторы в классах виртуальными, потому что если виртуального деструктора не будет и кто-то захочет унаследоваться от класса, этот кто-то не сможет нормально работать с памятью.
0
Модератор
 Аватар для vxg
3407 / 2178 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
19.11.2014, 11:02
Цитата Сообщение от xMURNx Посмотреть сообщение
очень большая ошибка
см. внимательно фразу "он у вас не будет выполнять никаких действий". а так конечно да - дайте два
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.11.2014, 11:02
Помогаю со студенческими работами здесь

Классическая задача ООП: геометрические фигуры
Решить эту задачу не составляет труда, сталкивался с ней уже. Самому интересно взглянуть чужой код, а лучше посмотреть решение...

ООП виртуальные функции
ЗАДАНИЕ: Создать абстрактный базовый класс Pair с виртуальными арифметическими операциями. Создать производные классы Money и Complex....

ООП или функции
Привет форумчанам! Такой вопрос нарисовался, Везде ли стоит применять ООП ? Например сейчас пишу маленький блог с простеньким...

ООП Дружественные Функции, Операторы.
Собственно задание : Создать класс вещественных чисел. Определить оператор - , как функцию-член и + как дружественную функцию. ...

Ошибка, виртуальные функции, ООП
Вот код, ошибка на 79 строке когда нужно вывести имя, пишет что указатель не туда указывает // vitrpers.cpp // виртуальные функции и...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru