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

оператор сложения комплексных чисел - C++

Восстановить пароль Регистрация
 
fishec
 Аватар для fishec
118 / 118 / 30
Регистрация: 07.09.2013
Сообщений: 337
07.02.2014, 20:43     оператор сложения комплексных чисел #1
Есть класс с двумя полями.
C++
1
2
3
4
5
6
7
class Complex{
private:
   float Re;
   float Im;
public:
   Complex(float r,float i){Re=r;Im=i;}
};
Как сделать, чтобы можно было в программе складывать через "+":
C++
1
2
Complex Z1(1,2), Z2(3,4);
Complex Z3=Z1+Z2;
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.02.2014, 20:43     оператор сложения комплексных чисел
Посмотрите здесь:

C++ Перегруженный оператор сложения строк
Класс для выполнения операций сложения, вычитания и умножения комплексных чисел C++
Исправьте код(реализация сложения двух комплексных чисел) C++
Где мы можем использовать, дружественный оператор сложения? C++
C++ Перегруженные функции для сложения вещественных чисел; для сложения комплексных чисел
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
07.02.2014, 20:50     оператор сложения комплексных чисел #2
fishec, читайте про оператор + и его перегрузку. примеры можете почитать тут
Ded_Vasilij
 Аватар для Ded_Vasilij
229 / 211 / 15
Регистрация: 01.09.2012
Сообщений: 2,103
07.02.2014, 21:18     оператор сложения комплексных чисел #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
пардон, не тот код, сейчас исправлю

Добавлено через 3 минуты
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#pragma once
#include <iostream>
using namespace std;
class Complex
{
    double Re;
    double Im;
public:
    Complex();
    ~Complex();
    Complex(double re, double im);
    
    Complex operator*(const Complex& z);
    Complex operator/(const Complex& z);
    Complex operator +(const Complex& z);
    Complex operator -(const Complex& z);
    Complex operator+=(const Complex& z);
    Complex operator *=(const Complex& z);
    Complex operator -=(const Complex& z);
    Complex operator /=(const Complex& z);
    Complex operator = (const Complex&z);
    
    bool operator != (const Complex& z) const;
    bool  operator == (const Complex& z) const;
 
    friend istream&  operator >>(istream& i,Complex& z);
    friend ostream& operator  << (ostream& o, Complex& z);
 
private:
 
};
 
Complex::Complex()
{
}
 
Complex::Complex(double re, double im):Re(re),Im(im){}
 
Complex::~Complex()
{
}
 
Complex Complex::operator+(const Complex& z)
{
    Complex res(Re+z.Re,Im+z.Im);
    return res;
}
 
Complex Complex::operator-(const Complex& z)
{
    Complex res(Re-z.Re,Im-z.Im);
    return res;
}
 
Complex Complex::operator*(const Complex& z1)
{
    
    Complex res((Re*z1.Re-Im*z1.Im),(Re*z1.Im+Im*z1.Re));
    return res;
}
 
 
Complex Complex::operator/(const  Complex&z)
{
    Complex res((Re*z.Re+Im*z.Im)/(z.Re*z.Re+z.Im*z.Im),(Im*z.Re-Re*z.Im)/(z.Re*z.Re+z.Im*z.Im));
    return res;
}
 
 
Complex Complex::operator+=(const Complex&z)
{
    Re+=z.Re;
    Im+=z.Im;
}
 
Complex Complex::operator-=(const Complex&z)
{
    Re-=z.Re;
    Im-=z.Im;
}
 
Complex Complex::operator*=(const Complex&z)
{
    Re = Re*z.Re-Im*z.Im;
    Im = Re*z.Im+Im*z.Re;
}
 
Complex Complex::operator/=(const Complex&z)
{
    Re = (Re*z.Re+Im*z.Im)/(z.Re*z.Re+z.Im*z.Im);
    Im  = (Im*z.Re-Re*z.Im)/(z.Re*z.Re+z.Im*z.Im);
}
 
