C++ 实现分数的四则运算
对分数求加减乘除,以及化简
#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++ 实现分数的四则运算的更多相关文章
- 2019.3.13 Java实现分数的四则运算
Java实现分数的四则运算 自己的写法 markdown太久没写格式不会用了--将就着看 Fraction.java package com.lanou; public class Fraction ...
- PAT Basic 1034 有理数四则运算(20) [数学问题-分数的四则运算]
题目 本题要求编写程序,计算2个有理数的和.差.积.商. 输⼊格式: 输⼊在⼀⾏中按照"a1/b1 a2/b2"的格式给出两个分数形式的有理数,其中分⼦和分⺟全是整型范围内的整数, ...
- PAT Advanced 1088 Rational Arithmetic (20) [数学问题-分数的四则运算]
题目 For two rational numbers, your task is to implement the basic arithmetics, that is, to calculate ...
- PAT Advanced 1081 Rational Sum (20) [数学问题-分数的四则运算]
题目 Given N rational numbers in the form "numerator/denominator", you are supposed to calcu ...
- 用java具体代码实现分数(即有理数)四则运算
用java具体代码实现分数(即有理数)四则运算 1,背景 Java老师布置了一个关于有理数运算的题目,因为参考书上有基本代码,所以自己主要是对书上代码做了一点优化,使其用户交互性更加友好以及代码封装性 ...
- 结对编程项目——四则运算vs版
结对编程项目--四则运算vs版 1)小伙伴信息: 学号:130201238 赵莹 博客地址:点我进入 小伙伴的博客 2)实现的功能: 实现带有用户界面的四则运算:将原只能在 ...
- 结对作业1----基于GUI的四则运算生成器
组员:201421123015 陈麟凤 201421123019 张志杰 201421123020 黄海鸿 coding 地址:代码点这里 需求分析: 1.除了整数的四则运算还要支持分数的四则运算: ...
- 结对作业--基于GUI的四则运算生成器
组员:201421123015 陈麟凤 201421123019 张志杰 201421123020 黄海鸿 coding 地址 :https://coding.net/u/zhang1995/p/wo ...
- 个人作业1——四则运算题目生成程序(基于C++)
题目描述: 从<构建之法>第一章的 "程序" 例子出发,像阿超那样,花二十分钟写一个能自动生成小学四则运算题目的命令行 "软件",满足以下需求: 1 ...
随机推荐
- GoStudy——Go语言入门第一个事例程序:HelloWorld.go
package main import ( "fmt" ) func main() { fmt.Println("Hello,world!!!--2019年4月1 ...
- bootstrap之navbar
container:固定960px宽度,(如果又引入了响应式样式,则会适当调整,例如1600*900,它会显示1200px) container-fluid:自适应屏幕宽度,即满屏显示. row和co ...
- ios-微信支付登录分享-notification通知
// // AppDelegate.m // NewAppBase // // Created by ENERGY on 2018/5/17. // Copyright © 2018年 ENE ...
- [zz]LyX 入门教程
http://blog.sina.com.cn/s/blog_630e5dec0100w3jl.html The LyX Tutorial by the LyX Team 1 目录 Chapter 1 ...
- ios下表单post使用gzip模式
使用afnetworking,服务器参考的这里 ios端,使用自己的序列化类 manager.requestSerializer = [MyHttpRequestSerializer new];[ma ...
- onOptionsItemSelected、onMenuItemSelected、onContextItemSelected 区别
1.在点击选项菜单(OptionsMenu:点击menu弹出的菜单)的菜单项时即调用了onMenuItemSelected 也调用了onOptionsItemSelected ,于是疑惑他们 ...
- SWD通讯
这几日看到坛里有几个关于SWD协议相关的文章,自己也尝试了下,有点体会,也有些疑惑,写出来与大家分享和交流下. 以下我的模拟SWD接口的板子简称为Host,目标MCU(即我要连接的板子)简称为T ...
- spring boot项目使用外部tomcat启动失败总结
1. springboot的tomcat使用外部提供的. dependency> <groupId>org.springframework.boot</groupId> ...
- 一台电脑上配置多个tomcat同时运行
好使 1 1.配置运行tomcat 首先要配置java的jdk环境,这个就不在写了 不懂去网上查查,这里主要介绍再jdk环境没配置好的情况下 如何配置运行多个tomcat 2.第一个tomcat: ...
- api.js封装请求
1. 传入对象格式如 { a:{ getData:{ url: 'xx/xx/xx', method: 'get', require:['id', 'name'], // 简单检查 必传参数确实则不发 ...