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

Создать иерархию классов Figure

24.05.2017, 19:49. Показов 31629. Ответов 23
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Создать абстрактный базовый класс Figure с виртуальными методами
вычисления площади и периметра. Создать производные классы: Rectangle (Прямоугольник), Circle (Круг),
Trapezium (Трапеция) со своими функциями площади и периметра. Самостоятельно определить, какие поля из них можно задать в базовом классе, а какие- в производных.
Писать программу начал,а как закончить не знаю
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
#include <iostream.h>
 
class Figure
{
    public:
        Figure(){}
        ~Figure(){}
        virtual long GetArea() = 0;
        virtual long GetPerim() = 0;
        
    private:
};
 
class Circle:public Figure
{
    private:
        int itsRadius;
 
    public:
        Circle(int radius):itsRadius(radius){}
        ~Circle(){}
        long GetArea(){return 3*itsRadius*itsRadius;}
        long GetPerim() {return 6*itsRadius;} 
        
    
};
 
 
 
class Rectangle:public Figure
{
    private:
        int itsWidth;
        int itsLength;
    public:
        Rectangle(int len, int width)
            :itsLength(len), itsWidth(width){}
        ~Rectangle(){}
         long GetArea(){return itsLength*itsWidth;}
         long GetPerim() {return 2*itsLength + 2*itsWidth;} 
         int GetLength(){return itsLength;}
         int GetWidth(){return itsWidth;}
         
};
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.05.2017, 19:49
Ответы с готовыми решениями:

Создать иерархию классов Шахматная фигура – абстрактный класс, содержащий поле – цвет. Создать производные классы
Создать иерархию классов Шахматная фигура – абстрактный класс, содержащий поле – цвет. Создать...

Создать иерархию классов Транспорт
Створіть базовий клас Транспорт з двома захищеними полями (вартість, призначення). Придумайте та...

Не получается создать иерархию классов
Пытаюсь реализовать что-то вроде шаблонного метода: основная логика отрисовки лежит в базовом...

Создать иерархию классов язык с++
Создать иерархию классов язык с++ Жидкость&lt;-Напиток Жидкость&lt;-Топливо Жидкость&lt;-Реагент...

23
0 / 0 / 1
Регистрация: 16.10.2016
Сообщений: 76
24.05.2017, 22:35  [ТС] 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
#include <iostream>
using namespace std;
 
 
class Figure
{
    public:
    virtual double Area() const = 0;
    virtual double Perimetr() const = 0;
    virtual void Show() const = 0;
    virtual ~Figure() {}
};
 
class Trapezium : public Figure
{
    double a,b,c,d,h;
    public:
    Trapezium(double _a, double _b,double _h,double _c,double _d) : a(_a), b(_b),h(_h),d(_d) {}
    ~Trapezium() {}
    double Area() const {return 0.5*a*b*h;}
    double Perimetr() const {return a+b+c+d;}
    void Show() const {cout<<"*** Trapezium ***"<<endl;}
};
 
class Circle  : public Figure
{
    double r;
    public:
     Circle (double _r) : r(_r) {}
    ~Circle () {}
    double Area() const {return 3.14*r*r;}
    double Perimetr() const {return 3.14*2*r;}
    void Show() const {cout<<"*** Circle ***"<<endl;}
};
class Rectangle  : public Figure
{
    double a,b;
    public:
     Rectangle(double _a, double _b) : a(_a), b(_b) {}
    ~Rectangle () {}
    double Area() const {return a*b;}
    double Perimetr() const {return 2*a*b;}
    void Show() const {cout<<"*** Rectangle ***"<<endl;}
};
 
int main() 
{
    Figure *figure[3];
    figure[0] = new Trapezium(12.56,13.16,11.12,5.12,2.41);
    figure[1] = new Circle(12.56);
    figure[2] = new Rectangle(12.56,12.56);
    for (int i=0;i<3;i++)
    {
        cout<<figure[i]->Area()<<endl;
        cout<<figure[i]->Perimetr()<<endl;
        figure[i]->Show();
        delete figure[i];
        
    }
    return 0;
}
0
Диссидент
Эксперт C
27709 / 17325 / 3811
Регистрация: 24.12.2010
Сообщений: 38,979
24.05.2017, 23:00 3
Цитата Сообщение от bmp22 Посмотреть сообщение
результат выводится всего на мгновение
Окно появляется на доли секунды и исчезает
0
308 / 271 / 220
Регистрация: 14.11.2016
Сообщений: 1,049
24.05.2017, 23:08 4
Проверки на то, является фигура трапецией при вводе данных не предусмотрены? Тоже касаемо и прямоугольника.
0
0 / 0 / 1
Регистрация: 16.10.2016
Сообщений: 76
24.05.2017, 23:26  [ТС] 5
Мне нужны построчные комментарии и у меня не стояла задача проверки
0
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
24.05.2017, 23:28 6
Цитата Сообщение от bmp22 Посмотреть сообщение
и результат выводится всего на мгновение
запускайте программу, если вы конечно в VS, комбинацией клавиш Ctrl+f5
1
0 / 0 / 1
Регистрация: 16.10.2016
Сообщений: 76
25.05.2017, 06:05  [ТС] 7
Нужна помощь с комментированием кода
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
#include <iostream>
using namespace std;
 
 
class Figure
{
    public:
    virtual double Area() const = 0;
    virtual void Show() const = 0;
    virtual ~Figure() {}
};
 
