Thank you in advance, i have starred at this for a couple hours now and i have come to no conclusions.
First off, this is an assignment to teach us how to use header files, this is the header that we were provided with:
Complex.h
#ifndef Complex_H
#define Complex_h
#include <iostream>
using namespace std;
class Complex {
private:
double real;
double imaginary;
public:
Complex();
Complex(double r);
Complex(const Complex& otherComplex);
Complex(double r, double i);
double getReal() const;
double getImaginary() const;
};
Complex operator+(const Complex& left, const Complex& right);
Complex operator-(const Complex& left, const Complex& right);
Complex operator*(const Complex& left, const Complex& right);
Complex operator-(const Complex& operand);
bool operator==(const Complex& left, const Complex& right);
bool operator!=(const Complex& left, const Complex& right);
ostream& operator<<(ostream& out, const Complex& number);
istream& operator>>(istream& in, Complex& number);
#endif
This is my implementation, which compiles fine and should have no problems
Complex.cc
#include "Complex.h"
#include <cstdlib>
#include <iostream>
Complex::Complex() : real(0), imaginary(0) {}
Complex::Complex(double r) : real(r), imaginary(0) {}
Complex::Complex(const Complex& otherComplex) {
real = otherComplex.real;
imaginary = otherComplex.imaginary;
}
Complex::Complex(double r, double i) : real(r), imaginary(i) {}
double Complex::getReal() const {
return real;
}
double Complex::getImaginary() const {
return imaginary;
}
Complex operator+(const Complex& left, const Complex& right)
{
Complex result(left.getReal() + right.getReal(), left.getImaginary() + right.getImaginary());
return result;
}
Complex operator-(const Complex& left, const Complex& right)
{
Complex result(left.getReal() - right.getReal(), left.getImaginary() - right.getImaginary());
return result;
}
Complex operator*(const Complex& left, const Complex& right)
{
Complex result(left.getReal() * right.getReal() - left.getImaginary() * right.getImaginary(), left.getReal() * left.getImaginary() + right.getImaginary() * left.getReal());
return result;
}
Complex operator-(const Complex& operand)
{
Complex result(-operand.getReal(), -operand.getImaginary());
return result;
}
bool operator==(const Complex& left, const Complex& right)
{
if(left.getReal() == right.getReal() && left.getImaginary() == right.getImaginary())
{
return true;
}
}
bool operator!=(const Complex& left, const Complex& right)
{
if(left.getReal() != right.getReal() || left.getImaginary() != right.getImaginary())
{
return true;
}
}
ostream& operator<<(ostream& out, const Complex& number)
{
out << "real = " << number.getReal() << "Imaginary = " << number.getImaginary();
return out;
}
istream& operator>>(istream& in, Complex& number)
{
double r, i;
in >> r;
in >> i;
number = Complex(r, i);
return in;
}
Finally this is the test file that our instructor provided
testComplex.cc
#include "Complex.h"
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
// Test constructors\
Complex c1, c2(6.35), c3(-5.5, 3.0);
Complex c4(c3);
Complex sum(0), product(1);
cout << "sum = " << sum << "\\n";
cout << "product = " << product << "\\n";
cout << "c1 = " << c1 << "\\n";
cout << "c2 = " << c2 << "\\n";
cout << "c3 = " << c3 << "\\n";
cout << "c2 + c3 = " << (c2 + c3) << "\\n";
cout << "c2 - c3 = " << (c2 - c3) << "\\n";
cout << "c2 * c3 = " << (c2 * c3) << "\\n";
cout << "2 + c3 = " << (2 + c3) << "\\n";
cout << "c2 + 2 = " << (c2 + 2) << "\\n";
cout << "Please enter five(5) complex numbers (one per line)."
<< " Example: (1.25, -4.5)\\n";
for (int i = 0; i < 5; i++) {
cout << "=> ";
cin >> c1;
sum = sum + c1;
product = product * c1;
}
cout << "The sum of those numbers is " << sum <<
"; their product is " << product << "\\n";
if (c3 == c4 && -(-c3) == c3)
cout << "equality test success!\\n";
else
cout << "equality test failure!\\n";
if (c2 != c4)
cout << "inequality test success!\\n";
else
cout << "inequality test failure!\\n";
return(0);
}
when i go to compile his test file into an object it tells me that on line 11, 16, 17; c3, c1, and c2 are not defined in this scope respectively.
I went to the instructor and he had no idea what was wrong with his own code, i have a test on Wednesday so im trying to make sure that i have all the implementations right, which i mean would be easy if his test file worked instead of my thinking up one.
Any ideas why the test file will not comply
thank you