5.3.1分数的表示和化简

#include<iostream>     
#include<cmath>
using namespace std;

struct Fraction{
int up,down;
};

int gcd(int a,int b){
if(b==0) return a;
return gcd(b,a%b);
}

//分数规范化 化简
void reduction(Fraction& result){
if(result.down<0){//规定分母必须为正数
result.down=-result.down;
result.up=-result.up;
}
if(result.up==0){//分子为0时分母为1
result.down=1;
}else{
int d=gcd(abs(result.down),abs(result.up));
result.down/=d;
result.up/=d;
}
}

void showFra(Fraction a){
cout<<a.up<<"/"<<a.down<<endl;
}

int main(){
int m,n;
Fraction fra;
while(cin>>fra.up>>fra.down){
reduction(fra);
showFra(fra);
}
return 0;
}

算法笔记5.3 分数四则运算_#include

 

分数的四则运算以及输出

#include<iostream>     
#include<cmath>
using namespace std;

struct Fraction{
int up,down;
};

int gcd(int a,int b){
if(b==0) return a;
return gcd(b,a%b);
}

//分数规范化 化简
void reduction(Fraction& result){
if(result.down<0){//规定分母必须为正数
result.down=-result.down;
result.up=-result.up;
}
if(result.up==0){//分子为0时分母为1
result.down=1;
}else{
int d=gcd(abs(result.down),abs(result.up));
result.down/=d;
result.up/=d;
}
}

//分数加法
Fraction add(Fraction f1,Fraction f2){
Fraction result;
result.up=f1.down*f2.up+f1.up*f2.down;
result.down=f1.down*f2.down;
reduction(result);
return result;
}

//分数减法
Fraction minu(Fraction f1,Fraction f2){
Fraction result;
result.up=f1.up*f2.down-f2.up*f1.down;
result.down=f1.down*f2.down;
reduction(result);
return result;
}

//分数乘法
Fraction multi(Fraction f1,Fraction f2){
Fraction result;
result.up=f2.up*f1.up;
result.down=f1.down*f2.down;
reduction(result);
return result;
}

//分数除法
Fraction divide(Fraction f1,Fraction f2){
Fraction result;
result.up=f1.up*f2.down;
result.down=f1.down*f2.up;
reduction(result);
return result;
}

//分数输出
void showResult(Fraction r){
reduction(r);
if(r.down==1){//整数
cout<<r.up;
}else if(abs(r.up)>r.down){//分母一定正数 假分数以带分数形式输出
cout<<r.up/r.down<<" "<<abs(r.up)%r.down<<"/"<<r.down;
}else{
cout<<r.up<<"/"<<r.down;
}
cout<<endl;
}

int main(){
int m,n;
Fraction f1,f2,result;
f1.up=10;f1.down=-15;
f2.up=-20;f2.down=-25;
cout<<"加:";showResult(add(f1,f2));
cout<<"减:";showResult(minu(f1,f2));
cout<<"乘:";showResult(multi(f1,f2));
cout<<"除:";showResult(divide(f1,f2));
return 0;
}

算法笔记5.3 分数四则运算_分数运算_02