class Square : public Figure
{
    double a;
    public:
    Square(double _a) : a(_a) {}
    ~Square() {}
    double Area() const {return a*a;}
    void Show() const {cout<<"*** Square ***"<<endl;}
};
 
class Circle  : public Figure
{
    double r;
    public:
     Circle (double _r) : r(_r) {}
    ~Circle () {}
    double Area() const {return 3.14*r*r;}
    void Show() const {cout<<"*** Circle ***"<<endl;}
};
class Rectangle  : public Figure
{
    double a,b;
    public:
     Rectangle(double _a, double _b) : a(_a), b(_b) {}
    ~Rectangle () {}
    double Area() const {return a*b;}
    void Show() const {cout<<"*** Rectangle ***"<<endl;}
};
 
int main() 
{
    Figure *figure[3];
    figure[0] = new Square(12.56);
    figure[1] = new Circle(12.56);
    figure[2] = new Rectangle(12.56,12.56);
    for (int i=0;i<3;i++)
    {
        cout<<figure[i]->Area()<<endl;
        figure[i]->Show();
        delete figure[i];
        
    }
    return 0;
}
0
управление сложностью
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
25.05.2017, 07:50 8
Одногруппники чтоль......
Реализовать абстрактный базовый класс «Фигура»
0
0 / 0 / 1
Регистрация: 16.10.2016
Сообщений: 76
25.05.2017, 08:23  [ТС] 9
Прочитайте внимательно условие,они не совпадают. Тем более мне непронятно у него вот это
Rectangle(double _a, double _b) : a(_a), b(_b) {}.Что означает a(_a) хоть и выглядит глупо
0
23 / 23 / 6
Регистрация: 23.03.2013
Сообщений: 245
25.05.2017, 08:34 10
Комментарий только один:
C++
1
//хрень какая-то :D
по идее должно площадь выводить
0
0 / 0 / 1
Регистрация: 16.10.2016
Сообщений: 76
25.05.2017, 08:40  [ТС] 11
Я понимаю, что хрень но мне просто нужны построчные комменты
0
управление сложностью
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
25.05.2017, 08:40 12
Цитата Сообщение от bmp22 Посмотреть сообщение
Прочитайте внимательно условие,они не совпадают.
Да какая разница в чем условие ? Суть создания класса от этого не меняется, меняются методы в классе.
0
0 / 0 / 1
Регистрация: 16.10.2016
Сообщений: 76
25.05.2017, 08:41  [ТС] 13
Я дописать не знаю как, поэтому пишу сюда
0
управление сложностью
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
25.05.2017, 08:43 14
Ну вот вы создали классы и методы. А где вы их используете в основной программе ?
1
0 / 0 / 1
Регистрация: 16.10.2016
Сообщений: 76
25.05.2017, 08:50  [ТС] 15
Я сделал по аналогии с примером на который вы мне дали ссылку, но если меня спросить что означает какая-нибудь строка я не отвечу.Помогите закомментировать пожалуйста
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
#include <iostream>
using namespace std;
 
