已结贴√
问题点数:10 回复次数:6
分数计算器
#include
using namespace std;
class Fraction
{
private:
int f1; //分子
int f2; //分母
public:
Fraction(int i=0,int j=1):f1(i),f2(j){}
void gs()//格式函数
{
int q=f1;
int w=f2;
int p=q/w;
for(;p!=0;) //辗转相除法求最大公约数
{
int m=q%w;
q=w;
w=m;
p=q/w;
}
f1/= w;
f2/=w;
}
void jiaf(const Fraction ©)//加法
{
f1=f1*copy.f2+f2*copy.f1;
f2=f2*copy.f2 ;
}
void jianf(const Fraction ©)//减法
{
f1=f1*copy.f2-f2*copy.f1;
f2=f2*copy.f2;
}
void chengf(const Fraction ©)//乘法
{
f1*=copy.f1;
f2*=copy.f2;
}
void chuf(const Fraction ©)//除法
{
f1*=copy.f2;
f2*=copy.f1;
}
void Show()
{
cout<
}
Fraction( const Fraction &cp) //复制构造函数
{
f1=cp.f1;
f2=cp.f2;
}
~Fraction(){
}
};
int main()
{
void Show();
cout<
int fz1,fm;
cin>>fz1>>fm;
Fraction fz(fz1,fm);
cout<
int fz2,fm2;
cin>>fz2>>fm2;
Fraction fr(fz2,fm2);
Show();
char c1;
cin>>c1;
fz.gs();
fr.gs();
while(c1!='-'&&c1!='+'&&c1!='/'&&c1!='*')
{
Show();
cin>>c1; //排除出入的符号不是 加减乘除的符号
}
switch(c1)
{
case '+':
fz.jiaf(fr);
break;
case '-':
fz.jianf(fr);
break;
case '*':
fz.chengf(fr);
break;
case '/':
fz.chuf(fr);
break;
}
fz.gs();
cout<
cout<
fz.Show();
return 0;
}
void Show(){
cout<
cout<
cout<
cout<
cout<
}