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

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

Войти
Регистрация
Восстановить пароль
 
 
bmp22
0 / 0 / 0
Регистрация: 16.10.2016
Сообщений: 73
#1

Класс: Создать абстрактный базовый класс Figure с виртуальными методами вычисления площади и периметра. - C++

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

Создать абстрактный базовый класс 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2017, 19:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Класс: Создать абстрактный базовый класс Figure с виртуальными методами вычисления площади и периметра. (C++):

Создать абстрактный базовый класс Body (тело) с виртуальными методами вычисления площади поверхности и объема - C++
Создать абстрактный базовый класс Body (тело) с виртуальными методами вычисления площади поверхности и объема. Создать производные классы:...

1) Создать абстрактный класс Figure с методами вычисления площади и периметра, а также методом, выводящим информацию о фигуре на экран - C++
1) Создать абстрактный класс Figure с методами вычисления площади и периметра, а также методом, выводящим информацию о фигуре на экран. ...

Создать абстрактный базовый класс Root (корень) с виртуальными методами вычисления корней - C++
Здравствуйте, на завтра нужно сдать задачу, а я не знаю как решить, помогите пожалуйста Создать абстрактный базовый класс Root...

Создать абстрактный базовый класс с виртуальными методами вычисления функции y в заданной точке х - C++
создать абстрактный базовый класс function с виртуальными методами вычисления ф-ции y=f(x) в заданной точке х и вывода результата на...

Создать абстрактный базовый класс Тройка чисел с виртуальными методами увеличения на 1. Создать производный класс Время со своими функциями - C++
Здравствуйте, пожалуйста помогите написать код к данной задаче, с таким условием: Создать абстрактный базовый класс Тройка чисел с...

Создать абстрактный базовый класс Figure - C++
Здравствуйте,помогите пожалуйста с задачей. Создать абстрактный базовый класс Figure с виртуальной функцией - площадь поверхности....

23
bmp22
0 / 0 / 0
Регистрация: 16.10.2016
Сообщений: 73
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
16830 / 11095 / 1743
Регистрация: 24.12.2010
Сообщений: 21,790
24.05.2017, 23:00 #3
Цитата Сообщение от bmp22 Посмотреть сообщение
результат выводится всего на мгновение
Окно появляется на доли секунды и исчезает
0
anapshy
148 / 152 / 64
Регистрация: 14.11.2016
Сообщений: 592
Завершенные тесты: 3
24.05.2017, 23:08 #4
Проверки на то, является фигура трапецией при вводе данных не предусмотрены? Тоже касаемо и прямоугольника.
0
bmp22
0 / 0 / 0
Регистрация: 16.10.2016
Сообщений: 73
24.05.2017, 23:26  [ТС] #5
Мне нужны построчные комментарии и у меня не стояла задача проверки
0
Azazel-San
82 / 82 / 20
Регистрация: 24.11.2015
Сообщений: 577
Завершенные тесты: 1
24.05.2017, 23:28 #6
Цитата Сообщение от bmp22 Посмотреть сообщение
и результат выводится всего на мгновение
запускайте программу, если вы конечно в VS, комбинацией клавиш Ctrl+f5
1
bmp22
0 / 0 / 0
Регистрация: 16.10.2016
Сообщений: 73
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
Почтальон
Модератор
462 / 390 / 76
Регистрация: 22.03.2015
Сообщений: 3,025
Завершенные тесты: 1
25.05.2017, 07:50 #8
Одногруппники чтоль......
Реализовать абстрактный базовый класс «Фигура»
0
bmp22
0 / 0 / 0
Регистрация: 16.10.2016
Сообщений: 73
25.05.2017, 08:23  [ТС] #9
Прочитайте внимательно условие,они не совпадают. Тем более мне непронятно у него вот это
Rectangle(double _a, double _b) : a(_a), b(_b) {}.Что означает a(_a) хоть и выглядит глупо
0
karaulov6
-42 / 23 / 2
Регистрация: 23.03.2013
Сообщений: 243
Завершенные тесты: 2
25.05.2017, 08:34 #10
Комментарий только один:
C++
1
//хрень какая-то :D
по идее должно площадь выводить
0
bmp22
0 / 0 / 0
Регистрация: 16.10.2016
Сообщений: 73
25.05.2017, 08:40  [ТС] #11
Я понимаю, что хрень но мне просто нужны построчные комменты
0
Почтальон
Модератор
462 / 390 / 76
Регистрация: 22.03.2015
Сообщений: 3,025
Завершенные тесты: 1
25.05.2017, 08:40 #12
Цитата Сообщение от bmp22 Посмотреть сообщение
Прочитайте внимательно условие,они не совпадают.
Да какая разница в чем условие ? Суть создания класса от этого не меняется, меняются методы в классе.
0
bmp22
0 / 0 / 0
Регистрация: 16.10.2016
Сообщений: 73
25.05.2017, 08:41  [ТС] #13
Я дописать не знаю как, поэтому пишу сюда
0
Почтальон
Модератор
462 / 390 / 76
Регистрация: 22.03.2015
Сообщений: 3,025
Завершенные тесты: 1
25.05.2017, 08:43 #14
Ну вот вы создали классы и методы. А где вы их используете в основной программе ?
1
bmp22
0 / 0 / 0
Регистрация: 16.10.2016
Сообщений: 73
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
25.05.2017, 08:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2017, 08:50
Привет! Вот еще темы с ответами:

Создать абстрактный базовый класс с виртуальными функциями - площадь и периметр - C++
Помогите написать,не врублюсь как писать много пропустил (( Задание:Создать абстрактный базовый класс с виртуальными функциями - площадь ...

Создать абстрактный базовый класс Figure и производные классы Rectangle, Circle - C++
Создать абстрактный базовый класс Figure с виртуальными методами вычисления площади и периметра. Создать производные классы: Rectangle...

Создать абстрактный базовый класс Figure с виртуальной функцией Периметр. Создать производные классы Rectangle - C++
Создать абстрактный базовый класс Figure с виртуальной функцией -периметр.Создать производные классы Rectangle, Circle,Triangle,Rhomb в...

Создать абстрактный базовый класс Integer(целое) с виртуальными арифметическими операциями и функцией вывода на экран - C++
Помогите,пожалуйста! Не знаю как делать:( Создать абстрактный базовый класс Integer(целое) с виртуальными арифметическими операциями и...


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

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

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