#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;
}
第11周
最新推荐文章于 2024-05-12 23:02:26 发布