1、分数的表示
struct fraction{
int up,down;
};
2、分数的化简
1、负分数的情况:使down为非负数,如果分数为负,则令up为负数即可
2、分数为0的情况:如果分数位0,则令分子为0,分母为1;
3、化简的情况:分子和分母没有除了1以外的公约数
fraction reduction(fraction result){
if(result.down < 0){
result.up = -result.up;
result.down = -result.down;
}
if(result.up < 0){ //如果分子为,令分母为0
result.down = 1;
}else{ //如果分子不为0,则进行约分
int d = gcd(result.up,result.down);
result.up / =d;
result.down /= d;
}
return result;
}
3、分数的四则运算
怎么记忆呢:
加减一组,只是变分子的符号
乘除一组,只是变相乘的对象
(1)分数的加法:(本质就是我们那种学的运算)
fraction add(faction f1,fraction f2){
fraction result;
result.up = f1.up * f2.down + f1.down * f2.up; //分数的分子
result.down = f1.down * f2.down; //分数的分母
return reduction(result); //返回结果分数,注意化简
}
(2)分数的减法:
fraction add(faction f1,fraction f2){
fraction result;
result.up = f1.up * f2.down - f1.down * f2.up; //分数的分子
result.down = f1.down * f2.down; //分数的分母
return reduction(result); //返回结果分数,注意化简
}
(3)分数的乘法:
fraction add(faction f1,fraction f2){
fraction result;
result.up = f1.up * f2.up; //分数的分子
result.down = f1.down * f2.down; //分数的分母
return reduction(result); //返回结果分数,注意化简
}
(4)分数的除法:(本质也没有变)
fraction add(faction f1,fraction f2){
fraction result;
result.up = f1.up * f2.down; //分数的分子
result.down = f1.down * f2.up; //分数的分母
return reduction(result); //返回结果分数,注意化简
}
4、分数的输出:
void showresult(fraction r){
r = reduction(r);
if(r.down = 1) cout<<r.up;
else if(abs(r.up) > r.down){
printf("%d %d/%d",r.up / r.down,abs(a.up) % r.down,r.down);
}else{
printf("%d/%d",r.up,r.down);
}
}
网友评论