Добавьте в классы Конус и Цилиндр функции, которые возвращают тип объекта.
Добавьте в классы Конус и Цилиндр функции,
которые возвращают тип объекта.
Изучите полиморфное поведение функций для расчета объема.
Текст программы:
#include <conio.h>
#include <iostream.h>
#include <math.h>
// ************** class okr *************
class okr
{ protected:
float r;
public:
okr ();
okr (float xr);
~okr ();
void SetR (float rc);
float GetR();
float plo ();
};
okr::okr() {}
okr::okr(float xr) { r=xr;}
okr::~okr () {}
void okr::SetR (float rc) { r=rc;}
float okr::GetR() {return r;}
float okr::plo () { return M_PI*r*r; }
// ************** class zilindr **************
class zilindr: public okr
{ protected:
float h;
public:
zilindr ();
zilindr (float xr, float xh);
~zilindr ();
void SetH (float hc);
float GetH();
float ob();
void vivod ();
void vvod ();
char * ima();
};
zilindr::zilindr() { }
zilindr::zilindr (float xr, float xh) : okr (xr)
{ h=xh; }
zilindr::~zilindr () { }
void zilindr::SetH (float hc) { h=hc;}
float zilindr::GetH(){return h;}
float zilindr::ob() { return plo()*h;}
void zilindr::vivod ()
{ cout <<"\n"<<"радиус основания "<< r ;
cout <<"\n высота "<< h ;
}
void zilindr::vvod ()
{ float rc;
cout <<"\nВведите радиус ";
cin >> r ;
cout <<"\n высоту ";
cin >> h ; }
char * zilindr::ima() { return ("Цилиндр");}
// ************** class konus ****************
class konus: public zilindr
{ public:
konus ();
konus (float xr, float xh);
~konus ();
float ob();
char * ima();
};
konus::konus() { }
konus::konus (float xr, float xh) : zilindr (xr,xh) { }
konus::~konus () { }
float konus::ob(){ return plo()*h/3;}
char * konus::ima() { return ("Конус");}
void main()
{
konus *u;
u=new konus;
cout <<"\n"<<u->ima()<<" u";
u->vvod();
cout<<"\n\tПлощадь основания "<<u->plo();
cout<<"\n\tОбъем "<<u->ob();
cout <<"\nРассмотрим u как указатель на цилиндр";
cout <<"\n"<<u->zilindr::ima()<<" u";
cout<<"\n\tПлощадь основания "<<u->plo();
cout<<"\n\tОбъем "<<u->zilindr::ob();
cout<<"\n Для выхода - нажмите клавишу";
getch();
}
Исполняемый файл pr13_00.exe (упакованный)
|