对分数求加减乘除,以及化简

#include<iostream>
#include<math.h>
using namespace std;
struct Fraction{
long up,down;
};
//求分子分母的最大公约数
int gcb(int a,int b)
{
if(b==)
return a;
else
return gcb(b,a%b);
}
//化简
Fraction reduction(Fraction &result)
{
if(result.down < ) //分母为负
{
result.down = -result.down;
result.up = - result.up;
}
else if(result.up == ) //分母为0
result.down = ;
else
{
int x = gcb(abs(result.up),abs(result.down)); //分子分母同时除最大公约数
result.up /= x;
result.down /= x;
}
return result;
}
//加法
Fraction Add(Fraction a,Fraction b)
{
Fraction c;
c.up = a.up * b.down + a.down * b.up;
c.down = a.down * b.down;
return reduction(c);
}
//减法
Fraction minu(Fraction a,Fraction b)
{
Fraction c;
c.up = a.up * b.down - a.down * b.up;
c.down = a.down * b.down;
return reduction(c);
}
//乘法
Fraction multi(Fraction a,Fraction b)
{
Fraction c;
c.up = a.up * b.up;
c.down = a.down * b.down;
return reduction(c);
}
//除法
Fraction divide(Fraction a,Fraction b)
{
Fraction c;
c.up = a.up * b.down;
c.down = a.down * b.up;
return reduction(c);
}
void showresult(Fraction result)
{
if(result.down == )
cout<<result.up<<endl;
else if(abs(result.up)>abs(result.down))
cout<<result.up /result.down <<" "<<abs(result.up % result.down)<<"/"<<result.down<<endl;
else
cout<<result.up<<"/"<<result.down<<endl;
}
int main()
{
Fraction f1,f2;
while(cin>>f1.up>>f1.down>>f2.up>>f2.down)
{
showresult(Add(f1,f2));
showresult(minu(f1,f2));
showresult(multi(f1,f2));
showresult(divide(f1,f2));
}
return ;
}

C++ 实现分数的四则运算的更多相关文章

  1. 2019.3.13 Java实现分数的四则运算

    Java实现分数的四则运算 自己的写法 markdown太久没写格式不会用了--将就着看 Fraction.java package com.lanou; public class Fraction ...

  2. PAT Basic 1034 有理数四则运算(20) [数学问题-分数的四则运算]

    题目 本题要求编写程序,计算2个有理数的和.差.积.商. 输⼊格式: 输⼊在⼀⾏中按照"a1/b1 a2/b2"的格式给出两个分数形式的有理数,其中分⼦和分⺟全是整型范围内的整数, ...

  3. PAT Advanced 1088 Rational Arithmetic (20) [数学问题-分数的四则运算]

    题目 For two rational numbers, your task is to implement the basic arithmetics, that is, to calculate ...

  4. PAT Advanced 1081 Rational Sum (20) [数学问题-分数的四则运算]

    题目 Given N rational numbers in the form "numerator/denominator", you are supposed to calcu ...

  5. 用java具体代码实现分数(即有理数)四则运算

    用java具体代码实现分数(即有理数)四则运算 1,背景 Java老师布置了一个关于有理数运算的题目,因为参考书上有基本代码,所以自己主要是对书上代码做了一点优化,使其用户交互性更加友好以及代码封装性 ...

  6. 结对编程项目——四则运算vs版

    结对编程项目--四则运算vs版 1)小伙伴信息:        学号:130201238 赵莹        博客地址:点我进入 小伙伴的博客 2)实现的功能: 实现带有用户界面的四则运算:将原只能在 ...

  7. 结对作业1----基于GUI的四则运算生成器

    组员:201421123015 陈麟凤 201421123019 张志杰 201421123020 黄海鸿 coding 地址:代码点这里 需求分析: 1.除了整数的四则运算还要支持分数的四则运算: ...

  8. 结对作业--基于GUI的四则运算生成器

    组员:201421123015 陈麟凤 201421123019 张志杰 201421123020 黄海鸿 coding 地址 :https://coding.net/u/zhang1995/p/wo ...

  9. 个人作业1——四则运算题目生成程序(基于C++)

    题目描述: 从<构建之法>第一章的 "程序" 例子出发,像阿超那样,花二十分钟写一个能自动生成小学四则运算题目的命令行 "软件",满足以下需求: 1 ...

随机推荐

  1. GoStudy——Go语言入门第一个事例程序:HelloWorld.go

    package main import ( ​ "fmt" ) func main() { ​ fmt.Println("Hello,world!!!--2019年4月1 ...

  2. bootstrap之navbar

    container:固定960px宽度,(如果又引入了响应式样式,则会适当调整,例如1600*900,它会显示1200px) container-fluid:自适应屏幕宽度,即满屏显示. row和co ...

  3. ios-微信支付登录分享-notification通知

    // //  AppDelegate.m //  NewAppBase // //  Created by ENERGY on 2018/5/17. //  Copyright © 2018年 ENE ...

  4. [zz]LyX 入门教程

    http://blog.sina.com.cn/s/blog_630e5dec0100w3jl.html The LyX Tutorial by the LyX Team 1 目录 Chapter 1 ...

  5. ios下表单post使用gzip模式

    使用afnetworking,服务器参考的这里 ios端,使用自己的序列化类 manager.requestSerializer = [MyHttpRequestSerializer new];[ma ...

  6. onOptionsItemSelected、onMenuItemSelected、onContextItemSelected 区别

         1.在点击选项菜单(OptionsMenu:点击menu弹出的菜单)的菜单项时即调用了onMenuItemSelected 也调用了onOptionsItemSelected ,于是疑惑他们 ...

  7. SWD通讯

    这几日看到坛里有几个关于SWD协议相关的文章,自己也尝试了下,有点体会,也有些疑惑,写出来与大家分享和交流下.    以下我的模拟SWD接口的板子简称为Host,目标MCU(即我要连接的板子)简称为T ...

  8. spring boot项目使用外部tomcat启动失败总结

    1. springboot的tomcat使用外部提供的. dependency> <groupId>org.springframework.boot</groupId> ...

  9. 一台电脑上配置多个tomcat同时运行

    好使 1 1.配置运行tomcat 首先要配置java的jdk环境,这个就不在写了  不懂去网上查查,这里主要介绍再jdk环境没配置好的情况下 如何配置运行多个tomcat 2.第一个tomcat: ...

  10. api.js封装请求

    1. 传入对象格式如 { a:{ getData:{ url: 'xx/xx/xx', method: 'get', require:['id', 'name'], // 简单检查 必传参数确实则不发 ...