⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ks00.cpp

📁 分数是两个整数的比
💻 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 + -