Winni Назад Создайте классы Окружность, Цилиндр, Конус используя наследование. Изучается полиморфизм.

Создайте классы Окружность, Цилиндр, Конус используя наследование. 
Изучается полиморфизм.
Пусть окружность характеризуется радиусом. Обязательные функции: 
расчет площади окружности, функция для изменения значения радиуса, 
функция для вывода значения радиуса.
Цилиндр характеризуется радиусом основания и высотой. 
Обязательные функции: расчета объема цилиндра, функции для изменения 
значения и вывода радиуса основания и высоты.
Конус характеризуется радиусом основания и высотой. 
Обязательные функции: расчета объема конуса, функции 
для изменения значения и вывода радиуса основания и высоты. 

Описание классов 
1.Класс окружность (okr) 
Данные класса: r - радиус окружности, 
Функции класса: SetR изменяет значение r, 
GetR выдает значение r,
plo рассчитывает площадь окружности

2.Класс цилиндр (zilindr), производный от класса okr 
Данные класса: r - радиус основания (наследуется от okr) 
h - высота 
Функции класса: SetR, GetR, plo (наследуется от okr) 
SetH изменяет значение h, 
GetH выдает значение h, 
ob рассчитывает объем цилиндра 
vvod позволяет ввести r и h 
vivod выводит r и h 

3.Класс конус (konus), производный от класса zilindr 
Данные класса: r - радиус основания, 
h - высота (наследуется от okr) 
Функции класса: SetR, GetR, plo (наследуется от okr) 
SetH, GetH (наследуется от zilindr) 
vvod, vivod (наследуется от zilindr) 
ob рассчитывает объем конуса 

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

#include <conio.h>
#include <iostream.h>

// ********* okr *************
class okr
{ protected:
    float r;
  public:
    okr(float xr);
    okr();
    ~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; }

// ********* zilindr *************
class zilindr: public okr
{  protected:
     float h;
   public:
      zilindr (float xr, float xh);
      zilindr ();   
     ~zilindr ();   
      void  SetH (float hc);
      float GetH ();
      float ob();
      void vivod (); 
      void vvod ();
   };

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 ;    }               

// ********* konus *************
class  konus: public zilindr
{  public:
     konus  ();
     konus  (float xr, float xh); 
     ~konus ();
     float ob(); 
 };

konus::konus  ()  { }
konus::konus  (float xr, float xh) : zilindr (xr,xh) { }
konus::~konus ()  { }
float konus::ob() { return  plo()*h/3;}

void main()
{ zilindr s1;
  cout <<"\n\n\nЦилиндр s1";
  s1.vvod();
  cout <<"\n\tПлощадь основания " << s1.plo();
  cout <<"\n\tОбъем             " << s1.ob();
  
  konus s2;
  cout <<"\nКонус s2";
  s2.vvod();
  cout <<"\nИзмените размеры конуса s2";
  s2.vvod();
  cout <<"\nТеперь конус s2 имеет размеры";
  s2.vivod();
  cout <<"\n\tПлощадь основания "<<s2.plo();
  cout <<"\n\tОбъем             "<<s2.ob();

cout<<"\n Для выхода - нажмите клавишу";
getch();  
} 
Исполняемый файл pr12_00.exe (упакованный)
Rambler's Top100
Hosted by uCoz