Solved.
Oct 11, 2013 at 4:36am UTC
Solved.
Last edited on Oct 12, 2013 at 5:47am UTC
Oct 11, 2013 at 7:30am UTC
This function determines what the output looks like:
53 54 55 56
std::ostream& operator <<(std::ostream& lhs, const Complex& rhs) // << operator.
{
return lhs << '(' << rhs.r << " + " << rhs.i << "i)" ;
}
You need to write the logic into this function so it gives the format desired.
For example, to make it print 2 - 3i instead of 2 + -3i:
1 2 3 4 5 6 7 8 9 10
std::ostream& operator <<(std::ostream& lhs, const Complex& rhs) // << operator.
{
lhs << '(' << rhs.r;
if ( rhs.i >= 0 )
lhs << " + " << rhs.i << "i)" ;
else
lhs << " - " << -rhs.i << "i)" ;
return lhs;
}
and so on to cover the cases when r or i are zero.
Oct 11, 2013 at 7:42am UTC
This part is your main problem:
1 2 3 4 5
std::ostream& operator <<(std::ostream& lhs, const Complex& rhs) // << operator.
{
return lhs << '(' << rhs.r << " + " << rhs.i << "i)" ;
}
You're forcing the output to only be one thing. You could fix it with a few
if 's. Such as:
1 2 3 4 5 6 7 8
if (rhs.i = 0)
return lhs << '(' << rhs.r << ')' ;
if (rhs.i < 0)
return lhs << '(' << rhs.r << rhs.i << "i)" ;
if (rhs.i >0)
return lhs << '(' << rhs.r << '+' << rhs.i << "i)" ;
As for getting the proper output on the right-hand side of the equation you will probably need to create a separate object (I'm not sure of the proper terminology for C++, and its late) for outputting the right-hand side of the equation.
I'm pretty sure that's your main problem anyway. I could be wrong.
Topic archived. No new replies allowed.