NYOJ 111 分数加减法
2017-05-10 20:18
330 查看
描述
编写一个C程序,实现两个分数的加减法输入
输入包含多行数据每行数据是一个字符串,格式是”a/boc/d”。
其中a, b, c, d是一个0-9的整数。o是运算符”+”或者”-“。
数据以EOF结束
输入数据保证合法
输出
对于输入数据的每一行输出两个分数的运算结果。注意结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数
样例输入
1/8+3/81/4-1/2
1/3-1/3
样例输出
1/2-1/4
0
C++
#include<bits/stdc++.h> using namespace std; int dg(int a,int b) //用于求最大公约数,辗转相除法 { return b==0?a:dg(b,a%b); } int main() { char a[20]; int b,c,d,e,f,m[5],n; while(cin>>a) { b=strlen(a); e=0; m[0]=a[0]-'0'; m[1]=a[2]-'0'; m[2]=a[4]-'0'; m[3]=a[6]-'0'; d=dg(m[1],m[3]); if(a[3]=='+') { e=((m[0]*m[3]/d)+(m[2]*m[1]/d)); } else { e=((m[0]*m[3]/d)-(m[2]*m[1]/d)); } f=m[1]*m[3]/d; n=dg(abs(e),abs(f)); e=e/n; f=f/n; if(e==0) { cout<<e<<endl; } else if(e%f==0) { f=e/f; cout<<f<<endl; } else { cout<<e<<'/'<<f<<endl; } } return 0; }
相关文章推荐
- 【NYOJ】[111]分数加减法
- NYOJ 111-分数加减法
- NYOJ-111 分数加减法
- NYOJ 111 分数加减法
- NYOJ:题目111 分数加减法
- NYOJ--111 分数加减法
- nyoj111分数加减法
- nyoj 111 分数加减法
- nyoj 111 分数加减法
- nyoj 111 分数加减法
- nyoj 111 分数加减法 【简单题】
- NYOJ111分数加减法
- NYOJ 111 分数加减法
- NYOJ 111 分数加减法
- NYOJ111分数加减法
- nyoj111分数加减法
- NYOJ111-分数加减法
- NYOJ-111 分数加减法
- NYOJ-111-分数加减法-2013年10月5日15:10:52