C++程序设计实验报告(六十一)---第九周任务5

来源:互联网 发布:屏幕着火软件下载 编辑:程序博客网 时间:2024/06/07 00:50

/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2012, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:流运算符重载运算符(解方程)

* 作 者: 刘镇
* 完成日期: 2012 年 4 月 15 日
* 版 本 号: 1.057
* 对任务及求解方法的描述部分
* 输入描述: 一元一次方程

* 问题描述: 流运算符重载

* 程序输出: ......

* 程序头部的注释结束
*/

 

#include "iostream"  using namespace std;  class CEquation  {  private:      double a;     // 未知数系数      double b;     // 常数项      char unknown; // 未知数的符号  public:      CEquation(double aa=0,double bb=0):a(aa), b(bb){}      friend istream &operator >> (istream &in,CEquation &e);      friend ostream &operator << (ostream &out,CEquation &e);      double Solve();      char getUnknown();  };    istream &operator >> (istream &in,CEquation &e)  {      double n;      char c1, c2;        while(1)      {          in >> e.a >> e.unknown >> c1 >> e.b >> c2 >> n;            if(c1 == '-')          {              e.b = -e.b;          }            if((c1 == '+'|| c1 == '-') && c2 == '=' && n == 0)          {              break;          }          else          {              cout << "输入格式错误!重新输入:" << endl;          }      }        return in;  }    ostream &operator << (ostream &out,CEquation &e)  {      out << e.a << e.unknown ;      if(e.b > 0)      {          cout << "+";      }        out << e.b << "=" << "0" <<endl;        return out;  }    double CEquation::Solve()  {      return (-b / a);  }    char CEquation::getUnknown()  {      return unknown;  }    int main()  {      CEquation e;        cout << "请输入一元一次方程(输入格式:3x-8=0):";        cin >> e;   //在两次测试中,分别输入3x-8=0和5s+18=0        cout << "方程为:" << e;        cout << "方程的解为:" << e.getUnknown() << "=" << e.Solve() << endl; //对两次测试,分别输出x=...和s=...        e.Solve();        system("pause");        return 0;  }  
运行结果:





原创粉丝点击