0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 14
1

наследование

02.04.2011, 12:57. Показов 783. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задача :
Базовый класс:
class Shape2D
{
public:
Shape2D();
virtual ~ Shape2D();
virtual float Area( )= 0;
virtual float Perimeter() = 0;
virtual void PrintMessage();
};
Shape2D() – конструктор Базового класса.
~ Shape2D() – деструктор базового класса.
Area() – возвращает значение площади фигуры.
Perimeter() – возвращает значение периметру фигуры.
PrintMessage() – выводит сообщение о типе фигуры.

Производные классы Triangle и Rectangle
Определить необходимые для производных классов параметры и переопределить необходимые функции.

вот что я написал:
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
//shape.h
#include <math.h>
#include <iostream>
using namespace std;
 
class Shape2D  
{   
public:
    Shape2D()
    {}
    virtual ~ Shape2D()
    {}
    virtual float Area()=0;
    virtual float Perimeter()=0;
    virtual void PrintMessage();
};
 
class Triangle : public Shape2D
{
public:
    Triangle(const Triangle& trngl);
    float Triangle::Area (float a=3, float b=4, float c=5);
    float Triangle::Perimeter(float a=3, float b=4, float c=5);
    virtual void Triangle::PrintMessage();
    virtual ~ Triangle () {}
};
 
class Rectangle : public Shape2D
{
public :
    Rectangle(const Rectangle& rct);
    float   Rectangle::Area( float a=4, float b=5);
    float Rectangle::Perimetr( float a=4, float b=5);
    virtual void Rectangle::PrintMessage();  
  virtual~Rectangle() {}
};
 
//shape.cpp
 
#include "Shape.h"
Triangle::Triangle(const Triangle& trngl)
{
        *this = trngl ;
}
float Triangle::Area ( float a, float b, float c)
    {
        float p=(a+b+c)/2;
        float S=sqrt(p*(p-a)*(p-b)*(p-c));
        return S;
    }
    float Triangle::Perimeter(float a, float b, float c)
    {
        float P=a+b+c;
        return P;
    }
     void Triangle::PrintMessage()
    {
        cout<<"Triangle \n"<<"Area:\n"<<&Triangle::Area<<endl<<"Perimetr:\n"<<&Triangle::Perimeter<<endl;
    }
 
 
 
     Rectangle::Rectangle(const Rectangle& rct)
{
    *this = rct ;
}
     float  Rectangle::Area(float a,float b)
  {
        float S=a*b;
        return S;
  }
  float Rectangle::Perimetr( float a, float b)
  {
      float P=2*(a+b);
      return P;
  }
   void Rectangle::PrintMessage()
  {
 cout<<"Rectangle\n"<<"Area:\n"<<&Rectangle::Area<<endl<<"Perimetr:\n"<<&Rectangle::Perimetr<<endl;
  }
 
//main.cpp
 
#include <iostream>
#include <math.h>
#include <conio.h>
#include "Shape.h"
using namespace std;
 
int main ()
{
    Triangle trngl1(4,5,6);
    Triangle.Area();
}
я понимаю что проблема в меин файле, но не знаю, как описать визов абстрактного класса. но может проблема глубже, я не могу разобраться
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.04.2011, 12:57
Ответы с готовыми решениями:

Заменить наследование классов на наследование интерфейсов
#include &lt;iostream&gt; #include &lt;assert.h&gt; using namespace std; int people_on_base = 100; int...

Наследование в С++
Здравствуйте, написал вот код для программы с наследованием, работает, но когда вычисляет площадь,...

Наследование
1) Определить класс корова состоящее из следующих полей: идентификационный номер – должно быть...

Наследование
Подскажите,пожалуйста,новичку в чем ошибка.Создал класс человек,создал класс студент,кот.наследует...

3
60 / 60 / 17
Регистрация: 12.10.2010
Сообщений: 129
02.04.2011, 13:31 2
Цитата Сообщение от azaron Посмотреть сообщение
Triangle trngl1(4,5,6);
Что это такое?
0
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 14
02.04.2011, 14:05  [ТС] 3
пробивал так визвать функцию с заданими параметрами
0
60 / 60 / 17
Регистрация: 12.10.2010
Сообщений: 129
02.04.2011, 20:12 4
Цитата Сообщение от azaron Посмотреть сообщение
пробивал так визвать функцию с заданими параметрами
Сначала напишите его(конструктор) в класах.
0
02.04.2011, 20:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.04.2011, 20:12
Помогаю со студенческими работами здесь

Наследование
Добрый вечер, помогите пожалуйста с наследованием. Написал программу ( ниже ), но как видите...

Наследование
Реализовать наследование классов квартиры,этаж,подъезд,дом

Наследование
Суть задачи: Реализуйте класс символьная строка,наследуйте от него класс двоичная строка....

Наследование
Доброго времени суток? Написал программу,хочу,чтобы наследовался вывод на экран(метод print и...


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

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

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