![]() |
#2
rjsp2013-02-02 09:04
随手这么一写,我没有检查,你自己检查一下
![]() #include <iostream> class dlbcomplex { public: dlbcomplex() : real_(0), imag_(0) { } dlbcomplex(int r,int i) : real_(r), imag_(i) { } dlbcomplex operator+( const dlbcomplex& ); dlbcomplex operator-( const dlbcomplex& ); private: int real_; int imag_; friend std::istream& operator>>( std::istream&, dlbcomplex& ); friend std::ostream& operator<<( std::ostream&, const dlbcomplex& ); }; inline dlbcomplex dlbcomplex::operator+( const dlbcomplex& c ) { return dlbcomplex( real_+c.real_, imag_+c.imag_ ); } inline dlbcomplex dlbcomplex::operator-( const dlbcomplex& c ) { return dlbcomplex( real_-c.real_, imag_-c.imag_ ); } std::istream& operator>>( std::istream& is, dlbcomplex& c ) { char ch; int real, imag; if( is>>ch ) { if( ch != '(' ) { is.putback( ch ); is.setstate( std::ios_base::failbit ); } else if( is>>real>>ch ) { if( ch != ',' ) { is.putback( ch ); is.setstate( std::ios_base::failbit ); } else if( is>>imag>>ch ) { if( ch != ')' ) { is.putback( ch ); is.setstate( std::ios_base::failbit ); } else { c.real_ = real; c.imag_ = imag; } } } } return is; } std::ostream& operator<<( std::ostream& os, const dlbcomplex& c ) { return os << '(' << c.real_ << ',' << c.imag_ << ')'; } using namespace std; int main() { dlbcomplex c1, c2; cout << "输入你要计算的两个复数" << endl; cin >> c1 >> c2; char op; cout << "给出你要的计算方式" << endl; cin >> op; if( op == '+' ) { cout << (c1+c2) << endl; } else if( op == '-' ) { cout << (c1-c2) << endl; } return 0; } ![]() 输入你要计算的两个复数 (1,2) (3,4) 给出你要的计算方式 + (4,6) ![]() 输入你要计算的两个复数 (1,2) (3,4) 给出你要的计算方式 - (-2,-2) |
下面是我写的代码,求指点错误。
#include<iostream>
using namespace std;
class dlbcomplex
{public:
dlbcomplex(){real=0;imag=0;}
dlbcomplex(int r,int i):real(r),imag(i){}
dlbcomplex operator +(dlbcomplex &);
dlbcomplex operator -(dlbcomplex &);
friend istream& operator >>(istream&,dlbcomplex&);
void display();
private:
int real;
int imag;
};
dlbcomplex dlbcomplex::operator +(dlbcomplex &c2)
{return dlbcomplex(real+c2.real,imag+c2.imag);
}
dlbcomplex dlbcomplex::operator -(dlbcomplex &c2)
{return dlbcomplex(real-c2.real,imag-c2.imag);
}
void dlbcomplex::display()
{
cout<<real<<"+"<<imag<<endl;
}
istream& operator >>(istream &input,dlbcomplex &c3)
{
input<<c3.real<<"+"<<c3.imag<<endl;
return input;
}
int main()
{
dlbcomplex c1,c2,c3;
cout<<输入你要计算的两个复数<<endl;
cin>>c1;
cin>>c2;
char a;
cout<<给出你要的计算方式<<endl;
cin>>a;
if(a=="+")
{c3=c1+c2;
c3.display();
}
else
{c3=c1-c2;
c3.display();
}
return(0);
}