Создайте классы Окружность, Цилиндр, Конус используя наследование. Изучается полиморфизм.
Создайте классы Окружность, Цилиндр, Конус используя наследование.
Изучается полиморфизм.
Пусть окружность характеризуется радиусом. Обязательные функции:
расчет площади окружности, функция для изменения значения радиуса,
функция для вывода значения радиуса.
Цилиндр характеризуется радиусом основания и высотой.
Обязательные функции: расчета объема цилиндра, функции для изменения
значения и вывода радиуса основания и высоты.
Конус характеризуется радиусом основания и высотой.
Обязательные функции: расчета объема конуса, функции
для изменения значения и вывода радиуса основания и высоты.
Описание классов
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 (упакованный)
|