Winni Назад Добавьте в классы Конус и Цилиндр функции, которые возвращают тип объекта.

Добавьте в классы Конус и Цилиндр функции, 
которые возвращают тип объекта. 
Изучите полиморфное поведение функций для расчета объема. 

Текст программы:

#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 (упакованный)
Rambler's Top100
Hosted by uCoz