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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не правильный вывод на экран. http://www.cyberforum.ru/cpp-beginners/thread247751.html
Здравствуйте. Только начинаю изучать C++ Есть такой код #include "stdafx.h" #include "conio.h" #include <string> #include <iostream> using namespace std; int _tmain() {
C++ Помогите с программированием пожалуйста. Задали в универе по информатике(( http://www.cyberforum.ru/cpp-beginners/thread247732.html
Создание класса для работы с дробями C++
Напишите программу калькулятор, который позволяет производить действия с дробями. Пользователь вначале вводит: числить первой дроби и затем знаменатель первой дроби, потом знак действия и числить второй дроби и затем знаменатель второй дроби. В конструкторе класса должно происходить инициализация переменных, а вычисление значений, а также вывод результата в соответствующих методах класса.
C++ Без консола
как написать строку "Привет" в файл без консол? Не увидяя черного консолного экрана
C++ Очередной запрет ввода http://www.cyberforum.ru/cpp-beginners/thread247709.html
Можно ли сделать так, чтобы при вводе (cin) программа никак не реагировала на нажатие кнопок? Например игнорировала определенные символы или не реагировала на бэкспэйс. P.S: С getche() в этом плане уже немного разобрался - ненужные символы легко затираются пробелами в условных операторах, хотя мне кажется что это не совсем рационально. Добавлено через 18 часов 45 минут Чтото все молчат......
C++ замена символов на цифры примерно так юзер вводит химическое вещество,допустим CaCO3 затем он пишет элемент,массовую долю в веществе которого нужно найти.допустим O мне нужно сначала посчитать количество элементов в веществе,затем найти массовую долю указанного так,поразмыслив, что при правильно написанной формуле количество элементов в веществе равно количеству заглавных букв в введенном веществе допустим,я... подробнее

Показать сообщение отдельно
vitalka
0 / 0 / 0
Регистрация: 25.03.2010
Сообщений: 22

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

24.02.2011, 14:51. Просмотров 1442. Ответов 0
Метки (Все метки)

У меня есть задача: создать класс, описывающий объект ТРАПЕЦИЯ. Свойства класса должны быть минимальны по количеству, но функционально полно описывать объект.
Перегрузить стандартные операторы, в том числе хотя бы один унарный. Перегрузить операторы потокового ввода/вывода. Разработать методы, позволяющие получить полные характеристики объекта.
Программа должна: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;
}
Помогите пожалуйса, как сделать тоже самое, но для трапеции!!!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru