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

Переопределение операций - C++

Восстановить пароль Регистрация
 
emk
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 4
27.11.2012, 19:46     Переопределение операций #1
Арифметику класса реализовать в виде стандартного набора переопределенных операций с "арифметической" интерпретацией-результ операции-новый объект. Разработать конструктор копирования, переопределить арифметические операции, присваивание,сравнение, ввод/вывод в стандартные потоки.

написала заготовку для задания:
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
// .cpp
 
#include <iostream>
 
using namespace std;
 
PolVector::PolVector() // Вектор в полярной системе координат
{
    angle=90;  
    length=9;
}
 
PolVector::PolVector(double angl, double lnght) 
{
    while (angl>360)
        angl-=360;
    if (lnght<0)
    {
        cout<<"Lenght can't be negative!"<<endl;
        angle=0;   
        length=0;
    }
    else
    {
        angle=angl;   
        length=lnght;
    }
}
 
PolVector::~PolVector() 
{
}
 
PolVector::PolVector(PolVector & rhs)          
{
    angle = rhs.angle;
    length = rhs.length;
}
 
void PolVector::print()
{
    cout<<"angle="<<angle<<"\nlength="<<length<<endl;
}
 
int PolVector::VectorLenght()
{
    int LenghtVector=0;
    double x1 = length*cos(angle);
    double y1 = length*sin(angle);
    LenghtVector = sqrt(x1*x1+y1*y1);
    return LenghtVector;
}
 
void PolVector::Plus ( PolVector & rhs)
{
    double x1 = length*cos(angle);
    double y1 = length*sin(angle);
    double x2 = rhs.length*cos(rhs.angle);
    double y2 = rhs.length*sin(rhs.angle);
    double x3 = x1 + x2;
    double y3 = y1 + y2;
    length = sqrt(x3*x3+y3*y3);
    angle = atan (y3/x3);               // перевести из радиан в градусы
    cout<<"\n\nangle Plus  (radian) ="<<angle<<"\nlength Plus7 ="<<length<<endl;
}
 
void PolVector::Minus( PolVector &rhs)   
{
    double x1 = length*cos(angle);
    double y1 = length*sin(angle);
    double x2 = rhs.length*cos(rhs.angle);
    double y2 = rhs.length*sin(rhs.angle);
    double x3 = x1 - x2;
    double y3 = y1 - y2;
    length = sqrt(x3*x3+y3*y3);
    angle = atan (y3/x3);
    cout<<"\nlength Minus="<<length<<endl;
}
 
void PolVector::Multiply(double number)
{
    double x1 = length*cos(angle)*number;
    double y1 = length*sin(angle)*number;
    length = sqrt(x1*x1+y1*y1);
    cout<<"\nlength Umnogen na chislo="<<length<<endl;
}

прошу Вашей помощи.

С Уважением!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2012, 19:46     Переопределение операций
Посмотрите здесь:

Переопределение операций - значки C++
C++ Переопределение операций
Переопределение операций C++
C++ Переопределение операций со строками
Переопределение операций C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HighPredator
 Аватар для HighPredator
5352 / 1735 / 320
Регистрация: 10.12.2010
Сообщений: 5,120
Записей в блоге: 3
27.11.2012, 19:58     Переопределение операций #2
Полагаю, от вас требовалось переопределить операторы: +,-,*,/ а также операторы сравнения для вашего класса. А не просто соответствующие методы сделать.
emk
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 4
27.11.2012, 20:06  [ТС]     Переопределение операций #3
Да, Вы правы.
HighPredator
 Аватар для HighPredator
5352 / 1735 / 320
Регистрация: 10.12.2010
Сообщений: 5,120
Записей в блоге: 3
27.11.2012, 20:10     Переопределение операций #4
Расскажите, что за класс, и будем думать, как реализовать.
emk
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 4
27.11.2012, 20:46  [ТС]     Переопределение операций #5
У меня вектор в полярной системе координат (длина, угол поворота).

Спасибо, что откликнулись)
HighPredator
 Аватар для HighPredator
5352 / 1735 / 320
Регистрация: 10.12.2010
Сообщений: 5,120
Записей в блоге: 3
27.11.2012, 21:05     Переопределение операций #6
Ок. Попробуйте сделать пока описание класса (без реализации методов).
emk
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 4
27.11.2012, 22:28  [ТС]     Переопределение операций #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class PolVector 
{
public:// 
    void print();
    PolVector();
    PolVector(PolVector &x);                  //Конструктор копирования
    PolVector(double a, double l);
    ~PolVector();                                 //Деструктор
    void Plus ( PolVector&);                   //Сложение векторов
    void Minus ( PolVector&);                //Разность векторов
    void Multiply (double number);         //Умножение вектора на число
    int VectorLenght ();                     //Длина вектора
 
private://
    double angle;
    double length;               
};
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.11.2012, 23:28     Переопределение операций
Еще ссылки по теме:

C++ Переопределение операций
Переопределение операций сложения, инкремента C++
C++ Переопределение операций в одномерном массиве

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

Или воспользуйтесь поиском по форуму:
HighPredator
 Аватар для HighPredator
5352 / 1735 / 320
Регистрация: 10.12.2010
Сообщений: 5,120
Записей в блоге: 3
27.11.2012, 23:28     Переопределение операций #8
Предлагаю нечто в таком духе:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class TPolarVector
{
private:
    double FR;      //длина радиус-вектора
    double FAngle;  //угол в градусах
public:
    TPolarVector(const double& R, const double& Angle); //конструктор
    TPolarVector(const TPolarVector& Origin);           //конструктор копирования
    void SetR(const double& Value);                     //сеттер для длины
    void SetAngle(const double &Value);                 //сеттер для угла
    double GetR();                                      //геттер для длины
    double GetAngle();                                  //геттер для угла
    TPolarVector operator+(const TPolarVector& op2);    //оператор сложения
    TPolarVector operator-(const TPolarVector& op2);    //оператор вычитания
    TPolarVector operator*(const double& op2);          //оператор умножения на число
};
Yandex
Объявления
27.11.2012, 23:28     Переопределение операций
Ответ Создать тему
Опции темы

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