Форум программистов, компьютерный форум CyberForum.ru

Создать класс, описывающий объект "Трапеция" - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
vitalka
0 / 0 / 0
Регистрация: 25.03.2010
Сообщений: 22
24.02.2011, 14:51     Создать класс, описывающий объект "Трапеция" #1
У меня есть задача: создать класс, описывающий объект ТРАПЕЦИЯ. Свойства класса должны быть минимальны по количеству, но функционально полно описывать объект.
Перегрузить стандартные операторы, в том числе хотя бы один унарный. Перегрузить операторы потокового ввода/вывода. Разработать методы, позволяющие получить полные характеристики объекта.
Программа должна:1. создать 2 экземпляра класса: первый конструктором с параметрами по умолчанию, второй конструктором с параметрами, запрашиваемыми у пользователя. 2. Продемонстрировать работу перегруженных операций и возможность удаления экземпляра класса.

Так вот у меня есть программа, только она для конуса:
Konys.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#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 +();  // увиличение в 2 раза
    float operator -();  // объём
};
Konys.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#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;  // увиличивам радиус конуса в 2 раза
    *(this->dlin_vis) = *(this->dlin_vis)*2; // увиличивам высоту конуса в 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
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#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 +();  // вызов перегруженного + для увиличеняи в 2 раза 
    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;
}
Помогите пожалуйса, как сделать тоже самое, но для трапеции!!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.02.2011, 14:51     Создать класс, описывающий объект "Трапеция"
Посмотрите здесь:

Создать классы, описывающий прямоугольники и класс-наследник, описывающий прямоугольные параллепипеды C++
C++ Описать класс "вещь", описывающий габариты и вес предмета
C++ Создать класс CMatrix, описывающий объект – действительные матрицы заданного размера
Создать класс "Шар", заданный радиусом, и определить производный класс "Окружность" C++
C++ Создать базовый класс "Массив" и класс-наследник "Матрица"
C++ Создать класс "Кот" с полями "Возраст" и "Вес"
C++ Создать класс "Квадрат" и производный класс "Правильная пирамида"
C++ Создать иерархию классов: родительский класс "Транспорт", класс-потомок "Техосмотр транспорта"

Искать еще темы с ответами

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

Текущее время: 18:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru