#include<stdio.h> #include<math.h> #include<stdlib.h> struct fraction{ int up,down; }fen[3]; int gcb(int a,int b) { if(b==0) return a; else return gcb(b,a%b); } fraction redution(fraction a) { if(a.down<0) { a.down=-a.down; a.up=-a.up; } if(a.up==0) { a.down=1; } else { int d=gcb(abs(a.down),abs(a.up)); a.up/=d; a.down/=d; } return a; } fraction add(fraction a,fraction b) { fraction result; result.up=a.up*b.down+a.down*b.up; result.down=a.down*b.down; return redution(result); } fraction minu(fraction a,fraction b) { fraction result; result.up=a.up*b.down-a.down*b.up; result.down=a.down*b.down; return redution(result); } int main() { int a,b,c,d; char o; while(scanf("%d/%d%c%d/%d",&a,&b,&o,&c,&d)!=EOF) { fraction result; fen[0].up=a;fen[0].down=b; fen[1].up=c;fen[1].down=d; if(o=='+') { result=add(fen[0],fen[1]); } if(o=='-') { result=minu(fen[0],fen[1]); } if(result.up!=0) { printf("%d/%d",result.up,result.down); } else { printf("0"); } } } |
Double click to view unformatted code.