Ex9_6.cpp
上传用户:wuzhousb
上传日期:2022-07-12
资源大小:380k
文件大小:1k
源码类别:

书籍源码

开发平台:

Visual C++

  1. //【例9.6】用户定义的复数类型Complex的输入与输出。
  2. #include<iostream>
  3. using namespace std;
  4. class Complex{
  5. double Real,Image;
  6. public:
  7. Complex(double r=0.0, double i=0.0):Real(r),Image(i){}//定义构造函数
  8. //见【例4.7】,这里省略,以节约篇幅
  9. friend ostream&operator<<(ostream&s,const Complex&z);
  10. friend istream&operator>>(istream&s,Complex&a);
  11. };
  12. ostream&operator<<(ostream&s,const Complex &z){     //流类作为形式参数必须是引用
  13. return s<<'('<<z.Real<<','<<z.Image<<')';
  14. }
  15. istream&operator>>(istream&s,Complex &a){//格式为d,(d),(d,d)
  16. double re=0,im=0;
  17. char c=0;
  18. s>>c;//是否由括号开始
  19. if(c=='('){
  20. s>>re>>c;//实部
  21. if(c==',')s>>im>>c;//虚部
  22. if(c!=')')s.clear(ios::failbit);//漏了括号给一个操作失败标志
  23. }
  24. else{
  25. s.putback(c);//无括号,返回一个字符到输入缓冲区
  26. s>>re;//实数
  27. }
  28. if(s)a=Complex(re,im);
  29. return s;
  30. }
  31. int main(){
  32. Complex a,b,c;
  33. cout<<"输入一个实数"<<endl;
  34. cin>>a;
  35. cout<<"输入一个用括号括起来的实数"<<endl;
  36. cin>>b;
  37. cout<<"输入一个用括号括起来复数"<<endl;
  38. cin>>c;
  39. cout<<"a="<<a<<'t'<<"b="<<b<<'t'<< "c="<<c<<'n';
  40. return 0;
  41. }