С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/147: Рейтинг темы: голосов - 147, средняя оценка - 4.90
0 / 0 / 1
Регистрация: 20.12.2008
Сообщений: 10
1

Класс комплексных чисел

15.01.2009, 16:12. Показов 28958. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста реализовать (без использования <complex>) класс комплексных чисел с простейшими операциями и ВЫВЕСТИ результат на дисплей..еще не получается
Complex operator- (); bool operator== (Complex &); bool operator!= (Complex &); реализовать..
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
   #include <iostream>
   #include <cmath>
   using namespace std;
 
class Complex
    {
    private:
        double real;    // Действительная часть
        double image;    // Мнимая часть
    public:
        Complex() {};    // Конструктор по умолчанию
        Complex(double r) { real = r; image = 0; } // Конструктор
        Complex(double r, double i) { real = r, image = i; }    // Конструктор
        ~Complex() {}    // Деструктор
        double abs()   // Модуль комплексного числа
            {
            return sqrt(real * real - image * image);
            }
 
        Complex operator+(Complex &);    // Перегрузка оператора сложения
        Complex operator-(Complex &);    // Перегрузка оператора вычитания
        Complex operator*(Complex &);    // Перегрузка оператора умножения
        Complex operator/(Complex &);    // Перегрузка оператора деления
                      Complex operator- ();
                      bool operator== (Complex &);
                      bool operator!= (Complex &);
        // Перегрузка функции-оператора << для вывода класса Complex
        friend ostream &operator<<(ostream &o, Complex &c);
 
        // Перегрузка функции-оператора >> для ввода класса Complex
        //friend istream &operator>>(istream &, Complex &);
    };
 
// Перегрузка +
Complex Complex::operator+(Complex &fp1)
    {
    fp1.real = real + fp1.real;
    fp1.image = image + fp1.image;
    return fp1;
    }
 
// Перегрузка -
Complex Complex::operator-(Complex &fp1)
    {
    fp1.real = real - fp1.real;
    fp1.image = image - fp1.image;
    return fp1;
    }
 
// Перегрузка *
Complex Complex::operator*(Complex &fp1)
    {
    double i, j;
    i = real * fp1.real - image * fp1.image; 
        return fp1;
    }
// Перегрузка /
Complex Complex::operator/(Complex &fp1)
    {
    double i, j;
    if ((fp1.real*fp1.real-fp1.image*fp1.image)!=0) 
        { 
        real=(real*fp1.real+image*fp1.image)/ 
        (fp1.real*fp1.real-fp1.image*fp1.image); 
 
        image=(fp1.real*image-real*fp1.image)/ 
        (fp1.real*fp1.real-fp1.image*fp1.image); 
}
        else cout<<"Деление на 0 невозможно" ;
}
       main ()
       {
         Complex a,b,c;
        ??????????????-как печатать комплексные числа??:wall:
       }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.01.2009, 16:12
Ответы с готовыми решениями:

Класс комплексных чисел
Ребят, помогите пожалуйста написать класс комплексных чисел... Я плохо разбираюсь в...

Класс комплексных чисел
Привет))) Пожалуйста, помогите мне создать эту программу!) Я буду вам благодарна) Разработать...

Класс комплексных чисел
Задание : Комплексные числа описываются структурой вида: Преобразовать структуру в класс,...

Класс комплексных чисел
Сейчас начал изучение классов. Придумал себе задачку: написать класс комплексных чисел. Пока...

19
7 / 7 / 0
Регистрация: 09.01.2009
Сообщений: 41
15.01.2009, 22:59 2
C++
1
2
3
4
5
6
7
8
9
10
11
Complex operator- (){
     real=-real;
     image=-image;
     return *this;
}
 
bool operator== (Complex & comp_num){
    if(real==comp_num.real && image==comp_num.image)
        return true;
    return false;
}
с оператором != сами разберётесь
и ещё 2 конструктора
C++
1
2
Complex(double r) { real = r; image = 0; } 
Complex(double r, double i) { real = r; image = i; }
можно объединить в один
C++
1
Complex(doubler r, double i=0){real=r; image=i;}
0
Maniac
Эксперт С++
1464 / 965 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
15.01.2009, 23:33 3
Цитата Сообщение от hamlet-ss6 Посмотреть сообщение
ВЫВЕСТИ результат на дисплей..
так покатит
C++
1
2
3
4
5
6
7
8
9
10
11
12
friend ostream &operator<<(ostream &o, Complex &c)
{
     o<<c.real;
     return o;
}
//............................................
int main ()  
{  
    Complex a(10,10);
    cout<<a<<endl;
    return 0;
}
0
Флудер
195 / 33 / 11
Регистрация: 23.03.2007
Сообщений: 334
16.01.2009, 08:44 4
а какое отношение проблема имеет к Linux?
0
0 / 0 / 1
Регистрация: 20.12.2008
Сообщений: 10
16.01.2009, 15:08  [ТС] 5
ISergey,
Привет,спасибо ОГРОМНОЕ за советы!!!!я вот еще раз программу переписал-повнимательней,но почему она НЕ выполняет действия с комплексными числами??
Посмотри,пожалуйста!!
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#include <iostream>
#include <сmath>
 
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() {}
 
float abs() // Модуль комплексного числа
{
return sqrt(re * re - im * im);
} 
 
Complex & operator = (Complex &c) // перегрузка оператора присваивания
{
re = c.re;
im = c.im;
 
return (*this);
}
 
Complex Complex::operator + (Complex &c) // перегрузка оператора сложения
{
Complex temp;
 
temp.re = re + c.re;
temp.im = im + c.re;
 
return temp;
}
 
Complex Complex::operator - (Complex &c) // перегрузка оператора вычитания
{
Complex temp;
 
temp.re = re - c.re;
temp.im = im - c.re;
 
return temp;
}
 
Complex Complex::operator * (Complex &c) // перегрузка оператора умножения
{
Complex temp;
 
temp.re = re*c.re;
temp.im = re*c.im;
 
return temp;
}
 
Complex Complex::operator / (Complex &c) // перегрузка оператора деления
{
Complex temp;
 
double r = c.re * c.re + c.im * c.im;
temp.re = (re * c.re + im * c.im) / r;
temp.re = (im * c.re - re * c.im) / r;
 
return temp;
} 
 
friend ostream &operator<<(ostream &, Complex &); // перегрузка оператора <<
friend istream &operator>>(istream &, Complex &); // перегрузка оператора >>
 
};
 
ostream &operator<<(ostream &out, complex &c)
{
out << "(" << c.re << ") + I (" << c.im << "\n";
 
return out;
}
 
istream &operator>>(istream &in, Complex &c)
{
in >> c.re >> c.im;
 
return in;
}
 
int main()
{
Complex value1(5,2);
Complex value2(3,-3);
 
cout << value1 << " " << value2 << endl;
 
cout << value1 + value2 << endl;
 
cout << value1 - value2 << endl;
 
cout << value1 * value2 << endl;
 
cout << value1 / value2 << endl; 
 
value1 = value2;
 
cout << value1 << " = " << value2 << endl;
 
return 0;
}
Добавлено через 2 минуты 59 секунд
Mulat,
Привет,спасибо ОГРОМНОЕ за советы!!!!объясни пожалуйста,почему не печатает она результаты операций с числами???
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#include <iostream>
#include <сmath>
 
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() {}
 
float abs() // Модуль комплексного числа
{
return sqrt(re * re - im * im);
} 
 
Complex & operator = (Complex &c) // перегрузка оператора присваивания
{
re = c.re;
im = c.im;
 
return (*this);
}
 
Complex Complex::operator + (Complex &c) // перегрузка оператора сложения
{
Complex temp;
 
temp.re = re + c.re;
temp.im = im + c.re;
 
return temp;
}
 
Complex Complex::operator - (Complex &c) // перегрузка оператора вычитания
{
Complex temp;
 
temp.re = re - c.re;
temp.im = im - c.re;
 
return temp;
}
 
Complex Complex::operator * (Complex &c) // перегрузка оператора умножения
{
Complex temp;
 
temp.re = re*c.re;
temp.im = re*c.im;
 
return temp;
}
 
Complex Complex::operator / (Complex &c) // перегрузка оператора деления
{
Complex temp;
 
double r = c.re * c.re + c.im * c.im;
temp.re = (re * c.re + im * c.im) / r;
temp.re = (im * c.re - re * c.im) / r;
 
return temp;
} 
 
friend ostream &operator<<(ostream &, Complex &); // перегрузка оператора <<
friend istream &operator>>(istream &, Complex &); // перегрузка оператора >>
 
};
 
ostream &operator<<(ostream &out, complex &c)
{
out << "(" << c.re << ") + I (" << c.im << "\n";
 
return out;
}
 
istream &operator>>(istream &in, Complex &c)
{
in >> c.re >> c.im;
 
return in;
}
 
int main()
{
Complex value1(5,2);
Complex value2(3,-3);
 
cout << value1 << " " << value2 << endl;
 
cout << value1 + value2 << endl;
 
cout << value1 - value2 << endl;
 
cout << value1 * value2 << endl;
 
cout << value1 / value2 << endl; 
 
value1 = value2;
 
cout << value1 << " = " << value2 << endl;
 
return 0;
}
0
7 / 7 / 0
Регистрация: 09.01.2009
Сообщений: 41
16.01.2009, 15:34 6
добавьте
C++
1
using namespace std
вначале.
если не поможет- вот ссылка на реализацию http://www.dreamincode.net/code/snippet75.htm
0
43 / 39 / 12
Регистрация: 05.01.2009
Сообщений: 394
16.01.2009, 16:15 7
ostream &operator<<(ostream &out, complex &c)
ты хочешь сказать что она у тебя компилируется?? complex смаленькой буквы

Добавлено через 7 минут 28 секунд
value1 / value2
value1 - value2
это все у тебя не lvalue

значит ты не имеешь права по ссылке их передавать операторным функциям
так надо

friend ostream &operator<<(ostream &, Complex );
friend istream &operator>>(istream &, Complex );
0
0 / 0 / 1
Регистрация: 20.12.2008
Сообщений: 10
16.01.2009, 17:11  [ТС] 8
Фенрир,
СПАСИБО ТЕБЕ ЗА ВСЁ-но смотри
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#include <iostream>  
#include <сmath>  
 using namespace std;  
class сomplex // класс комплексных чисел  
{  
double re, im; // целая и мнимая части  
   
// создаем конструкторы   
public:  
   
сomplex() {};  
   
сomplex (double r) // конструктор по умолчанию  
{  
re = r;   
im = 0;  
}  
   
сomplex (double r, double i) // конструктор по умолчанию  
{  
re = r;   
im = i;  
}   
   
сomplex (сomplex &c) // конструктор копирования  
{  
re = c.re;   
im = c.im;  
}  
   
~сomplex() {}  
   
float abs() // Модуль комплексного числа  
{  
return sqrt(re * re - im * im);  
}   
   
сomplex & operator = (сomplex &c) // перегрузка оператора присваивания  
{  
re = c.re;  
im = c.im;  
   
return (*this);  
}  
   
сomplex сomplex::operator + (сomplex &c) // перегрузка оператора сложения  
{  
сomplex temp;  
   
temp.re = re + c.re;  
temp.im = im + c.re;  
   
return temp;  
}  
   
сomplex сomplex::operator - (сomplex &c) // перегрузка оператора вычитания  
{  
сomplex temp;  
   
temp.re = re - c.re;  
temp.im = im - c.re;  
   
return temp;  
}  
   
сomplex сomplex::operator * (сomplex &c) // перегрузка оператора умножения  
{  
сomplex temp;  
   
temp.re = re*c.re;  
temp.im = re*c.im;  
   
return temp;  
}  
   
сomplex сomplex::operator / (сomplex &c) // перегрузка оператора деления  
{  
сomplex temp;  
   
double r = c.re * c.re + c.im * c.im;  
temp.re = (re * c.re + im * c.im) / r;  
temp.re = (im * c.re - re * c.im) / r;  
   
return temp;  
}   
   
friend ostream &operator<<(ostream &, сomplex); // перегрузка оператора <<  
friend istream &operator>>(istream &, сomplex); // перегрузка оператора >>  
   
};  
   
ostream &operator<<(ostream &out, complex &c)  
{  
out << "(" << c.re << "," << c.im << ")";  
   
return out;  
}  
   
istream &operator>>(istream &in, сomplex &c)  
{  
in >> c.re >> c.im;  
   
return in;  
}  
   
int main()  
{  
сomplex value1(5,2);  
сomplex value2(3,-3);  
   
cout << value1 << " " << value2 << endl;  
   
cout << value1 + value2 << endl;  
   
cout << value1 - value2 << endl;  
   
cout << value1 * value2 << endl;  
   
cout << value1 / value2 << endl;   
   
value1 = value2;  
   
cout << value1 << " = " << value2 << endl;  
   
return 0;  
}
строка 94 так наверно должна выглядеть:out << "(" << c.re << "," << c.im << ")";
и попробуй ПОЖАЛУЙСТА у себя потестить прогу
Завтра утром мне сдавать этот ужас..с учётом твоих замечательных советов-всё равно не пашет..
0
43 / 39 / 12
Регистрация: 05.01.2009
Сообщений: 394
16.01.2009, 17:13 9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
ostream &operator<<(ostream &out, Complex c)
{
out << "(" << c.re << ") + I (" << c.im << "\n";
 
return out;
}
 
istream &operator>>(istream &in, Complex c)
{
in >> c.re >> c.im;
 
return in;
}
0
0 / 0 / 1
Регистрация: 20.12.2008
Сообщений: 10
16.01.2009, 17:15  [ТС] 10
Mulat,
Спасибо за советы и реализацию!!!!!!!!но мне б класс этот долбанный реализовать,что с Фенриром обсуждаем..тут наверно в вводе-выводе класса ошибка..если ещё идеи есть-буду очень рад
0
43 / 39 / 12
Регистрация: 05.01.2009
Сообщений: 394
16.01.2009, 17:16 11
у меня компилится
0
0 / 0 / 1
Регистрация: 20.12.2008
Сообщений: 10
16.01.2009, 17:25  [ТС] 12
Фенрир,
СПАСИБО!!!!!!!!!!значит при перегрузке строки 87и88 такие:
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
friend ostream &operator<<(ostream &, сomplex ); 
friend istream &operator>>(istream &, сomplex ); 
и с учетом последнего совета:
friend ostream &operator<<(ostream &, сomplex); // перегрузка оператора << 
friend istream &operator>>(istream &, сomplex); // перегрузка оператора >> 
 
}; 
 
ostream &operator<<(ostream &out, Complex c)   
{   
out << "(" << c.re << ") + I (" << c.im << "\n";   
  
return out;   
}   
  
istream &operator>>(istream &in, Complex c)   
{   
in >> c.re >> c.im;   
  
return in;   
} 
 
int main() 
{ 
сomplex value1(5,2); 
сomplex value2(3,-3); 
 
cout << value1 << " " << value2 << endl; 
 
cout << value1 + value2 << endl; 
 
cout << value1 - value2 << endl; 
 
cout << value1 * value2 << endl; 
 
cout << value1 / value2 << endl; 
 
value1 = value2; 
 
cout << value1 << " = " << value2 << endl; 
 
return 0; 
}
так теперь???
0
43 / 39 / 12
Регистрация: 05.01.2009
Сообщений: 394
16.01.2009, 17:32 13
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#include <iostream.h>
#include <math.h>
   
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() {}  
   
float abs() // Модуль комплексного числа  
{  
return sqrt(re * re - im * im);  
}   
   
Complex & operator = (Complex &c) // перегрузка оператора присваивания  
{  
re = c.re;  
im = c.im;  
   
return (*this);  
}  
   
Complex Complex::operator + (Complex &c) // перегрузка оператора сложения  
{  
Complex temp;  
   
temp.re = re + c.re;  
temp.im = im + c.re;  
   
return temp;  
}  
   
Complex Complex::operator - (Complex &c) // перегрузка оператора вычитания  
{  
Complex temp;  
   
temp.re = re - c.re;  
temp.im = im - c.re;  
   
return temp;  
}  
   
Complex Complex::operator * (Complex &c) // перегрузка оператора умножения
{  
Complex temp;  
   
temp.re = re*c.re;  
temp.im = re*c.im;  
   
return temp;
}  
   
Complex Complex::operator / (Complex &c) // перегрузка оператора деления
{  
Complex temp;  
   
double r = c.re * c.re + c.im * c.im;  
temp.re = (re * c.re + im * c.im) / r;  
temp.re = (im * c.re - re * c.im) / r;  
   
return temp;
}   
   
friend ostream &operator<<(ostream &, Complex ); // перегрузка оператора <<
friend istream &operator>>(istream &, Complex ); // перегрузка оператора >>
   
};
   
ostream &operator<<(ostream &out, Complex c)
{
out << "(" << c.re << ") + I (" << c.im << ")";
 
return out;
}
 
istream &operator>>(istream &in, Complex c)
{
in >> c.re >> c.im;
 
return in;
}
 
int main()  
{
Complex value1(5,2);  
Complex value2(3,-3);  
   
cout << value1 << " " << value2 << endl;
 
cout << value1 + value2 << endl;
 
cout << value1 - value2 << endl;  
 
cout << value1 * value2 << endl;
   
cout << value1 / value2 << endl;
 
value1 = value2;  
   
cout << value1 << " = " << value2 << endl;  
 getchar();
return 0;  
}
В Билдере у меня компилится....вместо math.h подключи cmath
1
0 / 0 / 1
Регистрация: 20.12.2008
Сообщений: 10
16.01.2009, 18:04  [ТС] 14
Фенрир,
а в Линуксе компилятор вон что говорит
super.cpp:47: error: extra qualification ‘complex::’ on member ‘operator+’
super.cpp:57: error: extra qualification ‘complex::’ on member ‘operator-’
super.cpp:67: error: extra qualification ‘complex::’ on member ‘operator*’
super.cpp:77: error: extra qualification ‘complex::’ on member ‘operator/’
super.cpp:93: error: ‘Complex’ has not been declared
super.cpp: In function ‘std::ostream& operator<<(std::ostream&, int)’:
super.cpp:95: error: request for member ‘re’ in ‘c’, which is of non-class type ‘int’
super.cpp:95: error: request for member ‘im’ in ‘c’, which is of non-class type ‘int’
super.cpp: In function ‘int main()’:
super.cpp:114: error: no matching function for call to ‘complex::complex(complex)’
super.cpp:26: note: candidates are: complex::complex(complex&)
super.cpp:14: note: complex::complex(double)
super.cpp:114: error: initializing argument 2 of ‘std::ostream& operator<<(std::ostream&, complex)’
super.cpp:116: error: no matching function for call to ‘complex::complex(complex)’
super.cpp:26: note: candidates are: complex::complex(complex&)
super.cpp:14: note: complex::complex(double)
super.cpp:116: error: initializing argument 2 of ‘std::ostream& operator<<(std::ostream&, complex)’
super.cpp:118: error: no matching function for call to ‘complex::complex(complex)’
super.cpp:26: note: candidates are: complex::complex(complex&)
super.cpp:14: note: complex::complex(double)
super.cpp:118: error: initializing argument 2 of ‘std::ostream& operator<<(std::ostream&, complex)’
super.cpp:120: error: no matching function for call to ‘complex::complex(complex)’
super.cpp:26: note: candidates are: complex::complex(complex&)
super.cpp:14: note: complex::complex(double)
super.cpp:120: error: initializing argument 2 of ‘std::ostream& operator<<(std::ostream&, complex)
super.cpp-имя программы
0
0 / 0 / 1
Регистрация: 20.12.2008
Сообщений: 10
23.01.2009, 19:32  [ТС] 15
Посмотрите пожалуста на операции
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
bool operator == (complex &c) 
{ 
if (re==c.re && im==c.im)
return 1;
return 0; 
} 
 
bool operator != (complex &c) 
{ 
if (re!=c.re && im!=c.im)
return 0;
return 1; 
}
правильно ли они реализованы (в смысле логики)???особенно !=
СПАСИБО!
0
43 / 39 / 12
Регистрация: 05.01.2009
Сообщений: 394
23.01.2009, 19:45 16
C++
1
2
3
4
5
6
7
bool operator != (complex &c) 
{ 
if (re!=c.re || im!=c.im)
return 1;
return 0; 
// если хотя бы реальная или мнимая чать не равны то оператор //вроде возвращать тру должен
}
0
Maniac
Эксперт С++
1464 / 965 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
23.01.2009, 20:02 17
ну тогда так
C++
1
2
3
4
bool operator != (complex &c)    
{    
     return re!=c.re || im!=c.im;   
}
и
C++
1
2
3
4
bool operator == (complex &c) 
{ 
     return re==c.re && im==c.im; 
}
0
43 / 39 / 12
Регистрация: 05.01.2009
Сообщений: 394
23.01.2009, 20:25 18
да так красивей и проффесиональней))
0
0 / 0 / 0
Регистрация: 15.11.2008
Сообщений: 23
04.11.2009, 23:34 19
Похожая задача - нужно реализовать класс комплексных чисел, но еще более тупым методом - написать ф-ции а не перегрузки операторов. Бага в следующем - в конце главной ф-ции получаю нули.

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
// Complex.h
 
