In this exercise, you will define a complex data type complx, to manipulate comp
ID: 3545125 • Letter: I
Question
In this exercise, you will define a complex data type complx, to manipulate complex numbers: a + bi. In complx class where you can declare complex data, input/output complex data and check if two complex numbers equal each other or not using the same operators used for other built-in data types.
This is what I have so far:
// Complx.h
#include <iostream>
#include <fstream>
using namespace std;
class complx
{
double real,
imag;
public:
complx( double real = 0., double imag = 0.); // constructor
~complx(); // destrcutor
friend int operator== (const complx&, const complx&);
//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 ifstream &operator >> ( ifstream &in_file, complx &number );
extern istream &operator >> ( istream &in_file, complx &number );
extern ostream &operator << ( ostream &out_file, complx &number );
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Complx.cpp
#include "complx.h"
complx::~complx() {
}
ostream &operator<< ( ostream &out_file, complx &number )
{
/* TEST
out_file <<
if(number.new_imaginary < 0)
{
out_file << "-";
}else{
out_file << "+";
}
out_file << number.new_imaginary << "i";
return out_file;
*/
}
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;
}
extern istream &operator >> ( istream &in_file, complx &number )
{
/* TEST
in_file >> number.new_real >> number.new_imaginary;
return in_file;
*/
}
// define constructor
complx::complx( double r, double i )
{
real = r; imag = i;
}
int operator== (const complx& a, const complx& b){
return (a.r*b.i == b.r*a.i);
}
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//call_complx.cpp
#include "complx.h"
int main()
{
int i=0;
complx c1, c2(3,5),in[5];
cout<< "Please input a complex number in the format of (a,b) - " << endl;
while ((cin >> in[i])&& (i<4)){
cout << in[i] << endl;
i++;
}
if (c1 == in[0] )
cout << c1 << " equals to " << in[0] << endl;
else
cout << c1 << " not equal to " << in[0]<< endl;
if (in[1] == in[2] )
cout << in[1] << " equals to " << in[2] << endl;
else
cout << in[1] << " not equal to " << in[2]<< endl;
char c; cin >> c;
return 0; //successful termination
}
SAMPLE OUTPUT:
Please input a complex number in the format of (a,b) -
(2,3)
(2,3)
(6,7)
(6,7)
(6,7)
(6,7)
(4,5)
(4,5)
(2,3)
(0,0) not equal to (2,3)
(6,7) equals to (6,7)
Explanation / Answer
answer
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.