Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

C++ Assignment Please read all the requirements and the overloading requiremets.

ID: 3787158 • Letter: C

Question

C++ Assignment

Please read all the requirements and the overloading requiremets.

Here is what i have so far,

#include <iostream>

using namespace std;

class ComplexNumbers

{

private:

double real;

double imaginary;

  

public:

void input ();

void output();

void setReal ( int );

int getReal ();

void setImaginary ( int );

int getImaginary();

ComplexNumbers();

ComplexNumbers(int);

ComplexNumbers(int, int);

friend bool operator == (ComplexNumbers , ComplexNumbers);

friend ComplexNumbers operator + (ComplexNumbers , ComplexNumbers);

friend ComplexNumbers operator - (ComplexNumbers , ComplexNumbers);

friend ComplexNumbers operator * (ComplexNumbers , ComplexNumbers);

friend ComplexNumbers operator - (ComplexNumbers);

  

};

void ComplexNumbers::setReal(int x)

{

real=x;

}

void ComplexNumbers::setImaginary(int y)

{

imaginary=y;

}

int ComplexNumbers::getReal()

{

return real;

}

int ComplexNumbers::getImaginary()

{

return imaginary;

}

//default constructor

ComplexNumbers::ComplexNumbers()

{

real=0;

imaginary=0;

  

}

//single parameterized constructor

ComplexNumbers:: ComplexNumbers(int z)

{

real=z;

}

//two parameterized constructor

ComplexNumbers::ComplexNumbers(int r,int u)

{

real = r;

  

imaginary= u;

  

}

void ComplexNumbers::input ()

{

int aReal(0),bImaginary(0);

cout<<"enter real no"<<endl;

cin>>aReal;

  

cout<<"enter imaginary"<<endl;

cin>>bImaginary;

  

real = aReal;

imaginary = bImaginary;

}

/* int real,imaginary;

cout<<"enter real no"<<endl;

cin>>real;

cout<<"enter imaginary"<<endl;

cin>>imaginary;*/

void ComplexNumbers::output()

{

cout<<"the complex no is"<<getReal()<<"+"<<getImaginary()<<"i"<<endl;

}

ComplexNumbers operator * (ComplexNumbers r, ComplexNumbers i)

{

ComplexNumbers temp;

temp = ( r.getReal() * i.getImaginary());

return temp;

}

ComplexNumbers operator + (ComplexNumbers r, ComplexNumbers i)

{

ComplexNumbers temp;

temp = ( r.getReal() + i.getImaginary());

return temp;

}

ComplexNumbers operator - (ComplexNumbers r, ComplexNumbers i)

{

ComplexNumbers temp;

temp = ( r.getReal() - i.getImaginary());

return temp;

}

bool operator == (ComplexNumbers r, ComplexNumbers i)

{

return( r.getReal() == i.getImaginary());

}

ComplexNumbers operator - (ComplexNumbers r)

{

ComplexNumbers temp;

temp = ( r.getReal());

return temp;

  

}

int main()

{

ComplexNumbers x,y,a,b,c;

x.input();

y.input();

a= x+y;

b = x-y;

c = x*y;

a.output();

b.output();

c.output();

if (x==y)

{

cout<< "they are equal"<<endl;

}

else{

cout << "they are not equal" <<endl;

}

  

return 0;

  

}

Question 1: Define a class for complex numbers with two double member variables, real and imaginary. Your class definition must include accessor, mutators, input, output, and three constructors (one default, one which receives one argument, and one receives two arguments.) overload (binary and unary), Name the program file complexnum.c

Explanation / Answer

Your program is well-written. Apart from overloading the binary and unary operators. I have modified your code and changed "int" to "double" in Constructors, and some methods.

FYI. Accessors are nothing but "get" methods in a class

Mutators are overloaded operators +,-,*. Means these operators are mutated over your "ComplexNumbers" class.

The following is the modified program:

#include <iostream>
using namespace std;

class ComplexNumbers
{
private:
double real;
double imaginary;
  
public:
void input ();
void output();
void setReal ( double );
double getReal ();
void setImaginary ( double );
double getImaginary();
ComplexNumbers();
ComplexNumbers(double);
ComplexNumbers(double,double);
bool operator == (ComplexNumbers&);
ComplexNumbers operator + (ComplexNumbers&);
ComplexNumbers operator - (ComplexNumbers&);
ComplexNumbers operator * (ComplexNumbers&);
ComplexNumbers operator - ();//unary minus
  
};


void ComplexNumbers::setReal(double x)
{
real=x;
}

void ComplexNumbers::setImaginary(double y)
{
imaginary=y;
}

double ComplexNumbers::getReal()
{
return real;
}
double ComplexNumbers::getImaginary()
{
return imaginary;
}
//default constructor
ComplexNumbers::ComplexNumbers()
{
real=0;
imaginary=0;
  
}

//single parameterized constructor
ComplexNumbers:: ComplexNumbers(double z)
{
real=z;
}

//two parameterized constructor
ComplexNumbers::ComplexNumbers(double r,double u)
{
real = r;
  
imaginary= u;
  
}


void ComplexNumbers::input ()
{
int aReal(0),bImaginary(0);
cout<<"enter real no"<<endl;
cin>>aReal;
  
cout<<"enter imaginary"<<endl;
cin>>bImaginary;
  
real = aReal;
imaginary = bImaginary;
}
/* int real,imaginary;
cout<<"enter real no"<<endl;
cin>>real;

cout<<"enter imaginary"<<endl;
cin>>imaginary;*/

void ComplexNumbers::output()
{
cout<<"the complex no is: "<<real;
if(imaginary<0)
   cout<<imaginary<<"i"<<endl;
else
   cout<<"+"<<imaginary<<"i"<<endl;
}
ComplexNumbers ComplexNumbers::operator * (ComplexNumbers &i)
{
ComplexNumbers temp;
temp.setReal(this->getReal() * i.getReal());
temp.setImaginary( this->getImaginary() * i.getImaginary());
return temp;
}

ComplexNumbers ComplexNumbers::operator + (ComplexNumbers &i)
{
ComplexNumbers temp;
temp.setReal(this->getReal() + i.getReal());
temp.setImaginary( this->getImaginary() + i.getImaginary());
return temp;
}

ComplexNumbers ComplexNumbers::operator - (ComplexNumbers &i)
{
ComplexNumbers temp;
temp.setReal(this->getReal() - i.getReal());
temp.setImaginary( this->getImaginary() - i.getImaginary());
return temp;
}

bool ComplexNumbers::operator == (ComplexNumbers &i)
{
return( (this->getReal() == i.getReal()) && (this->getImaginary()== i.getImaginary()));
}
ComplexNumbers ComplexNumbers::operator - ()
{
this->setReal(-1 * this->getReal());
this->setImaginary( -1 * this->getImaginary());

return *this;
}

int main()
{
ComplexNumbers x,y,a,b,c;
x.input();
y.input();
a= x+y;
b = x-y;
c = x*y;
a.output();
b.output();
c.output();
if (x==y)
{
cout<< "they are equal"<<endl;
}
else{
cout << "they are not equal" <<endl;
}
  
-b;
cout<<"After unary - on b"<<endl;
b.output();
return 0;
  
}