Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
bmp22
0 / 0 / 1
Регистрация: 16.10.2016
Сообщений: 73
1

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

24.05.2017, 19:49. Просмотров 1598. Ответов 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
Ответы с готовыми решениями:

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

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

Создать абстрактный базовый класс с виртуальными методами вычисления функции y в заданной точке х
создать абстрактный базовый класс function с виртуальными методами вычисления...

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

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

23
bmp22
0 / 0 / 1
Регистрация: 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
18527 / 12032 / 2508
Регистрация: 24.12.2010
Сообщений: 24,325
24.05.2017, 23:00 3
Цитата Сообщение от bmp22 Посмотреть сообщение
результат выводится всего на мгновение
Окно появляется на доли секунды и исчезает
0
anapshy
199 / 199 / 176
Регистрация: 14.11.2016
Сообщений: 768
Завершенные тесты: 3
24.05.2017, 23:08 4
Проверки на то, является фигура трапецией при вводе данных не предусмотрены? Тоже касаемо и прямоугольника.
0
bmp22
0 / 0 / 1
Регистрация: 16.10.2016
Сообщений: 73
24.05.2017, 23:26  [ТС] 5
Мне нужны построчные комментарии и у меня не стояла задача проверки
0
Azazel-San
Mental handicap
124 / 124 / 65
Регистрация: 24.11.2015
Сообщений: 825
Завершенные тесты: 1
24.05.2017, 23:28 6
Цитата Сообщение от bmp22 Посмотреть сообщение
и результат выводится всего на мгновение
запускайте программу, если вы конечно в VS, комбинацией клавиш Ctrl+f5
1
bmp22
0 / 0 / 1
Регистрация: 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
Почтальон
Модератор
698 / 575 / 119
Регистрация: 22.03.2015
Сообщений: 3,922
Завершенные тесты: 2
25.05.2017, 07:50 8
Одногруппники чтоль......
Реализовать абстрактный базовый класс «Фигура»
0
bmp22
0 / 0 / 1
Регистрация: 16.10.2016
Сообщений: 73
25.05.2017, 08:23  [ТС] 9
Прочитайте внимательно условие,они не совпадают. Тем более мне непронятно у него вот это
Rectangle(double _a, double _b) : a(_a), b(_b) {}.Что означает a(_a) хоть и выглядит глупо
0
karaulov6
23 / 23 / 6
Регистрация: 23.03.2013
Сообщений: 243
Завершенные тесты: 2
25.05.2017, 08:34 10
Комментарий только один:
C++
1
//хрень какая-то :D
по идее должно площадь выводить
0
bmp22
0 / 0 / 1
Регистрация: 16.10.2016
Сообщений: 73
25.05.2017, 08:40  [ТС] 11
Я понимаю, что хрень но мне просто нужны построчные комменты
0
Почтальон
Модератор
698 / 575 / 119
Регистрация: 22.03.2015
Сообщений: 3,922
Завершенные тесты: 2
25.05.2017, 08:40 12
Цитата Сообщение от bmp22 Посмотреть сообщение
Прочитайте внимательно условие,они не совпадают.
Да какая разница в чем условие ? Суть создания класса от этого не меняется, меняются методы в классе.
0
bmp22
0 / 0 / 1
Регистрация: 16.10.2016
Сообщений: 73
25.05.2017, 08:41  [ТС] 13
Я дописать не знаю как, поэтому пишу сюда
0
Почтальон
Модератор
698 / 575 / 119
Регистрация: 22.03.2015
Сообщений: 3,922
Завершенные тесты: 2
25.05.2017, 08:43 14
Ну вот вы создали классы и методы. А где вы их используете в основной программе ?
1
bmp22
0 / 0 / 1
Регистрация: 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
anapshy
199 / 199 / 176
Регистрация: 14.11.2016
Сообщений: 768
Завершенные тесты: 3
25.05.2017, 08:51 16
Посмотри видео-уроки, хотя бы основ С++, и не какие комментарии не нужны будут
0
bmp22
0 / 0 / 1
Регистрация: 16.10.2016
Сообщений: 73
25.05.2017, 08:53  [ТС] 17
Если бы у меня было время....
0
anapshy
199 / 199 / 176
Регистрация: 14.11.2016
Сообщений: 768
Завершенные тесты: 3
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 Посмотреть сообщение
Если бы у меня было время....
Если это не твоё, тогда зачем продолжать?
1
bmp22
0 / 0 / 1
Регистрация: 16.10.2016
Сообщений: 73
25.05.2017, 09:29  [ТС] 19
а можно конкретно по тому коду который я скинул
0
Alexandrietz
2 / 2 / 0
Регистрация: 03.05.2016
Сообщений: 70
30.05.2017, 09:10 20
Так вроде объекты создатся не могут, ибо все классы - абстрактные.
0
30.05.2017, 09:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.05.2017, 09:10

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

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

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


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

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

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