分数的四则运算

2020-02-09  本文已影响0人  km15

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);
    }
    
} 
上一篇下一篇

猜你喜欢

热点阅读