Witam,
Mam problem z poniższym kodem, bo przy kompilacji na ekranie widzę ciągle pojawiający się napis:
Podaj liczbe rzeczywista:
Podaj liczbe rzeczywista:
Podaj liczbe rzeczywista:
itd.
Nie wiem w którym miejscu leży błąd. Proszę o pomoc.
#include <iostream>
using std::cout;
using std::cin;
class Complex
{
private:
double normal;
double imaginary;
public:
Complex();
Complex(double x, double y=0.0) : normal(x), imaginary(y){}
Complex operator+(const Complex & Co) const;
Complex operator-(const Complex & Co) const;
Complex operator*(const Complex & Co) const;
Complex operator*(double n) const;
Complex operator~() const;
friend std::istream & operator>>(std::istream & is, const Complex & Co);
friend std::ostream & operator<<(std::ostream & os, const Complex & Co);
};
int main()
{
Complex a(3.0, 4.0);
Complex c;
cout<<"Podaj liczbe zespolona (k, aby zakonczyc):\n";
while (cin>>c)
{
cout<<"c to "<<c<<'\n';
cout<<"sprzezona z c to "<<~c<<'\n';
cout<<"a to " <<a<<'\n';
cout<<"a+c wynosi "<<a+c<<'\n';
cout<<"a-c wynosi "<<a-c<<'\n';
cout<<"a*c wynosi "<<a*c<<'\n';
cout<<"2*c wynosi "<<c*a<<'\n';
cout<<"Podaj liczbe zespolona (k, aby zakonczyc):\n" ;
}
cout<<"do widzenia";
return 0;
}
Complex::Complex()
{
normal = 0.0;
imaginary = 0.0;
}
Complex Complex::operator+(const Complex & Co) const
{
return Complex(normal + Co.normal, imaginary+ Co.imaginary);
}
Complex Complex::operator-(const Complex & Co) const
{
return Complex(normal - Co.normal, imaginary - Co.imaginary);
}
Complex Complex::operator*(const Complex & Co) const
{
return Complex(normal * Co.normal - imaginary * Co.imaginary, normal* Co.imaginary + imaginary* Co.normal);
}
Complex Complex::operator*(double n) const
{
return Complex(normal * n, imaginary* n);
}
Complex Complex::operator~() const
{
return Complex(normal, -imaginary);
}
std::istream & operator>>(std::istream & is, const Complex & Co)
{
cout<<"Podaj liczbe rzeczywista: "<<std::endl; //problem w tym miejscu.``
is>>Co.normal;
cout<<"\nSkladowa urojona: ";
is>>Co.imaginary;
return is;
}
std::ostream & operator<<(std::ostream & os, const Complex & Co)
{
using std::endl;
os<<"("<<Co.normal<<", "<<Co.imaginary<<"i)"<<endl;
return os;
}