Complex Complex::operator=(const Complex& z)
{
    Re = z.Re;
    Im = z.Im;
}
 
bool Complex::operator==(const Complex& z) const
{
    return (fabs(Re-z.Re)<1e-7&&fabs(Im - z.Im)<1e-7);
}
 
bool Complex::operator!=(const Complex&z) const
{
    return (fabs(Re-z.Re)>1e-7 || fabs(Im - z.Im)> 1e-7);
}
Добавлено через 6 минут
fishec,
Цитата Сообщение от Ded_Vasilij Посмотреть сообщение
#pragma once
уберите пожалуйста, это из прошлой жизни код, так ни в коем случае писать нельзя
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
07.02.2014, 21:19     оператор сложения комплексных чисел #4
Цитата Сообщение от Ded_Vasilij Посмотреть сообщение
так ни в коем случае писать нельзя
почему?
Ded_Vasilij
 Аватар для Ded_Vasilij
229 / 211 / 15
Регистрация: 01.09.2012
Сообщений: 2,103
07.02.2014, 21:24     оператор сложения комплексных чисел #5
потому, что
C++
1
#pragma once
- работает только для студии, я этот код еще на первом курсе писал, а правильно так:
C++
1
2
3
4
#ifndef COMPLEX_H
#define COMPLEX_H 
//здесь код
#endif//COMPLEX_H
это делается, чтобы избежать множественного включения одного файла.
metaluga145
07.02.2014, 21:32
  #6

Не по теме:

Цитата Сообщение от Ded_Vasilij Посмотреть сообщение
работает только для студии
ложь и провокация

Ded_Vasilij
 Аватар для Ded_Vasilij
229 / 211 / 15
Регистрация: 01.09.2012
Сообщений: 2,103
07.02.2014, 21:36     оператор сложения комплексных чисел #7
Цитата Сообщение от metaluga145 Посмотреть сообщение
ложь и провокация
Ну ладно, не только для студии, тут я не прав, но за ее использование руки отрывать нужно, к тому же ее нет в стандарте.
metaluga145
07.02.2014, 21:38
  #8

Не по теме:

Цитата Сообщение от Ded_Vasilij Посмотреть сообщение
за ее использование руки отрывать нужно
почему? что такого плохого, кроме того, что нету в стандарте?
я не придираюсь. просто хочу понять: это Ваше субъективное мнение, или действительно есть какие-то основания это не использовать.

DrOffset
07.02.2014, 21:41
  #9

Не по теме:

Цитата Сообщение от Ded_Vasilij Посмотреть сообщение
потому, что
C++
1
#pragma once
- работает только для студии
На данный момент поддерживается большинством современных компиляторов:
http://en.wikipedia.org/wiki/Pragma_once По ссылке есть табличка.
Однако вы правы, что это нестандартное средство, поэтому есть некоторая опасность его использования в случае поддержки серьезной мультиплатформенности (например как у нас в проекте).

fishec
 Аватар для fishec
118 / 118 / 30
Регистрация: 07.09.2013
Сообщений: 337
07.02.2014, 21:48  [ТС]     оператор сложения комплексных чисел #10
del
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.02.2014, 21:54     оператор сложения комплексных чисел
Еще ссылки по теме:

Методы класса для сложения и вычитания комплексных чисел (упростить код) C++
Как определить оператор += для сложения классов? C++
C++ Перегрузить оператор сложения для вектора

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

Или воспользуйтесь поиском по форуму:
Ded_Vasilij
 Аватар для Ded_Vasilij
229 / 211 / 15
Регистрация: 01.09.2012
Сообщений: 2,103
07.02.2014, 21:54     оператор сложения комплексных чисел #11
metaluga145,
Цитата Сообщение от metaluga145 Посмотреть сообщение
я не придираюсь. просто хочу понять: это Ваше субъективное мнение, или действительно есть какие-то основания это не использовать.
хм... считайте, что это мое субъективное мнение
Yandex
Объявления
07.02.2014, 21:54     оператор сложения комплексных чисел
Ответ Создать тему
Опции темы

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