Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Удаление структур https://www.cyberforum.ru/ cpp-beginners/ thread2179013.html
Здравствуйте! Такая проблема - пишу задачу видео магазин, ф-цию ввода и вывода написал, а удаления не могу:( Помогите закончить задачу. На сайте я нашел несколько тем по структурам, но как а обычно...
C++ Как изменить тип данных на абстрактный?
#include <iostream> #include <cstdlib> using namespace std; double *getSequence(int n) { double *sequence = new double; for (int i = 0; i < n; i++) { cout << "Enter A" << (i + 1) << ":...
C++ Переписать в новый массив элементы матрицы, кратные заданному значению Дана матрица А n*m. Переписать в новый массив d элементы матрицы, кратные заданному значению А https://www.cyberforum.ru/ cpp-beginners/ thread2178972.html C++ Перегрузка бинарных операторов для структуры в шаблонной функции Добрый вечер уважаемые. Прошу помочь т.к. компилятор решил поставить меня в угол) Текст ошибки: 006.cpp(21): error C2804: бинарный "operator *" имеет слишком много параметров ... https://www.cyberforum.ru/ cpp-beginners/ thread2178964.html
C++ Как понять программу
У меня присутствует данный код: #include <iostream> #include <cstring> using namespace std; const int ArSize = 20; int main() { cout<<"Enter a word:\n";
C++ Ошибка линковки https://www.cyberforum.ru/ cpp-beginners/ thread2178943.html
Вот список инклудов: #define _CRT_SECURE_NO_WARNINGS #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <ShlObj.h> #include <windows.h> #include <shellapi.h> #include...
C++ Найти корень с погрешностью https://www.cyberforum.ru/ cpp-beginners/ thread2178927.html
Здравствуйте. Дано уравнение и надо найти корень методом дихотомии с погрешностью. Вот программа, но надо написать функцию как параметр. К сожалению, я не знаю как это сделать. Помогите пожалуйста....
C++ Sha512 получить хеш по ключу
Ребят всем привет, помогите пожалуйста, уже несколько часов пытаюсь в инете найти решение своей проблемы, в чём суть - нужно сгенерировать хеш из данных с ключём, короче аналог пхп функции...
C++ Дано четырехзначное натуральное число. Выяснить какая из двух его частей больше Дано четырехзначное натуральное число. Выяснить какая из двух его частей больше. https://www.cyberforum.ru/ cpp-beginners/ thread2178912.html C++ Не понимаю битовый сдвиг https://www.cyberforum.ru/ cpp-beginners/ thread2178897.html
int k; // переменная k -целая k=32;// k приравнивается к 32 k= k << 4 >> 3; // ? а эта строка?? Объясните пожалуйста...
C++ Поток ввода cin
vector<string> str; for (string s; cin >> s && !s.empty(); str.push_back(s)); // !!! for (auto &i : str) for (auto &j : i) j = toupper(j); for (decltype(str.size()) i = 0; i <...
C++ Преобразование типов в операция присваивания https://www.cyberforum.ru/ cpp-beginners/ thread2178881.html
Добрый вечер, форумчане. Я новичок в программировании, изучаю C++. Читаю книгу "C++ Шаг за шагом" - Герберт Шилдт. Прошу вас объяснить мне тему "Преобразование типов в операция присваивания". Вот...
6033 / 2150 / 750
Регистрация: 10.12.2010
Сообщений: 5,996
Записей в блоге: 3
06.02.2018, 14:27 0

Создать абстрактный базовый класс "Фигура" с виртуальной функцией: "Площадь" - C++ - Ответ 12095757

06.02.2018, 14:27. Показов 3892. Ответов 1
Метки (Все метки)

Лучший ответ Сообщение было отмечено Lawr443362777 как решение

Решение

Сделал чуть по-другому, но если надо, то сможете по образцу переделать. Сделаны круг, прямоугольник, параллелограмм. Джава-стайл для скорости написания.
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
#ifndef _FIGURES_H_
#define _FIGURES_H_
 
#include <cmath>
 
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif
 
class AbstractFigure
{
  protected:
    double area;
    double perimeter;
    
    virtual void recalculateProperties() = 0;
    
  public:
    double getArea() {return area;}
    double getPerimeter() {return perimeter;}
    
    virtual ~AbstractFigure(){}
};
 
class Circle: public AbstractFigure
{
  private:
    double r;
    
  public:
    Circle(const double r)
    {
      this->r = r;
      recalculateProperties();
    }
    
    double getR() {return r;}
    void setR(const double r) 
    {
      this->r = r;
      recalculateProperties();
    }
 
  protected:
    virtual void recalculateProperties()
    {
      area = M_PI * r * r;
      perimeter = 2.0 * M_PI * r;
    }
};
 
class Rectangle: public AbstractFigure
{
  private:
    double a;
    double b;
    
  public:
    Rectangle(const double a, const double b)
    {
      this->a = a;
      this->b = b;
      recalculateProperties();
    }
    
    double getA() {return a;}
    double getB() {return b;}
    void setA(const double a) 
    {
      this->a = a;
      recalculateProperties();
    }
    
    void setB(const double b) 
    {
      this->b = b;
      recalculateProperties();
    }
    
  protected:
    virtual void recalculateProperties()
    {
      area = a * b;
      perimeter = 2.0 * (a + b);
    }
};
 
class Parallelogram: public AbstractFigure
{
  private:
    double a;
    double b;
    double alpha;
    
  public:
    Parallelogram(const double a, const double b, const double alpha)
    {
      this->a = a;
      this->b = b;
      this->alpha = alpha;
      recalculateProperties();
    }
    
    double getA() {return a;}
    double getB() {return b;}
    double getAlpha() {return alpha;}
    void setA(const double a)
    {
      this->a = a;
      recalculateProperties();
    }
    
    void setB(const double b)
    {
      this->b = b;
      recalculateProperties();
    }
    
    void setAlpha(const double alpha)
    {
      this->alpha = alpha;
      recalculateProperties();
    }
    
  protected:
    virtual void recalculateProperties()
    {
      perimeter = 2.0 * (a + b);
      area = a * b * sin(alpha);
    }
};
 
#endif
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
#include <iostream>
#include <vector>
#include <memory>
#include <typeinfo>
 
#include "Figures.h"
 
int main()
{
  std::vector<std::unique_ptr<AbstractFigure>> v;
  
  v.push_back(std::make_unique<Circle>(4.0));
  v.push_back(std::make_unique<Rectangle>(2.0, 3.0));
  v.push_back(std::make_unique<Parallelogram>(4.32, 11.71, 40.5));
  
  int i = 0;
  for (auto& figure : v)
  {
    std::cout << "Item " << ++i << " is " << typeid(*figure).name()
      << " , P = " << figure->getPerimeter() << ", S = " << figure->getArea()
      << std::endl;
  }
  
  return 0;
}


Вернуться к обсуждению:
Создать абстрактный базовый класс "Фигура" с виртуальной функцией: "Площадь" C++
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.02.2018, 14:27
Готовые ответы и решения:

Абстрактный базовый класс "звонок" с виртуальной функцией "стоимость"
Помогите пожалуйста очень надо (классы это не мое) полиморфизм Поступающие звонки оператор...

Создать абстрактный класс "Издание" и производные классы "Книга", "Статья", "Электронный ресурс"
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран информацию об...

Создать класс "Стакан" с виртуальной функцией "Объем"
Создать класс с виртуальной функцией - Объем стаканов (3). Реализовать в программе вывод...

Создать базовый класс "Животные" и производные классы "кошки" и "собаки"
Создать базовый класс &quot;Животные&quot;. Создать производные классы кошки и собаки. Поля класса с уровнем...

1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.02.2018, 14:27

Базовый класс "Изделие" и производные классы "Мышь", "Клавиатура", "Монитор"
/*Создать класс изделие, с полями себестоимость, цена, время выполнения, стоимость нормочаса и...

Базовый класс "Источник напряжения", производные классы "Цепь" и "Аккумулятор"
Дали задачу по программированию: составить класс &quot;Источник напряжения&quot;, для которого нужно...

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания"
Создать класс Книга поля: название книги,количество страниц,год издания методы: вычислить сколько...

Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления"
Помогите с кодом написания задачи, не понимаю как написать классы в классе. Нужно создать класс...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru