@@ -21,14 +21,87 @@ class KomplexeZahl {
21
21
};
22
22
23
23
// 3.2 c) externally overload << operator to print complex number
24
- std::ostream& operator <<(std::ostream& os, const KomplexeZahl& zahl) {
24
+ std::ostream& operator <<(std::ostream& os, KomplexeZahl const & zahl) {
25
25
os << zahl.getReal () << ((zahl.getImaginary () > 0 ) ? " +" : " -" ) << zahl.getImaginary () << " i" ;
26
26
return os;
27
27
}
28
28
29
29
// 3.2 d) externally overload addition operator to add two complex numbers
30
30
const KomplexeZahl operator +(KomplexeZahl z1, KomplexeZahl const & z2) {
31
-
31
+ return KomplexeZahl (z1.getReal () + z2.getReal (), z1.getImaginary () + z2.getImaginary ());
32
+ }
33
+
34
+ // 3.2 d) externally overload addition operator to add a complex number to a real number
35
+ const KomplexeZahl operator +(double z1, KomplexeZahl const & z2) {
36
+ return KomplexeZahl (z1 + z2.getReal (), z2.getImaginary ());
37
+ }
38
+
39
+
40
+ // 3.2 d) externally overload += operator to add two complex numbers
41
+ KomplexeZahl& operator +=(KomplexeZahl& z1, KomplexeZahl const & z2) {
42
+ z1 = z1 + z2;
43
+ return z1;
44
+ }
45
+
46
+ // 3.2 d) externally overload += operator to add a real number to a complex number
47
+ KomplexeZahl& operator +=(KomplexeZahl& z1, double const & z2) {
48
+ z1 = z1 + KomplexeZahl (z2, 0.0 );
49
+ return z1;
50
+ }
51
+
52
+ // 3.2 d) externally overload subtraction operator to subtract two complex numbers
53
+ const KomplexeZahl operator -(KomplexeZahl z1, KomplexeZahl const & z2) {
54
+ return KomplexeZahl (z1.getReal () - z2.getReal (), z1.getImaginary () - z2.getImaginary ());
55
+ }
56
+
57
+ // 3.2 d) externally overload -= operator to subtract two complex numbers
58
+ KomplexeZahl& operator -=(KomplexeZahl& z1, KomplexeZahl const & z2) {
59
+ z1 = z1 - z2;
60
+ return z1;
61
+ }
62
+
63
+ // 3.2 e) externally overload -= operator to subtract a real number from a complex number
64
+ KomplexeZahl& operator -=(KomplexeZahl& z1, double const & z2) {
65
+ z1 = z1 - KomplexeZahl (z2, 0.0 );
66
+ return z1;
67
+ }
68
+
69
+ // 3.2 e) externally overload multiplication operator to multiply two complex numbers
70
+ const KomplexeZahl operator *(KomplexeZahl z1, KomplexeZahl const & z2) {
71
+ return KomplexeZahl (z1.getReal () * z2.getReal () - z1.getImaginary () * z2.getImaginary (), z1.getReal () * z2.getImaginary () + z1.getImaginary () * z2.getReal ());
72
+ }
73
+
74
+ // 3.2 e) externally overload division operator to divide two complex numbers
75
+ const KomplexeZahl operator /(KomplexeZahl z1, KomplexeZahl const & z2) {
76
+ return KomplexeZahl ((z1.getReal () * z2.getReal () + z1.getImaginary () * z2.getImaginary ()) / (z2.getReal () * z2.getReal () + z2.getImaginary () * z2.getImaginary ()), (z1.getImaginary () * z2.getReal () - z1.getReal () * z2.getImaginary ()) / (z2.getReal () * z2.getReal () + z2.getImaginary () * z2.getImaginary ()));
77
+ }
78
+
79
+ // 3.2 e) externally overload *= operator to multiply two complex numbers
80
+ KomplexeZahl& operator *=(KomplexeZahl& z1, KomplexeZahl const & z2) {
81
+ z1 = z1 * z2;
82
+ return z1;
83
+ }
84
+
85
+ // 3.2 e) externally overload /= operator to divide two complex numbers
86
+ KomplexeZahl& operator /=(KomplexeZahl& z1, KomplexeZahl const & z2) {
87
+ z1 = z1 / z2;
88
+ return z1;
89
+ }
90
+
91
+ // 3.2 f) externally overload * operator to multiply a complex number with a real number
92
+ const KomplexeZahl operator *(double z1, KomplexeZahl const & z2) {
93
+ return KomplexeZahl (z1 * z2.getReal (), z1 * z2.getImaginary ());
94
+ }
95
+
96
+ // 3.2 f) externally overload *= operator to multiply a complex number with a real number
97
+ KomplexeZahl& operator *=(KomplexeZahl& z1, double const & z2) {
98
+ z1 = z1 * KomplexeZahl (z2, 0.0 );
99
+ return z1;
100
+ }
101
+
102
+ // 3.2 f) externally overload / operator to divide a complex number by a real number
103
+ const KomplexeZahl operator /(KomplexeZahl z1, double const & z2) {
104
+ return KomplexeZahl (z1.getReal () / z2, z1.getImaginary () / z2);
32
105
}
33
106
34
107
int main (void ) {
0 commit comments