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

Создать класс комплексных чисел, перегрузить операторы -= и *= - C++

Восстановить пароль Регистрация
 
joemcjoe
0 / 0 / 0
Регистрация: 09.11.2013
Сообщений: 26
14.04.2014, 22:53     Создать класс комплексных чисел, перегрузить операторы -= и *= #1
Добрый вечер. У меня есть некоторый вопрос. Надо создать класс комплексных чисел. Перегрузить операторы -= и *=. Первый получился. Но вот второй считает неправильно, хотя с теор. точки зрения все верно. Буду благодарен, если кто-то поможет мне разобратся.
Вот, собственно, кусок кода с перегрузкой этого оператора:
C++
1
2
3
4
5
6
7
    Complex operator *= (Complex &c) 
    {
    
        re = re*c.re - im*c.im;
        im = im*c.re + re*c.im;
        return *this;
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2014, 22:53     Создать класс комплексных чисел, перегрузить операторы -= и *=
Посмотрите здесь:

C++ Создать класс для реализации комплексных чисел в алгебраической форме
C++ Создать класс для реализации комплексных чисел в алгебраической форме. Используя функции с объектом в качестве аргумента
C++ [C++] Создать класс для реализации комплексных чисел в алгебраической форме
C++ Класс комплексных чисел
Создать класс вектор Vector (int *). Перегрузить операции: C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IrineK
Заблокирован
14.04.2014, 23:27     Создать класс комплексных чисел, перегрузить операторы -= и *= #2
C++
1
2
3
4
5
Complex & operator *= (Complex &left, const Complex &right)
{   left.re = left.re * right.re - left.im * right.im;
    left.im = left.im * right.re + left.re * right.im;
    return left;
}
joemcjoe
0 / 0 / 0
Регистрация: 09.11.2013
Сообщений: 26
14.04.2014, 23:43  [ТС]     Создать класс комплексных чисел, перегрузить операторы -= и *= #3
Ошибка : слишком много операторов в перегрузке.
IrineK
Заблокирован
15.04.2014, 00:04     Создать класс комплексных чисел, перегрузить операторы -= и *= #4
Дайте весь код.

Добавлено через 3 минуты
Вам нужно исправить прототип.
joemcjoe
0 / 0 / 0
Регистрация: 09.11.2013
Сообщений: 26
15.04.2014, 10:47  [ТС]     Создать класс комплексных чисел, перегрузить операторы -= и *= #5
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
#include <iostream>
#include <math.h>
 
using namespace std;
 
 
class Complex 
{
    double re, im; 
 
public:
 
    Complex() {};
 
    Complex(double r) 
    {
        re = r;
        im = 0;
    }
 
    Complex(double r, double i) 
    {
        re = r;
        im = i;
    }
 
    Complex(Complex &c) 
    {
        re = c.re;
        im = c.im;
    }
 
    ~Complex() {}
 
 
 
    
 
    Complex operator -= (Complex &c) 
    {
 
        re = re - c.re;
        im = im - c.im;
 
        return *this;
    }
 
    
 
    Complex & operator *= (Complex &left, const Complex &right)
    {
        left.re = left.re * right.re - left.im * right.im;
        left.im = left.im * right.re + left.re * right.im;
        return left;
    }
 
    
    
 
    friend ostream &operator<<(ostream &, const Complex &);
    friend istream &operator>>(istream &, const Complex &);
 
};
 
ostream &operator<<(ostream &out, const Complex &c)
{
    out << c.re;
    if (c.im > 0)
        out << "+";
    out << c.im << "i";
 
    return out;
}
 
istream &operator>>(istream &in, const Complex &c)
{
    in >> c.re >> c.im;
 
    return in;
}
 
int main()
{
    Complex value1(4, 8);
    Complex value2(9, -3);
 
    value1 -= value2;
    cout << value1 << endl;
 
    value1 *= value2;
 
    cout << value1;
 
 
    return 0;
}
IrineK
Заблокирован
15.04.2014, 11:11     Создать класс комплексных чисел, перегрузить операторы -= и *= #6
С вашей функцией все нормально. Просто в первом действии вы переопределяете действительную часть, а потом используете уже новое значение для подсчета мнимой части.

(Моя функция работает так же. Но ее нужно объявлять как friend.)


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
#include <iostream>
#include <math.h>
 
using namespace std;
 
 
class Complex 
{   double re, im; 
 
public:
 
    Complex(): re(0), im(0) {}
    Complex(double r) : re(r), im(0) {}
    Complex(double r, double i) : re(r), im(i) {}
  
    Complex(Complex &c) : re (c.re), im (c.im) {}
 
    Complex operator -= (Complex &c) 
    {   re = re - c.re;
        im = im - c.im;
        return *this;
    }
  
    
    Complex operator *= (Complex &c) 
    {   double temp = re*c.re - im*c.im;
        im = re*c.im + im*c.re;
        re = temp;
        return *this;
    }
  
    friend ostream &operator << (ostream &, const Complex &);
    friend istream &operator >> (istream &, const Complex &);
 
};
 
ostream &operator << (ostream &out, const Complex &c)
{   out << c.re;
    if (c.im > 0)
        out << "+";
    out << c.im << "i";
 
    return out;
}
 
istream &operator >> (istream &in, const Complex &c)
{   in >> c.re >> c.im;
    return in;
}
 
 
int main()
{
    Complex value1(4, 8);
    Complex value2(9, -3);
 
    value1 -= value2;
    cout << value1 << endl;
 
    value1 *= value2;
 
    cout << value1;
 
    cin.get();
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.04.2014, 22:26     Создать класс комплексных чисел, перегрузить операторы -= и *=
Еще ссылки по теме:

Создать класс "Триада" и перегрузить некоторые операторы C++
Описать класс my_str и перегрузить для него операторы. C++
C++ Перегрузить функцию умножения(*) для комплексных чисел

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

Или воспользуйтесь поиском по форуму:
joemcjoe
0 / 0 / 0
Регистрация: 09.11.2013
Сообщений: 26
15.04.2014, 22:26  [ТС]     Создать класс комплексных чисел, перегрузить операторы -= и *= #7
Благодарю за помощь.
Yandex
Объявления
15.04.2014, 22:26     Создать класс комплексных чисел, перегрузить операторы -= и *=
Ответ Создать тему
Опции темы

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