С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
emk
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 4
#1

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

27.11.2012, 19:46. Просмотров 601. Ответов 7
Метки нет (Все метки)

Арифметику класса реализовать в виде стандартного набора переопределенных операций с "арифметической" интерпретацией-результ операции-новый объект. Разработать конструктор копирования, переопределить арифметические операции, присваивание,сравнение, ввод/вывод в стандартные потоки.

написала заготовку для задания:
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;
}

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

С Уважением!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2012, 19:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Переопределение операций (C++):

Переопределение операций - C++
Ситуация такая. В классе матриц переопределён оператор взятия индекса: float operator() (int row, int column) const; Сами...

Переопределение операций - C++
У меня есть класс, который хранит коэффициенты полинома, вычисляет его. Я попытался добавить оператор суммы (который по моей версии должен...

Переопределение операций - C++
Здравствуйте, необходимо осуществить переопределение операции сложения, не понимаю как применять на практике переопределение, заранее...

Переопределение операций - C++
Люди, помогите разобраться, не совсем все понимаю. Эта программа представляет класс комплексных чисел с переопределенными функциями...

Переопределение операций - значки - C++
Мне вот преподаватель сказал, что можно переопределить любую операцию, знак которой определяется не через дополнительный, а через прямой...

Переопределение стандартных операций - C++
Рациональная (несократимая) дробь представляется парой целых чисел (а, b), где а — числитель, b — знаменатель. Создать класс Rational для...

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

Спасибо, что откликнулись)
0
HighPredator
5546 / 1859 / 347
Регистрация: 10.12.2010
Сообщений: 5,446
Записей в блоге: 2
27.11.2012, 21:05 #6
Ок. Попробуйте сделать пока описание класса (без реализации методов).
0
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;               
};
0
HighPredator
5546 / 1859 / 347
Регистрация: 10.12.2010
Сообщений: 5,446
Записей в блоге: 2
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);          //оператор умножения на число
};
0
27.11.2012, 23:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.11.2012, 23:28
Привет! Вот еще темы с ответами:

Переопределение операций со строками - C++
Операция переопределения Замена в строке первых n символов на символ с наименьшим кодом из входящих в строку почему-то работает...

Переопределение операций сложения, инкремента - C++
Лабораторная работа 2 Тема: Переопределение операций. Дружественные функции. Задания на лабораторную работу Для класса из лаб....

Переопределение операций в одномерном массиве - C++
Помогите, пожалуйста, написать программу! А) Создать класс одномерный массив целых чисел. ( класс содержит: - свойства: 1)...

Создать класс строка и производный класс битовая строка, не работает переопределение операций - C++
Здравствуйте уважаемые форумчане.Мне очень нужна помощь в разработке класса.Сам класс вроде работает но вот 1 задание к нему неработает...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.