南阳oj 分数加减法

#include<iostream>
#include<stdio.h>
using namespace std;
int gcd(int a,int b)
{
if(b==0)
return a;
return gcd(b,a%b);
}
int main ()
{
int a,b,c,d;
char ch1,ch2,ch3;
while(scanf("%d%c%d%c%d%c%d",&a,&ch1,&b,&ch2,&c,&ch3,&d)!=EOF)
{
if(a==0 && c==0)
{
cout<<0<<endl;
}
else
{
int x,y;
int flag=1;
int m,n;
int g;
m=b*d;
if(ch2==‘+‘)
n=a*d+b*c;
else if(ch2==‘-‘)
n=a*d-b*c;
if(n==0)
{
cout<<0<<endl;
continue;
}
if(n<0)
{
flag=0;
n=-n;
}
g=gcd(m,n);
x=n/g;
y=m/g;
if(flag==0)
cout<<"-";
if(y==1)
{
cout<<x<<endl;
}
else
cout<<x<<"/"<<y<<endl;
}
}
return 0;
}

输入的时候,两个除号“/”也要用两个字符变量来表示

对多种情况的判断:

输入两个分子都为零时,结果为零

另外gcd()函数用来求分子分母的最大公因数,然后将分子分母化为最简形式

分母为1时,只输出分子

原文地址:https://www.cnblogs.com/huanya/p/9376887.html

时间: 2024-08-22 12:22:55

南阳oj 分数加减法的相关文章

【南阳OJ分类之语言入门】80题题目+AC代码汇总

声明: 题目部分皆为南阳OJ题目. 代码部分包含AC代码(可能不止一个)和最优代码,大部分都是本人写的,并且大部分为c代码和少部分c++代码and极少java代码,但基本都是c语言知识点,没有太多差别,可能代码有的写的比较丑,毕竟知识有限. 语言入门部分题基本都较为简单,是学习编程入门的很好练习,也是ACM的第一步,入门的最佳方法,望认真对待. 本文由csdn-jtahstu原创,转载请注明出处,欢迎志同道合的朋友一起交流学习.本人QQ:1373758426和csdn博客地址. now begi

POJ 3979 分数加减法【数学讨论题】

将a/b和c/d化简一下就可以了 分数加减法 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 12588   Accepted: 4206 Description 编写一个C程序,实现两个分数的加减法 Input 输入包含多行数据 每行数据是一个字符串,格式是"a/boc/d". 其中a, b, c, d是一个0-9的整数.o是运算符"+"或者"-". 数据以EOF结束 输

分数加减法(POJ3979)

分数加减法 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 12564   Accepted: 4194 Description 编写一个C程序,实现两个分数的加减法 Input 输入包含多行数据 每行数据是一个字符串,格式是"a/boc/d". 其中a, b, c, d是一个0-9的整数.o是运算符"+"或者"-". 数据以EOF结束 输入数据保证合法 Output 对于

NYOJ 111 分数加减法

分数加减法 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 编写一个C程序,实现两个分数的加减法 输入 输入包含多行数据 每行数据是一个字符串,格式是"a/boc/d". 其中a, b, c, d是一个0-9的整数.o是运算符"+"或者"-". 数据以EOF结束 输入数据保证合法 输出 对于输入数据的每一行输出两个分数的运算结果. 注意结果应符合书写习惯,没有多余的符号.分子.分母,并且化简至最简分数 样例输入 1/

【南阳OJ分类之大数问题】题目+AC代码汇总

声明:题目部分皆为南阳OJ题目,代码部分包含AC代码(可能不止一个)和标程. 由于大数问题用c/c++写比较麻烦,而Java的大数类又很好用,所以基本为java代码.实际上竞赛很少会考大数问题,因为竞赛是比的算法,而不是语言特性,不过很多都是大数据,数据上千万级别的,所以算法又很关键,显然那和这篇博客也没啥关系. 题目不是太难,大家和本人就权当学习或复习下Java吧O(∩_∩)O~. 该分类南阳oj地址:http://acm.nyist.edu.cn/JudgeOnline/problemset

Java练习 SDUT-2253_分数加减法

分数加减法 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 编写一个C程序,实现两个分数的加减法 Input 输入包含多行数据 每行数据是一个字符串,格式是"a/boc/d". 其中a, b, c, d是一个0-9的整数.o是运算符"+"或者"-". 数据以EOF结束 输入数据保证合法 Output 对于输入数据的每一行输出两个分数的运算结果. 注意结果应符合书写习惯

分数加减法

描述编写一个C程序,实现两个分数的加减法 输入 输入包含多行数据 每行数据是一个字符串,格式是"a/boc/d". 其中a, b, c, d是一个0-9的整数.o是运算符"+"或者"-". 数据以EOF结束 输入数据保证合法 输出 对于输入数据的每一行输出两个分数的运算结果. 注意结果应符合书写习惯,没有多余的符号.分子.分母,并且化简至最简分数 样例输入 1/8+3/8 1/4-1/2 1/3-1/3 样例输出 1/2 -1/4 0 1 imp

南阳oj 757 期末考试【优先队列+sort排序】

描述 马上就要考试了,小T有许多作业要做,而且每个老师都给出来了作业要交的期限,如果在规定的期限内没 交作业就会扣期末成绩的分数,假设完成每门功课需要一天的时间,你能帮助小T扣除的分数最小吗? 输入 输入n,表示n门功课(n<2000),接下来n行,每行两个数a,b,分别表示交作业的最后期限,迟交扣除的分数. (以文件结尾) 输出 输出扣除的最小分数. 样例输入 3 3 10 3 5 3 1 3 1 6 3 2 1 3 7 1 3 4 2 6 1 4 7 2 6 4 5 3 4 样例输出 0 3

南阳OJ 61 传纸条(一)

传纸条(一) 时间限制:2000 ms  |  内存限制:65535 KB 难度:5 描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了.幸运的是,他们可以通过传纸条来进行交流.纸条要经由许多同学传到对方手里,小渊坐在矩阵的左上角,坐标(1,1),小轩坐在矩阵的右下角,坐标(m,n).从小渊传到小轩的纸条只可以向下或者向右传递,从小轩传给小渊的纸条只可以向上或者