第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;}

原创粉丝点击