class Complex{
 public: 
 int real, imag;
 Complex(int, int);
 void complex_add(Complex x);
 void complex_substract(Complex x);
 void complex_multiply(Complex x);
 void complex_divide(Complex x);
 void complex_display(Complex x);
};
 
void Complex::complex_add(Complex x){
 this->real+=x.real;
 this->imag+=x.imag;
}
 
void Complex::complex_substract(Complex x){
 this->real-=x.real;
 this->imag-=x.imag;
}
 
void Complex::complex_multiply(Complex x){
 this->real=this->real*x.real - this->imag*x.imag;
 this->imag=this->real*x.imag + this->imag*x.real;
}
 
void Complex::complex_divide(Complex x){
 real=(real*x.real+imag*x.imag)/(x.real*x.real+x.imag+x.imag);
 imag=(imag*x.real+imag*x.imag)/(x.real*x.real+x.imag+x.imag);
}
 
Complex::Complex(int r=0, int i=0){
 real=r;
 imag=i;
}
 
//laba3_2.cpp
 
#include <iostream>
#include "Complex.h"
//#include "laba3_1.cpp"
 
 //Complex x1();
 //Complex x2();
 
using namespace std;
 
void Complex::complex_display(Complex x){
 //cout<<"nn A ="<<a<<"n B = "<<b<<"n";
 cout<<"hit q to quit";
 cout<<"hit + to add A to B and to put result in An";
 cout<<"hit - to substract B from A and to put result in An";
 cout<<"hit * to multiply A to B and to put result in An";
 cout<<"hit / to divide A by B and to put result in A and the remainder in Bn";
}
 
int main(){
 int a,b,c,d;
 Complex x1;
 Complex x2;
 bool done=0;
 char command;
 do {
  cin>>command;
  switch(command){
  case 'Q': case 'q': {done=1; break;}
  case 'A': case'a': {cout<<"A="; cin>>a; break;}
  case 'B': case'b': {cout<<"B="; cin>>b; Complex x1(a,b); break;}
  case 'C' : case 'c' : {cout<<"C="; cin>>c; break;}
  case 'D' : case 'd' : {cout<<"D="; cin>>d; Complex x2(c,d); break;}
  case '+': {x1.complex_add(x2); done=1; break;}
  case '-': {x1.complex_substract(x2); done=1; break;}
  case '*': {x1.complex_multiply(x2); done=1; break;}
  case '/': {x1.complex_divide(x2); done=1; break;}
  }
 }
 while(!done);
 cout<<x1.real<<" "<<x1.imag<<" ";
 //cout<<x2.real<<" "<<x2.imag;
 return 0;
}
0
1 / 1 / 0
Регистрация: 26.04.2017
Сообщений: 1
26.04.2017, 15:03 20
Цитата Сообщение от Фенрир Посмотреть сообщение
ostream &operator<<(ostream &out, Complex c)
у меня билдер к этой строке докопался
1
26.04.2017, 15:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.04.2017, 15:03
Помогаю со студенческими работами здесь

Класс Комплексных Чисел
Здравствуйте, попробовал тут написать класс комплексных чисел, но пишет ошибку error: statement...

Класс комплексных чисел
Класс комплексных чисел, стандартные операции, перегрузка ввода-вывода. С вводом-выводом проблемы....

Класс комплексных чисел
Нужно создать программу (два класса) Класс комплексных чисел Базовый класс (мнимых чисел):...

Класс комплексных чисел
Здравствуйте, уважаемые форумчане. Нужна ваша помощь. У кого есть свободное время, то помогите...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru