All pastes #403729 Raw Edit

Mine

public text v1 · immutable
·published 2007-03-20 16:14 UTC
rendered paste body
#include "imaginary.h"


using namespace std; 


Imaginary::Imaginary()
{
	real = 0;
	imaginary = 0;
}

Imaginary::Imaginary(double r, double im)
{
	real = r;
	imaginary = im;
}


Imaginary Imaginary::conjugate()
{
	Imaginary c(real,-imaginary);
	return c;
}

void Imaginary::set(double r, double i)
{
	real = r
	imaginary = i;
}

void Imaginary::get_real()
{
	return real;
}

void Imaginary::get_imaginary()
{
	return imaginary;
}


Imaginary Imaginary::operator+(const Imaginary& i2) const
{
	Imaginary sum;
	sum.real = real + i2.real;
	sum.imaginary = imaginary + i2.imaginary;
	return sum;
}

Imaginary Imaginary::operator-(const Imaginary& i2) const
{
   Imaginary diff;
	diff.real = real - i2.real;
	diff.imaginary = imaginary - i2.imaginary;
	return diff;
}

Imaginary Imaginary::operator*(const Imaginary& i2) const
{
	Imaginary product;
	//since i^2 = -1, multiply by -1
	product.real = real * i2.real + imaginary * i2.imaginary * -1;
	product.imaginary = real * i2.imaginary + i2.real * imaginary;
	return product;
}

Imaginary Imaginary::operator/(const Imaginary& i2) const
{
	Imaginary conj;
	Imaginary num,dem;
	Imaginary answer;

	conj = i2.conjugate();
	
	num.real = real * conj.real + imaginary * conj.imaginary * -1;
	num.imaginary = real * conj.imaginary + imaginary * conj.real;

	dem.real = i2.real * conj.real + i2.imaginary * conj.imaginary * -1;
	dem.imaginary = i2.real * conj.imaginary + i2.imaginary * conj.real;
	
	answer.real = num.real/dem.real;
	answer.imaginary = num.imaginary/dem.real;

	return answer;
}

istream& Imaginary::operator>> (istream& input, Imaginary& i)
{
	char sign, extra;
	cout << "enter in a + bi form" << endl;
	input >> i.real >> sign  >> i.imaginary >> extra;
	if ( sign == '-' )
		i.imaginary = -i.imaginary;

	return input;
}

ostream& Imaginary::operator<< (ostream& output, const Imaginary& i)
{
	if (i.imaginary == 0)
		output << i.real;
	else if(i.real == 0)
		output << i.imaginary << "i";
	else if (i.imaginary < 0)
		output << i.real << " - " << -i.imaginary << "i";
	else 
		output << i.real << " + " << i.imaginary <<"i";
	return output;
}