//объявляется класс Фигура 
class Figure
{
    public:
    virtual double Area() const = 0;
    virtual double Perimetr() const = 0;
    virtual void Show() const = 0;
    virtual ~Figure() {}
};
//объявляется класс трапеция, наследник от класса фигуры 
class Trapezium : public Figure
{
    double a,b,c,d,h;
    public:
    Trapezium(double _a, double _b,double _h,double _c,double _d) : a(_a), b(_b),h(_h),d(_d) {} //Конструктор класса
    ~Trapezium() {}
    double Area() const {return 0.5*a*b*h;} //метод класса
    double Perimetr() const {return a+b+c+d;}//метод класса, вычисляющий периметр
    void Show() const {cout<<"*** Trapezium ***"<<endl;//метод класса выводящий периметр}
};
//объявляется класса круг, наследник от фигуры 
class Circle  : public Figure
{
    double r;
    public:
     Circle (double _r) : r(_r) {}//конструктор класса
    ~Circle () {}
    double Area() const {return 3.14*r*r;}//метод класса вычисляющий площадь круга
    double Perimetr() const {return 3.14*2*r;}// метод класса 2Pir (не помню что это за формула, длина круга чтоль...)
    void Show() const {cout<<"*** Circle ***"<<endl;}
};
//объявляется класс прямоугольника, наследуется от фигуры
class Rectangle  : public Figure
{
    double a,b;
    public:
     Rectangle(double _a, double _b) : a(_a), b(_b) {}//конструктор класса
    ~Rectangle () {}
    double Area() const {return a*b;}//метод класса возвращающий площадь
    double Perimetr() const {return 2*a*b;}//метод класса выводит значение
    void Show() const {cout<<"*** Rectangle ***"<<endl;}
};
 
int main() 
{
    Figure *figure[3];//объявляется переменная типа массив фигур
    figure[0] = new Trapezium(12.56,13.16,11.12,5.12,2.41);//создается объект
    figure[1] = new Circle(12.56);//создается объект
    figure[2] = new Rectangle(12.56,12.56);//создается объект
    for (int i=0;i<3;i++)
    {
        cout<<figure[i]->Area()<<endl;
        cout<<figure[i]->Perimetr()<<endl;
        figure[i]->Show();
        delete figure[i];
        
    }
    system ("pause");
    return 0;
}
0
308 / 271 / 220
Регистрация: 14.11.2016
Сообщений: 1,049
25.05.2017, 08:51 16
Посмотри видео-уроки, хотя бы основ С++, и не какие комментарии не нужны будут
0
0 / 0 / 1
Регистрация: 16.10.2016
Сообщений: 76
25.05.2017, 08:53  [ТС] 17
Если бы у меня было время....
0
308 / 271 / 220
Регистрация: 14.11.2016
Сообщений: 1,049
25.05.2017, 09:24 18
Как ещё проще тебе объяснить, чтоб ты понял - не знаю. Если ты и этого не поймешь, то сорян:
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
int get() { return one; } // функция объявлена дружественной внутри класса, по этому можем использовать private переменную one
 
// начало объявления класса
class MyClass // имя класса
{
// this->переменная класса  -  указывает на то, что мы обращаемся к переменной класса
private: /* список переменных и функций для использования внутри класса */
  int one; // переменная
  friend int get(); // дружественная функция, которой доступны все методы и свойства класса
  void set (int &tmp) { ++tmp; } // функция доступная внутри класса
public: /* список методов доступных другим функциям и объектам программы */
  // в public не может быть функций (за исключением дружественных) - НЕ ПУТАТЬ С МЕТОДАМИ!!!
  // friend int get();  - 2я вариант объявления функции дружественной
  void set_f(int one) { this->one = one } // - метод класса, доступ можно получить через ' . ' или ' -> ' если объект является указателем
  virtual int get_f() { return this->one  } // - метод класса, virtual говорит о том, что при наследовании функция не будет перенесена в класс наследник
protected: /*список средств, доступных при наследовании*/
  // то же самое что и private, но при наследовании список переменных и функций наследуется
  int two; // во время наследование копируется в класс наследник
  void set_t(int &one) { ++tmp; } // функция доступная внутри класса копируется в класс наследник
}; // конец объявления класса MyClass
 
class YourClass : public MyClass { ... }; // public - всё, что унаследовалось, будет открыто для дальнейшего наследования
//private - всё что унаследовалось, будет закрыто для дальнейшего наследования
//protected - всё, что унаследовалось, будет открыто для дальнейшего наследования, не более одного раза
 
class YourClass_2 : protected MyClass { ... }; // все что можно наследуется от MyClass
class YourClass_3 : public YourClass_2 { ... }; // всё можно наследуется от MyClass & YourClass_2
class YourClass_4 : public YourClass_3 { ... }; // Наследуется только YourClass_3 и свойства/методы YourClass_3 & YourClass_2 без свойств/методов MyClass - в это и есть суть protected, что открыто для наследования 1 раз
З.ы. если где-то не прав - поправьте.
Цитата Сообщение от bmp22 Посмотреть сообщение
Если бы у меня было время....
Если это не твоё, тогда зачем продолжать?
2
0 / 0 / 1
Регистрация: 16.10.2016
Сообщений: 76
25.05.2017, 09:29  [ТС] 19
а можно конкретно по тому коду который я скинул
0
2 / 2 / 0
Регистрация: 03.05.2016
Сообщений: 141
30.05.2017, 09:10 20
Так вроде объекты создатся не могут, ибо все классы - абстрактные.
0
30.05.2017, 09:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.05.2017, 09:10
Помогаю со студенческими работами здесь

Создать иерархию классов датчик
Создать иерархию классов датчик – абстрактный базовый класс и датчики температуры, влажности и...

Создать иерархию классов массива чисел
Нужно создать программу иерархии классов массива чисел с использованием конструктора/деструктора....

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

Создать иерархию классов представляющих простое наследование
Ребята, необходимо решить 2 задачки. класс должен включать в себя : - компоненты данные...

Создать иерархию классов Item, Book и Magazin
Создать класс Item (единица хранения в библиотеке), содержащий данные-члены: invNumber –...

Создать иерархию классов представляющих простое наследование
Создать иерархию классов представляющих простое наследование. Базовый класс – матрица...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru