分数的化简
#include <iostream>
#include <cmath>
using namespace std;
int divide(int a,int b){
if(b==0) return a;
else return divide(b,a%b);
}
struct fraction{
int up;
int down;
}result;
fraction reduction(fraction result){
if(result.down<0){
result.up=-result.up;
result.down=-result.down;
}
if(result.up==0)
result.down=1;
else {
int num=divide(abs(result.up),abs(result.down));
result.up/=num;
result.down/=num;
}
return result;
}
int main(){
cin>>result.up>>result.down;
result=reduction(result);
cout<<result.up<<","<<result.down<<endl;
return 0;
}
分数的加法
#include <iostream>
#include <cmath>
using namespace std;
int divide(int a,int b){
if(b==0) return a;
else return divide(b,a%b);
}
struct fraction{
int up;
int down;
}result;
fraction reduction(fraction result){
if(result.down<0){
result.up=-result.up;
result.down=-result.down;
}
if(result.up==0)
result.down=1;
else {
int num=divide(abs(result.up),abs(result.down));
result.up/=num;
result.down/=num;
}
return result;
}
fraction add(fraction f1,fraction f2){
fraction result;
result.up=f1.up*f2.down+f2.up*f1.down;
result.down=f1.down*f2.down;
return reduction(result);
}
int main(){
fraction f1,f2;
cin>>f1.up>>f1.down;
cin>>f2.up>>f2.down;
result=add(f1,f2);
cout<<result.up<<","<<result.down<<endl;
return 0;
}
分数的乘法
#include <iostream>
#include <cmath>
using namespace std;
int divide(int a,int b){
if(b==0) return a;
else return divide(b,a%b);
}
struct fraction{
int up;
int down;
}result;
fraction reduction(fraction f){
if(f.down<0){
f.up=-f.up;
f.down=-f.down;
}
if(f.up==0)
f.down=1;
else {
int num=divide(abs(f.up),abs(f.down));
f.up/=num;
f.down/=num;
}
return f;
}
fraction multiply(fraction f1,fraction f2){
fraction result;
result.up=f1.up*f2.up;
result.down=f1.down*f2.down;
return reduction(result);
}
int main(){
fraction f1,f2;
cin>>f1.up>>f1.down;
cin>>f2.up>>f2.down;
result=multiply(f1,f2);
cout<<result.up<<","<<result.down<<endl;
return 0;
}