Implement Complx Class

So I am new to this so please forgive my ignorance. My instructor does not follow any textbook and the lessons are not even directly related to the assignments/quizzes, and then we have to scramble to figure out how to do it.

The following is the code that I have been given:

Header file...

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
// Complx.h

#include <iostream>
#include <fstream>
using namespace std;

class complx
{
      double real,
             imag;
public:
      complx( double real = 0., double imag = 0.); // constructor
      complx operator+(complx);       // operator+()

      complx operator+(double);       // operator+()with double
      complx operator- (complx);       // operator-()
      complx operator* (complx);       // operator*()

      bool operator== (complx);   // operator==()

       //Sets private data members.
     void Set(double new_real, double new_imaginary) {
     real = new_real;
     imag = new_imaginary;
     }

     //Returns the real part of the complex number.
          double Real() {
          return real;
     }

     //Returns the imaginary part of the complex number.
     double Imaginary() {
     return imag;
     }
};

 

extern ostream &operator << ( ostream &out_file, complx &number );

extern istream &operator >> ( istream &in_file, complx &number );

extern ifstream &operator >> ( ifstream &in_file, complx &number );

complx &operator + (double, complx);
complx &operator - (double, complx);
complx &operator * (double, complx);



Complx.cpp...

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
// Complx.cpp

#include "complx.h"

// define I/O stream

extern ifstream &operator >> ( ifstream &in_file, complx &number )

{
     double re, is;
     char ch;
     if (in_file >> ch && ch == '('&& in_file >> re >> ch && ch == ','
          && in_file >> is >> ch && ch == ')')
              number.Set(re,is);
     else cerr << "Finish the input"<<endl;
     return in_file;
}
ostream &operator<< ( ostream &out_file, complx number )
{
  out_file << '(' << number.Real() << ',' << number.Imaginary() << ')';
  return out_file;
}
 
// define constructor

complx::complx( double r, double i )
{
      real = r; imag = i;
}

// define overloaded + (plus) operator
complx complx::operator+ (complx c)

{
      complx result;
      result.real = (this->real + c.real);
      result.imag = (this->imag + c.imag);
      return result;
}



Call_complx to call the class...

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
//call_complx.cpp

#include "complx.h"

ifstream infile ("in.dat");

int main()

{
          int i=0;

          complx in[7];

          double d = 4.5; 

          cout<< "The input numbers are: " << endl;

          while (infile  >> in[i]){
              cout << in[i] << endl;
              i++;
          }        

          complx s1 =  in[0] + in[1]; // calls complx::operator+()
          complx s2 =  d + in[2]; // overload operator+()
          complx s3 =  in[3] + d; // overload operator+()

          complx a = in[4] - in[5];

          complx mm=in[3]*in[4];
          complx dm=d*in[4] ;
          complx b=d-in[0] ;

          cout << "The sum is a complex number " << s1 <<endl;
          cout << "The sum is a complex number " << s2 <<endl;
          cout << "The sum is a complex number " << s3 <<endl;
          cout << "The subtract is a complex number " << a <<endl;
          cout << "The product is a complex number " << mm <<endl;          
          cout << "The subtract is a complex number " << b <<endl;
          cout << "The product is a complex number " << dm <<endl;

          if (in[4] == in[5]) cout << "in[4] and in[5] are the same " << endl;
          system("pause");
          return 0;   //successful termination
}



I am supposed to implement the arithmetic operators that are in bold/underlined. I believe that to implement istream, I use the following in Complx.cpp:

1
2
3
4
5
6
7
8
9
10
11
extern istream &operator >> ( istream &in_file, complx &number )

{
     double re, is;
     char ch;
     if (in_file >> ch && ch == '('&& in_file >> re >> ch && ch == ','
          && in_file >> is >> ch && ch == ')')
              number.Set(re,is);
     else cerr << "Finish the input"<<endl;
     return in_file;
}


From there I'm lost. I can't even fathom how to implement the complx operators. I know this was discussed in another forum that is now closed and I reviewed it but the discussion was way over my head so I'm hoping someone can help explain this.

Any assistance is greatly appreciated.
Topic archived. No new replies allowed.