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

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

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

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

01.04.2016, 12:26. Просмотров 128. Ответов 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;
}
спасибо
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2016, 12:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Наследование классов. Не работает вывод площади (C++):

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

Наследование классов. Копирование производных классов - C++
Здравствуйте всем, у меня такой вопрос: написал код #include &quot;stdafx.h&quot; class A //Создаем класс А { int mA; ...

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

наследование классов - C++
Помогите пожалуйста разобраться с задачей Создайте базу данных деканата. В ней фиксируются данные о 2 категориях студентах: студенты...

Наследование Классов с++ - C++
при компицяции выдаёт Unresolved external 'chelovek::chelovek(int,int,int)' referenced from ...*.OBJ В чом ошибка??? #include...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
meJevin
155 / 147 / 58
Регистрация: 18.11.2015
Сообщений: 658
Завершенные тесты: 1
01.04.2016, 12:48 #2
Ты, по-моему, в конструкторе в мэйне должен какие-то значения указать, нет? Потому что дефолтного у тебя нету, который бы ту же x или y ставил равным чему-то. Получается, они не инициализированы?
0
zss
Модератор
Эксперт С++
6382 / 5947 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 1
01.04.2016, 12:51 #3
Все выполняется вполне корректно.
С учетом того, что Вам вздумалось это делать для целых чисел, а не для действительных
Наследование классов. Не работает вывод площади
Кстати, мне пришлось добавить функцию
C++
1
2
3
4
double sqrt(int x)
{
    return sqrt((double)x);
}
Т.к. такой у компилятора нет.
0
zss
Модератор
Эксперт С++
6382 / 5947 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 1
01.04.2016, 12:53 #4
meJevin, Вы плохо знаете формулу Герона
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2016, 12:53
Привет! Вот еще темы с ответами:

Наследование классов - C++
Доброго времени суток. Обращаюсь за помощью к Вам. Язык С++ стал изучать недавно и столкнулся вот с такой проблемой: Рассмотрим класс...

Наследование классов - C++
Задание: Создать класс базовый класс «квадрат». Элементы класса (поля имеют статус доступа protected): поле, задающее длину...

Наследование от 2-х классов - C++
Возможна ли следующая структура: class A class B : class A class C : class A class D : class B : class C

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
01.04.2016, 12:53
Ответ Создать тему
Опции темы

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