求两个分数的加减乘除,并比较大小

2024-04-08 05:08

本文主要是介绍求两个分数的加减乘除,并比较大小,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

//初始化分子分母
-(instancetype)initWithFz:(NSInteger)fz andFm:(NSInteger)fm{if (self = [super init]) {_fz = fz;_fm = fm;}return self;}//便利构造器
+(instancetype)initWithFz:(NSInteger)fz andFm:(NSInteger)fm{Fraction * f = [[Fraction alloc]initWithFz:fz andFm:fm];return f;
}//最大公约数
-(NSInteger)maxDivisor:(NSInteger)num1 : (NSInteger)num2{if (num1 * num2 == 0) {return 0;}else{NSInteger max = (num1>num2) ? num1 : num2;NSInteger min = (num1<num2) ? num1 : num2;NSInteger rem = 1;while (rem != 0) {rem = max % min;max = min;min = rem;}return max;}
}//约分
-(void)reduceFraction{NSInteger greatCommonDivisor = [self maxDivisor:_fz :_fm];if (greatCommonDivisor == 0) {return;}else{_fz/=greatCommonDivisor;_fm/=greatCommonDivisor;}
}//相加
-(Fraction *)addFraction:(Fraction *)frac{Fraction * f = [[Fraction alloc]init];f.fz = _fz * frac.fm + _fm * frac.fz;f.fm = _fm * frac.fm;[f reduceFraction];return f;
}//相减
-(Fraction *)subFraction:(Fraction *)frac{Fraction * f = [[Fraction alloc]init];f.fz = _fz * frac.fm - _fm * frac.fz;f.fm = _fm * frac.fm;[f reduceFraction];return f;
}//相乘
-(Fraction *)mulFraction:(Fraction *)frac{Fraction * f = [[Fraction alloc]init];f.fz = _fz * frac.fz;f.fm = _fm * frac.fm;[f reduceFraction];return f;
}//相除
-(Fraction *)divFraction:(Fraction *)frac{Fraction * f = [[Fraction alloc]init];f.fz = _fz * frac.fm;f.fm = _fm * frac.fz;[f reduceFraction];return f;
}//比较大小
-(Fraction *)maxValue:(Fraction *)frac{Fraction * f = [[Fraction alloc]init];_fz = _fz * frac.fm;frac.fz = _fm * frac.fz;f.fz = ( _fz > frac.fz ? _fz : frac.fz);f.fm = _fm * frac.fm;[f reduceFraction];return f;
}//打印分数
-(void)printFraction{if (_fz * _fm >= 0) {NSLog(@"两分数运算结果为:%ld/%ld",_fz,_fm);}else{NSLog(@"两分数运算结果为:-%ld/%ld",labs(_fz),labs(_fm));}
}


这篇关于求两个分数的加减乘除,并比较大小的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/884646

相关文章

C语言实现两个变量值交换的三种方式

《C语言实现两个变量值交换的三种方式》两个变量值的交换是编程中最常见的问题之一,以下将介绍三种变量的交换方式,其中第一种方式是最常用也是最实用的,后两种方式一般只在特殊限制下使用,需要的朋友可以参考下... 目录1.使用临时变量(推荐)2.相加和相减的方式(值较大时可能丢失数据)3.按位异或运算1.使用临时

java两个List的交集,并集方式

《java两个List的交集,并集方式》文章主要介绍了Java中两个List的交集和并集的处理方法,推荐使用Apache的CollectionUtils工具类,因为它简单且不会改变原有集合,同时,文章... 目录Java两个List的交集,并集方法一方法二方法三总结java两个List的交集,并集方法一

MySQL8.0设置redo缓存大小的实现

《MySQL8.0设置redo缓存大小的实现》本文主要在MySQL8.0.30及之后版本中使用innodb_redo_log_capacity参数在线更改redo缓存文件大小,下面就来介绍一下,具有一... mysql 8.0.30及之后版本可以使用innodb_redo_log_capacity参数来更改

Python如何计算两个不同类型列表的相似度

《Python如何计算两个不同类型列表的相似度》在编程中,经常需要比较两个列表的相似度,尤其是当这两个列表包含不同类型的元素时,下面小编就来讲讲如何使用Python计算两个不同类型列表的相似度吧... 目录摘要引言数字类型相似度欧几里得距离曼哈顿距离字符串类型相似度Levenshtein距离Jaccard相

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

java获取图片的大小、宽度、高度方式

《java获取图片的大小、宽度、高度方式》文章介绍了如何将File对象转换为MultipartFile对象的过程,并分享了个人经验,希望能为读者提供参考... 目China编程录Java获取图片的大小、宽度、高度File对象(该对象里面是图片)MultipartFile对象(该对象里面是图片)总结java获取图片

C#比较两个List集合内容是否相同的几种方法

《C#比较两个List集合内容是否相同的几种方法》本文详细介绍了在C#中比较两个List集合内容是否相同的方法,包括非自定义类和自定义类的元素比较,对于非自定义类,可以使用SequenceEqual、... 目录 一、非自定义类的元素比较1. 使用 SequenceEqual 方法(顺序和内容都相等)2.

对postgresql日期和时间的比较

《对postgresql日期和时间的比较》文章介绍了在数据库中处理日期和时间类型时的一些注意事项,包括如何将字符串转换为日期或时间类型,以及在比较时自动转换的情况,作者建议在使用数据库时,根据具体情况... 目录PostgreSQL日期和时间比较DB里保存到时分秒,需要和年月日比较db里存储date或者ti

C#中图片如何自适应pictureBox大小

《C#中图片如何自适应pictureBox大小》文章描述了如何在C#中实现图片自适应pictureBox大小,并展示修改前后的效果,修改步骤包括两步,作者分享了个人经验,希望对大家有所帮助... 目录C#图片自适应pictureBox大小编程修改步骤总结C#图片自适应pictureBox大小上图中“z轴

深入理解C++ 空类大小

《深入理解C++空类大小》本文主要介绍了C++空类大小,规定空类大小为1字节,主要是为了保证对象的唯一性和可区分性,满足数组元素地址连续的要求,下面就来了解一下... 目录1. 保证对象的唯一性和可区分性2. 满足数组元素地址连续的要求3. 与C++的对象模型和内存管理机制相适配查看类对象内存在C++中,规