1、分?jǐn)?shù)的表示
struct fraction{
int up,down;
};
2、分?jǐn)?shù)的化簡(jiǎn)
1、負(fù)分?jǐn)?shù)的情況:使down為非負(fù)數(shù),如果分?jǐn)?shù)為負(fù),則令up為負(fù)數(shù)即可
2、分?jǐn)?shù)為0的情況:如果分?jǐn)?shù)位0,則令分子為0,分母為1;
3、化簡(jiǎn)的情況:分子和分母沒(méi)有除了1以外的公約數(shù)
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,則進(jìn)行約分
int d = gcd(result.up,result.down);
result.up / =d;
result.down /= d;
}
return result;
}
3、分?jǐn)?shù)的四則運(yùn)算
怎么記憶呢:
加減一組,只是變分子的符號(hào)
乘除一組,只是變相乘的對(duì)象
(1)分?jǐn)?shù)的加法:(本質(zhì)就是我們那種學(xué)的運(yùn)算)
fraction add(faction f1,fraction f2){
fraction result;
result.up = f1.up * f2.down + f1.down * f2.up; //分?jǐn)?shù)的分子
result.down = f1.down * f2.down; //分?jǐn)?shù)的分母
return reduction(result); //返回結(jié)果分?jǐn)?shù),注意化簡(jiǎn)
}
(2)分?jǐn)?shù)的減法:
fraction add(faction f1,fraction f2){
fraction result;
result.up = f1.up * f2.down - f1.down * f2.up; //分?jǐn)?shù)的分子
result.down = f1.down * f2.down; //分?jǐn)?shù)的分母
return reduction(result); //返回結(jié)果分?jǐn)?shù),注意化簡(jiǎn)
}
(3)分?jǐn)?shù)的乘法:
fraction add(faction f1,fraction f2){
fraction result;
result.up = f1.up * f2.up; //分?jǐn)?shù)的分子
result.down = f1.down * f2.down; //分?jǐn)?shù)的分母
return reduction(result); //返回結(jié)果分?jǐn)?shù),注意化簡(jiǎn)
}
(4)分?jǐn)?shù)的除法:(本質(zhì)也沒(méi)有變)
fraction add(faction f1,fraction f2){
fraction result;
result.up = f1.up * f2.down; //分?jǐn)?shù)的分子
result.down = f1.down * f2.up; //分?jǐn)?shù)的分母
return reduction(result); //返回結(jié)果分?jǐn)?shù),注意化簡(jiǎn)
}
4、分?jǐn)?shù)的輸出:
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);
}
}