📄 ks00.cpp
字号:
#include<iostream.h>
#include<math.h>
long gcd(long,long);
long gcd(long num,long den)//求俩数的最大公约数
{
if(num<0)num=-num;
if(den<0)den=-den;//保证俩数是正整数
if(den<num)
{
long t=den;den=num;num=t;
}
if(den%num==0)return num;
else return gcd(num,den%num);
}
class Fraction
{
public:
long num;//分子
long den;//分母
char oper;//"b/a"形式中的"/"
public:
void setFraction();//设置分数
void showlist()
{cout<<"输入的分数是:"<<num<<oper<<den<<endl;}
};
void Fraction::setFraction()
{YUE:
cout<<"请输入分数(以b/a的形式):";
cin>>num>>oper>>den;
if(oper!='/')
{
cout<<"请以b/a的形式输入!!!"<<endl;
cin>>num>>oper>>den;
}
if(den==0)
{
cout<<"分母为0,从新输入!"<<endl;
//cin>>num>>oper>>den;
goto YUE;
}
if(den<0)
{
num=-num;//分数标准化(只有分子可为负)
den=-den;
}
}
class compute//四则运算类
{
private:
long g;//分子
long h;//分母
public:
char r;
void jia(const Fraction & k,const Fraction & l);
void jian(const Fraction & k,const Fraction & l);
void cheng(const Fraction & k,const Fraction & l);
void chu(const Fraction & k,const Fraction & l);
};
void compute::jia(const Fraction & k,const Fraction & l)//加法
{
g=k.num* l.den+k.den*l.num;
h=k.den*l.den;
cout<<"两分数之和为:"<<g/gcd(g,h)<<"/"<<h/gcd(g,h)<<endl;
}
void compute:: jian(const Fraction & k,const Fraction & l)//减法
{
g=k.num* l.den-k.den*l.num;
h=k.den*l.den;
cout<<"两分数之差为:"<<g/gcd(g,h)<<"/"<<h/gcd(g,h)<<endl;
}
void compute::cheng(const Fraction & k,const Fraction & l)//乘法
{
g=k.num*l.num;
h=k.den*l.den;
cout<<"两分数之积为:"<<g/gcd(g,h)<<"/"<<h/gcd(g,h)<<endl;
}
void compute::chu(const Fraction & k,const Fraction & l)//除法
{
g=k.num*l.den;
h=k.den*l.num;
cout<<"两分数之商为:"<<g/gcd(g,h)<<"/"<<h/gcd(g,h)<<endl;
}
class Com//关系运算类
{
private:
long q;
long w;
public:
void com(const Fraction & k,const Fraction & l);
};
void Com::com(const Fraction & k,const Fraction & l)
{
q=k.num*l.den;
w=k.den*l.num;
if(q>w)cout<<"比较结果:"<<k.num<<k.oper<<k.den<<">"<<l.num<<l.oper<<l.den<<endl;
else
if(q<w)cout<<"比较结果:"<<k.num<<k.oper<<k.den<<"<"<<l.num<<l.oper<<l.den<<endl;
else cout<<"比较结果:"<<k.num<<k.oper<<k.den<<"="<<l.num<<l.oper<<l.den<<endl;
}
class FractionHan//一元一次分式方程类
{
private:
long ca;
long cb;
public:
void answer(const Fraction & k,const Fraction & l);
};
void FractionHan::answer(const Fraction & k,const Fraction & l)
{
ca=-l.num*k.den;
cb=l.den*k.num;
cout<<"所求的一元一次分式方程"<<k.num<<k.oper<<k.den<<"X";
if((l.den>0&&l.num>0)||(l.den<0&&l.num<0))
cout<<"+"<<l.num<<l.oper<<l.den<<"=0";
else
cout<<"-"<<-l.num<<l.oper<<l.den<<"=0";
cout<<"的解为:"<<(ca/gcd(ca,cb))<<"/"<<(cb/gcd(ca,cb))<<endl;
}
void main()
{
char p;
cout<<"------欢迎进入分数系统------"<<endl;
LINE:
cout<<"请选择服务种类:"<<endl;
cout<<"1为分数的计算\n"<<"2为一元一次方程的求解\n"<<"3为比较两分数的大小"<<endl;
cin>>p;
switch(p)
{
case'1':
Fraction A,B;
A.setFraction ();
B.setFraction ();
compute c;
loop: cout<<"请输入运算法则:";
cin>>c.r;
switch(c.r)
{
case'+':c.jia(A,B);break;
case'-': c.jian(A,B);break;
case'*':c.cheng(A,B);break;
case'/':c.chu(A,B);break;
default:cout<<"输入有误,从新输入!";
goto loop;
}
break;
case'2':
Fraction Z1,X1;
Z1.setFraction();
X1.setFraction();
FractionHan r;
r.answer(Z1,X1);
break;
case'3':
Fraction Z,X;
Z.setFraction();
X.setFraction();
Com m;
m.com(Z,X);
break;
default:cout<<"输入有误!";
}
cout<<"是否继续?(是:Y/否:N)";
char q;
cin>>q;
switch(q)
{
case'y':
case'Y':goto LINE;
case'n':
case'N':break;
default:cout<<"输入有错误!";
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -