ИЗ
Ирина Золотова

C++ Наследование классов, треугольник и пирамида!

Создать класс пирамида наследие от класса треуголник.
Данные: Высота; (a,b,c-унаследует от треуголника) ;
Вводить данные о "n" треуголниках и "m" пирамид.
Вывести на екран все пирамиды и треуголники, пирамида и треугольник с максимальной площадью,
пирамида с максим объемом и треуголник с максимальным периметр.

Вот я пытался зделать этот программ но не понимаю дальше (( Помогите плиз!

с++Сod:

#include
#include
class triad{
protected:
double a,b,c;
public:
triad(){a=b=c=0;}
triad(double x,double y,double z){a=x;b=y;c=z;}
};

class triugolnik: public triad{
public:
triugolnik(){};
triugolnik(double x,double y,double z):triad(x,y,z){};
void read();
void show();
double perimetr();
double aria();
void verific_l();
int p;
};

class piramida: public triugolnik{
public:
piramida(){};
piramida(double x,double y,double z):triugolnik(x,y,z){};
double h;
void read();
void show();
double ploshiadi_p();
double Vol();

};


void triugolnik::read(){
cout<<"Vvedite 3 cisla:"< cin>>a; cin>>b; cin>>c;
}

void piramida::read(){
cout<<"Vvedite visatu:"< cin>>h;
}

void triugolnik::show(){
cout<<"a="< cout<<"b="< cout<<"c="< }

void piramida::show(){
cout<<"a="< cout<<"b="< cout<<"c="<
}

double triugolnik::perimetr(){return (a+b+c);}
double triugolnik::aria(){p=((a+b+c)/2); return (sqrt(p*(p-a)*(p-b)*(p-c)));}
void triugolnik::verific_l(){
if ((a<= b+c) && (b <= a+c) && (c <= a+b)){cout<<"triugolnik sushestfuet"< else {cout<<"triugolnik ne sushestfuet"<

}
main(){
triugolnik t[100];
int am,pm,i,n;
double ma=0,mp=0;

cout<<"Cislo triugolnikof:"< cin>>n;

for(i=0;i t[i].read();


if(ma ma=t[i].aria();am=i;
}

if(mp mp=t[i].perimetr();pm=i;
}

}

cout<<"|--------------------|"< cout<<"|Vse triugolnik:|"< cout<<"|--------------------|"< for(i=0;i t[i].show();
t[i].verific_l();
cout<<"-------"< }

cout<<"|----------------------------------|"< cout<<"| triugolnik s perimetrom max :|"< cout<<"|----------------------------------|"< t[pm].show();
cout<<"Perimetr maximalinii:"<
cout<<"|----------------------------|"< cout<<"| triugolnik s aria max :|"< cout<<"|----------------------------|"< t[am].show();
cout<<"Aria maxim:"<


return 0;
}

мне самому не нравится этот бред, но так заставляют...

Я знаю что много лишнего но так надо ((
Вот только P и проверка треуголника мой косяк ))

ЛБ
Лена Большакова

C++ Это визуальная среда. Все понятно. Работай.

На
Наталья

Для начала попробуйте разобраться просто с треугольником:
1. Не вижу смысла в классе triad, достаточно просто треугольника (без родителя)
2. Радует, что вы знаете, что не любая тройка чисел является сторонами треугольника, жаль только, что условие неправильное (должно быть СТРОГО <)
3. Но даже при таком кривом условии оно НЕ ИСПОЛЬЗУЕТСЯ при подсчёте периметра и площади (а ведь вам сказано: найти ТРЕУГОЛЬНИК с максимальной площадью и периметром)
4. Зачем вам поле p? Оно используется внутри метода, поэтому должно быть локальной переменной, а не полем.
5. Странный набор конструкторов - умолчательный пустой, а второй вообще не используется, при этом заполнение полей осуществляет метод read.

С пирамидой всё сложнее (есть проблемы с наследованием) :
1. Задание высоты и треугольника основания однозначно не определяет тетраэдр, поэтому периметр не имеет смысла (а из-за наследования он должен быть)
2. По той же причине площадь пирамины смысла не имеет, хотя и используется в формуле объёма: 1.0/3*площадь ()*высота

Этих двух методов достаточно для того, чтобы понять - пирамида не может быть наследником от треугольника, но если ОЧЕНЬ надо:
1. verific, show и read должны быть виртуальными, так как ДОЛЖНЫ быть и БЫТЬ разными для типов родитель и наследник (для show и read пирамиды допускается вызвать родительский метод)
2. площадь пирамиды посчитать невозможно, но площадь ОСНОВАНИЯ уже посчитана в родителе. Может это её нужно вывести? Или вы дали кривое условие?

Ищите примеры реализации и использования виртуальных методов. А также вызовы методов родительского класса из наследника.

Похожие вопросы
узнать угол зная 3 стороны треугольника C#
Сколько состовляющих боковых граней у пирамиды? Пирамида из треугольника
что известно о пирамиде в бермудском треугольнике ?
в языке C можно создавать классы? если можно то как ?
Из каких треугольников можно сделать пирамиду?
C++ Классы, вложенные классы
Обращение к переменной класса А из класса В (C#)
С++, классы и наследования
C++, векторы, класс-контейнер
C++ классы и структуры