Форум программистов, компьютерный форум CyberForum.ru

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

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

Наследование классов. Не работает вывод площади - C++

01.04.2016, 12:26. Просмотров 123. Ответов 3
Метки нет (Все метки)

Не выводит площадь треугольника. От линии наследуется треугольник. Код прилагается
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
#include<iostream>
using namespace std;
class cLine
{ 
protected:
    int x, y, xx, yy;
public:
    cLine();
    cLine(int x1, int y1, int xx1, int yy1);
    ~cLine() { cout << "Distructor cLine" << endl; }
    virtual int get_x()const { return x; }
    virtual int get_y()const { return y; }
    virtual int get_xx()const { return xx; }
    virtual int get_yy()const { return yy; }
    void set_x(int x1) { x = x1; }
    void set_y(int y1) { y = y1; }  
    void set_xx(int xx1) { xx = xx1; }
    void set_yy(int yy1) { yy = yy1; }
    virtual void Show()const;
     double area()const;
};
class cTriangle :public cLine
{
protected:
    int X, Y;
public:
    cTriangle();
    cTriangle(int x1, int y1, int xx1, int yy1, int X1, int Y1);
    ~cTriangle() { cout << "Distructor cTriangle" << endl; };
    virtual int get_X()const { return X; }
    virtual int get_Y()const { return Y; }
    void set_X(int X1) { X = X1; }
    void set_Y(int Y1) { Y = Y1; }
    virtual void Show()const;
     double area()const;
};
class cPrism : public cTriangle
{
protected:
    int H;
public:
    cPrism();
    cPrism(int x1, int y1, int xx1, int yy1, int X1, int Y1, int H1);
    ~cPrism() { cout << "Distructor cTriangle" << endl; };
    virtual int get_H()const { return H; }
    void set_H(int H1) { H = H1; }
    virtual void Show()const;
    double area()const;
};
cLine::cLine()
{
    cout << "x=";
    cin >> x;
    cout << "y=";
    cin >> y;
    cout << "xx=";
    cin >> xx;
    cout << "yy=";
    cin >> yy;
}
cLine::cLine(int x1, int y1, int xx1, int yy1) :x(x1), y(y1), xx(xx1), yy(yy1)
{
    cout << "Constructor" << endl;
}
cTriangle::cTriangle()
{
    cout << "X=";
    cin >> X;
    cout << "Y=";
    cin >> Y;
}
cTriangle::cTriangle(int x1, int y1, int xx1, int yy1, int X1, int Y1) :cLine(x1, y1, xx1, yy1), X(X1), Y(Y1)
{
    cout << "Constructor" << endl;
}
cPrism::cPrism()
{
    cout << "H= " << endl;
    cin >> H;
}
cPrism::cPrism(int x1, int y1, int xx1, int yy1, int X1, int Y1, int H1) :cTriangle(x1, y1, xx1, yy1, X1, Y1), H(H1)
{
    cout << "Constructor" << endl;
}
void cLine::Show()const
{
    cout << "x= " << x << ", y= " << y << ", xx= " << xx << ", yy=" << yy << endl;
    cout <<""<< area() << endl;
}
void cTriangle::Show()const
{
    cLine::Show();
    cout << "X= " << X << ", Y= " << Y << endl;
    cout <<"Area= " <<area()<<endl;
}
void cPrism::Show()const
{
    cTriangle::Show();
    cout << "H= " <<H << endl;
    cout <<"Volume= "<< area()<<endl;
}
double cLine::area()const
{
    return sqrt((x - xx)*(x - xx) + (y - yy)*(y - yy));
}
double cTriangle::area()const
{
    double a, b, c, p;
    a = sqrt((x - xx)*(x - xx) + (y - yy)*(y - yy));
    b = sqrt((X - xx)*(X - xx) + (Y - yy)*(Y - yy));
    c = sqrt((x - X)*(x - X) + (y - Y)*(y - Y));
    p = (a + b + c) / 2;
    return sqrt(p*(p - a)*(p - b)*(p - c));
}
double cPrism::area()const 
{
    double s = cTriangle::area();
    return s*H;
}
int main()
{
    cPrism Q;
    Q.Show();
    system("pause");
    return 0;
}
спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2016, 12:26     Наследование классов. Не работает вывод площади
Посмотрите здесь:

Наследование классов - C++
Дан базовый класс, показать как он будет наследоваться произвольным классом class planet { int moons; double diameters; public; ...

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

Наследование классов - C++
Доброго времени суток! Стоит следующая учебная задача: есть 3 класса потомка (в моем случае типы авто: легковое, грузовое, автобус) с...

наследование классов - C++
Здарова, народ! :D Вот сижу и пытаюсь сделать задание из книги по которой &quot;учимся программировать в универе&quot;, а там такой поворот...

Наследование классов - C++
Здравствуйте, извините за глупый вопрос, но у меня проблема в следующем: Имеется базовый класс class TestFirst{ public: int...

Наследование классов - C++
никак не разберусь с наследованием, у нас тут в методичке дана по нему общая инфа, надо сделать как в методичке, но так не получается......

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

Наследование классов - C++
Читал о наследовании классов. Там приводился такой пример: class Weapon { ... }; class MP5 : public Weapon { ...

Наследование классов - C++
Здравствуйте всем! Классы и наследования еще не изучил а задали решить задачу. Просьба может у кого - нибудь есть что -то подобное(или...

наследование классов - C++
Помогите, пожалуйста. как соотносяться между собой размеры экземпляров базового и производного классов


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
meJevin
155 / 147 / 58
Регистрация: 18.11.2015
Сообщений: 644
Завершенные тесты: 1
01.04.2016, 12:48     Наследование классов. Не работает вывод площади #2
Ты, по-моему, в конструкторе в мэйне должен какие-то значения указать, нет? Потому что дефолтного у тебя нету, который бы ту же x или y ставил равным чему-то. Получается, они не инициализированы?
zss
Модератор
Эксперт С++
6286 / 5889 / 1909
Регистрация: 18.12.2011
Сообщений: 15,121
Завершенные тесты: 1
01.04.2016, 12:51     Наследование классов. Не работает вывод площади #3
Все выполняется вполне корректно.
С учетом того, что Вам вздумалось это делать для целых чисел, а не для действительных
Наследование классов. Не работает вывод площади
Кстати, мне пришлось добавить функцию
C++
1
2
3
4
double sqrt(int x)
{
    return sqrt((double)x);
}
Т.к. такой у компилятора нет.
zss
Модератор
Эксперт С++
6286 / 5889 / 1909
Регистрация: 18.12.2011
Сообщений: 15,121
Завершенные тесты: 1
01.04.2016, 12:53     Наследование классов. Не работает вывод площади #4
meJevin, Вы плохо знаете формулу Герона
Yandex
Объявления
01.04.2016, 12:53     Наследование классов. Не работает вывод площади
Ответ Создать тему
Опции темы

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