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

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

Войти
Регистрация
Восстановить пароль
 
fishec
119 / 119 / 30
Регистрация: 07.09.2013
Сообщений: 338
#1

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

07.02.2014, 20:43. Просмотров 1174. Ответов 10
Метки нет (Все метки)

Есть класс с двумя полями.
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;
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.02.2014, 20:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос оператор сложения комплексных чисел (C++):

Перегруженные функции для сложения вещественных чисел; для сложения комплексных чисел - C++
Написать перегруженные функции и основную программу, которая их вызывает. для сложения вещественных чисел; для сложения комплексных чисел...

Исправьте код(реализация сложения двух комплексных чисел) - C++
Исправьте код, в коде я реализую сложение двух комплексных чисел #include <cstdlib> #include <iostream> using namespace std; ...

Класс для выполнения операций сложения, вычитания и умножения комплексных чисел - C++
Условие: Составить описание класса для представления комплексных чисел. Обеспечить выполнение операций сложения, вычитания и умножения...

Методы класса для сложения и вычитания комплексных чисел (упростить код) - C++
Напишите класс для реализации комплексного числа. Разработайте методы класса для сложения и вычитания комплексных чисел. Используйте...

Перегруженный оператор сложения строк - C++
Погрузился я с головой в ООП и напоролся на проблемы. Вообщем пишу я класс VString, само собой реализующий строку. В нем есть функция-друг ...

Перегрузить оператор сложения для вектора - C++
Всем привет! не компилируется, понять не могу почему, ругается на оператор присваивания, не можжет сложить #include <windows.h> ...

10
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
07.02.2014, 20:50 #2
fishec, читайте про оператор + и его перегрузку. примеры можете почитать тут
0
Ded_Vasilij
231 / 213 / 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
уберите пожалуйста, это из прошлой жизни код, так ни в коем случае писать нельзя
1
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
07.02.2014, 21:19 #4
Цитата Сообщение от Ded_Vasilij Посмотреть сообщение
так ни в коем случае писать нельзя
почему?
0
Ded_Vasilij
231 / 213 / 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
это делается, чтобы избежать множественного включения одного файла.
0
metaluga145
07.02.2014, 21:32
  #6

Не по теме:

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

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

Не по теме:

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

0
DrOffset
07.02.2014, 21:41
  #9

Не по теме:

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

0
fishec
119 / 119 / 30
Регистрация: 07.09.2013
Сообщений: 338
07.02.2014, 21:48  [ТС] #10
del
0
Ded_Vasilij
231 / 213 / 15
Регистрация: 01.09.2012
Сообщений: 2,103
07.02.2014, 21:54 #11
metaluga145,
Цитата Сообщение от metaluga145 Посмотреть сообщение
я не придираюсь. просто хочу понять: это Ваше субъективное мнение, или действительно есть какие-то основания это не использовать.
хм... считайте, что это мое субъективное мнение
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.02.2014, 21:54
Привет! Вот еще темы с ответами:

Где мы можем использовать, дружественный оператор сложения? - C++
Где мы можем использовать, дружественный оператор сложения,почему нельзя воспользоваться перегрузкой оператора в классе,Зачем усложнять?

Как определить оператор += для сложения классов? - C++
Как определить оператор += для сложения классов? class point { public: float x; float y; float z; ...

Почему оператор сложения двух временных объектов возвращает lvalue ссылку? - C++
Допустим есть класс: class A { public: A() {} A(const A&amp;) { cout &lt;&lt; &quot;A(const A&amp;)\n&quot;; } A(A&amp;&amp;) { cout &lt;&lt;...

Классы комплексных чисел - C++
здравствуйте, мне надо сделать калькулятор комплексных чисел. Я пытался но как то не получается. С++ я плохо знаю потому что sql изучал....


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

Или воспользуйтесь поиском по форуму:
11
Yandex
Объявления
07.02.2014, 21:54
Ответ Создать тему
Опции темы

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