Создать класс, описывающий объект
ТРАПЕЦИЯ. Свойства класса должны быть минимальны по количеству, но функционально полно описывать объект.
Перегрузить стандартные операторы, в том числе хотя бы один унарный. Перегрузить операторы потокового ввода/вывода. Разработать методы, позволяющие получить полные характеристики объекта.
Программа должна:
1. создать 2 экземпляра класса: первый конструктором с параметрами по умолчанию, второй конструктором с параметрами, запрашиваемыми у пользователя.
2. Продемонстрировать работу перегруженных операций и возможность удаления экземпляра класса.
У меня есть программа, только она для конуса:
Konys.h
Код:
#include <iostream>
#include <math.h>
#include <locale.h>
using namespace std;
class konys
{
private:
float *radius;
float *dlin_vis;
public:
konys();
konys(float rad, float dlin);
konys(konys &k);
~konys();
float Get_radius(){return *radius;}
float Get_dlin_vis(){return *dlin_vis;}
void Set_radius(float r){*radius = r;}
void Set_dlin_vis(float d){*dlin_vis = d;}
friend ostream& operator << (ostream& out, konys& K){
return out << "Радиус равен = " << *(K.radius)<< ". Высота боковой стороны равна = " << *(K.dlin_vis) << endl;}
bool operator ==( konys other);
konys& operator +();
float operator -();
};
Konys.cpp
Код:
#include "konys.h"
konys::konys()
{
radius = new float;
dlin_vis = new float;
*radius = 2;
*dlin_vis = 4;
}
konys::konys(float rad, float dlin)
{
radius = new float;
dlin_vis = new float;
*radius = rad;
*dlin_vis = dlin;
}
konys::konys(konys &k)
{
radius = new float;
dlin_vis = new float;
*radius = *(k.radius);
*dlin_vis = *(k.dlin_vis);
}
konys::~konys()
{
delete radius ;
delete dlin_vis ;
}
bool konys::operator ==(konys other)
{
if (this->radius == other.radius && this->dlin_vis == other.dlin_vis)
return true;
else
return false;
}
konys& konys::operator +()
{
*(this->radius) = *(this->radius)*2;
*(this->dlin_vis) = *(this->dlin_vis)*2;
return (*this);
}
float konys::operator -()
{
float obiem = 0;
float dlin = *dlin_vis;
float rad_2 = *(radius)/2;
float rad = *radius;
float h = sqrt(dlin*dlin - rad*rad);
obiem = 3.14*0.33*(rad*rad)*h;
return obiem;
}
Main.cpp
Код:
#include "konys.h"
void main()
{
setlocale( LC_ALL, "Russian" );
float rad = 0, dlin = 0;
cout << "Создадим три экземпляра класа конус. 1 по умолчанию, 2 копирования, 3 вручную"<<endl;
cout << "Ввделите данные для 3го случая"<<endl;
cout << "Радиус: "; cin >> rad;
cout << "Высота: "; cin >> dlin;
konys *first = new konys();
konys *second = new konys(*first);
konys *third = new konys(rad,dlin);
cout << "Посмотрим что получилось : " << endl;
cout << "1. ";
cout << *first;
cout << "2. ";
cout << *second;
cout << "3. ";
cout << *third;
cout << "Далее продемонстрируем работу селекторов для 3го экземпляра: " << endl;
cout << "Радиус = "<< third->Get_radius() << " Высота = " << third->Get_dlin_vis() << endl;
cout << "Далее продемонстрируем работу модификаторов для 3го экземпляра:: " << endl;
cout << "Введите новый радиус: "; cin >> rad;
third->Set_radius(rad); // модификатор радиуса
cout << *third;
cout << "Далее демонстрируем работу перегруженных операторов: " << endl;
cout << "Увеличиваем в 2 раза "<<endl;
third->operator +();
cout << *third;
cout << "Сравним 1 и 3 коусы " << endl;
bool f = (first == third);
cout << *first;
cout << *third;
if (f == true)
cout << "Обьекты равны" << endl;
else
cout << "Обьекты не равны" << endl;
float ob = third->operator -(); // вычисляем объём
cout << "Объём равен = " << ob << endl;
cout << "Далее продемострируем работу деструкторов для 1 и 3, 2 не будем трогать "<< endl;
first->~konys();
third->~konys();
cout << "После деструкторов : " << endl;
cout << *first;
cout << *second;
cout << *third;
}
Помогите пожалуйса, как сделать тоже самое, но для трапеции!!!