Hi
In the code below i want to make it so that the user can enter 2 numbers but when i run the program the program will allow the user to enter only 1 number, even the code to enter a second number is present. I am not sure what i am doing wrong. Please do help!!!
#include %26lt;iostream%26gt;
using namespace std;
class Complex
{
public:
 friend ostream %26amp;operator%26lt;%26lt;(ostream%26amp;, const Complex %26amp;);
 friend istream %26amp;operator%26gt;%26gt;(istream%26amp;, Complex %26amp;);
private:
 float real;
 float imaginary;
};
ostream %26amp;operator%26lt;%26lt;(ostream %26amp;output, const Complex %26amp;c)
{
 output %26lt;%26lt; c.real %26lt;%26lt; c.imaginary %26lt;%26lt; "i";
 return output;
}
istream %26amp;operator%26gt;%26gt;(istream %26amp;input, Complex %26amp;c)
{
 input %26gt;%26gt; c.real;
 input.ignore();
 input %26gt;%26gt; c.imaginary;
 return input;
}
int main()
{
 Complex number1, number2;
 cout%26lt;%26lt;"Enter 1st number";
 cin%26gt;%26gt;number1 %26gt;%26gt; number2;
 cout%26lt;%26lt;"Enter 2nd number";
 cin%26gt;%26gt;number2;
 return 0;
}
I tried it doing two ways as you can see above
Thank you
C++ programming question?
I only modified main() like so:
int main()
{
Complex number1, number2;
cout%26lt;%26lt;"Enter 1st number: ";
cin %26gt;%26gt; number1;
cout%26lt;%26lt;"Enter 2nd number: ";
cin%26gt;%26gt; number2;
return 0;
}
Compiled OK, no warnings or errors.
Behavior: At run time, I had sucess, but I had to enter two numbers, each followed by return key at each prompt.  
"Enter 1st number: "  %26lt;I entered: 3, %26lt;enter key%26gt;  I entered 4, %26lt;enter key%26gt;
Enter 2nd number: " %26lt;same again like above%26gt;
So... I had to enter 4 numbers total. Now, why is that?
I think it's because of this class implementation code portion:
istream %26amp;operator%26gt;%26gt;(istream %26amp;input, Complex %26amp;c)
{
input %26gt;%26gt; c.real;
input.ignore();
input %26gt;%26gt; c.imaginary;
}
See?  Looks like there are 2 inputs for numbers there.  This might explain it.  cin is doing it's job based on the way the class is coded, ie:  2 inputs needed per cin prompt, when the object is handed to cin like so:
cin%26gt;%26gt;number1;
So, interesting, i think the runtime behavior is as coded and well-defined, just not what you expected...
...good luck...
EDIT:  Outstanding!  I see you got the rest/fix on your own!  Good job, you!
Subscribe to:
Post Comments (Atom)
 
No comments:
Post a Comment