Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2011, 14:56   #1
Vitalka
Пользователь
 
Регистрация: 16.12.2010
Сообщений: 16
По умолчанию Классы

Создать класс, описывающий объект ТРАПЕЦИЯ. Свойства класса должны быть минимальны по количеству, но функционально полно описывать объект.
Перегрузить стандартные операторы, в том числе хотя бы один унарный. Перегрузить операторы потокового ввода/вывода. Разработать методы, позволяющие получить полные характеристики объекта.
Программа должна: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;
}
Помогите пожалуйса, как сделать тоже самое, но для трапеции!!!
Vitalka вне форума Ответить с цитированием
Старый 24.02.2011, 15:35   #2
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

Код:
	first->~konys();  
	third->~konys();

ужос нах, юзайте
Код:
	delete first;
	delete second;
onewho вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
СИ++ классы!!! XOKS Помощь студентам 1 27.01.2011 21:08
Классы в С++ Rammashka Помощь студентам 4 01.05.2010 20:45
классы Ferghost Помощь студентам 3 05.06.2009 03:20
Классы в С++ Wirz Помощь студентам 1 04.06.2009 23:22