第11周
来源:互联网 发布:php上传文件代码 编辑:程序博客网 时间:2024/04/29 04:30
#include <iostream>using namespace std;class CEquation{ public: CEquation(double a1=0,double b1=0); friend istream & operator>>(istream &in,CEquation &c); friend ostream & operator<<(ostream &output,CEquation &c); double solve(); char getx(); private: double a,b; double x; char s;};CEquation::CEquation(double a1,double b1){ a=a1; b=b1;}istream & operator>>(istream &in,CEquation &c){ char ac,bc,xc,l;//ac="+/-",xc="a-z的符号",bc="="; cin>>c.a>>xc>>ac>>c.b>>bc>>l;//ax+b=0 if((ac!='+' && ac!='-') || bc!='=' )//逻辑或是“||” 逻辑与是“&&” { if(xc<'a' || xc>'z' || l!='0') cout<<"格式不正确!"; } if(ac=='-') { c.b=-c.b; } c.s=xc; return in;}ostream & operator<<(ostream &output,CEquation &c){ cout<<c.a<<c.s; if(c.b>0)cout<<"+"; cout<<c.b<<"=0"<<endl; return output;}double CEquation::solve(){ double x; if(a==0) { cout<<"方程无解"<<endl; return 0; } x=-b/a; return x;}char CEquation::getx(){ return s;}int main(){ CEquation e; cout<<"请输入一元一次方程(输入格式:3x-8=0/5s+18=0):"; cin>>e; //在两次测试中,分别输入3x-8=0和5s+18=0 cout<<"方程为:"<<e; cout<<"方程的解是:"<<e.getx()<<"="<<e.solve()<<endl; return 0;}