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

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

相关文章

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

SQL Server 查询数据库及数据文件大小的方法

《SQLServer查询数据库及数据文件大小的方法》文章介绍了查询数据库大小的SQL方法及存储过程实现,涵盖当前数据库、所有数据库的总大小及文件明细,本文结合实例代码给大家介绍的非常详细,感兴趣的... 目录1. 直接使用SQL1.1 查询当前数据库大小1.2 查询所有数据库的大小1.3 查询每个数据库的详

Python如何实现高效的文件/目录比较

《Python如何实现高效的文件/目录比较》在系统维护、数据同步或版本控制场景中,我们经常需要比较两个目录的差异,本文将分享一下如何用Python实现高效的文件/目录比较,并灵活处理排除规则,希望对大... 目录案例一:基础目录比较与排除实现案例二:高性能大文件比较案例三:跨平台路径处理案例四:可视化差异报

Spring Boot配置和使用两个数据源的实现步骤

《SpringBoot配置和使用两个数据源的实现步骤》本文详解SpringBoot配置双数据源方法,包含配置文件设置、Bean创建、事务管理器配置及@Qualifier注解使用,强调主数据源标记、代... 目录Spring Boot配置和使用两个数据源技术背景实现步骤1. 配置数据源信息2. 创建数据源Be

MySQL中比较运算符的具体使用

《MySQL中比较运算符的具体使用》本文介绍了SQL中常用的符号类型和非符号类型运算符,符号类型运算符包括等于(=)、安全等于(=)、不等于(/!=)、大小比较(,=,,=)等,感兴趣的可以了解一下... 目录符号类型运算符1. 等于运算符=2. 安全等于运算符<=>3. 不等于运算符<>或!=4. 小于运

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

Pyserial设置缓冲区大小失败的问题解决

《Pyserial设置缓冲区大小失败的问题解决》本文主要介绍了Pyserial设置缓冲区大小失败的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录问题描述原因分析解决方案问题描述使用set_buffer_size()设置缓冲区大小后,buf

详解C++中类的大小决定因数

《详解C++中类的大小决定因数》类的大小受多个因素影响,主要包括成员变量、对齐方式、继承关系、虚函数表等,下面就来介绍一下,具有一定的参考价值,感兴趣的可以了解一下... 目录1. 非静态数据成员示例:2. 数据对齐(Padding)示例:3. 虚函数(vtable 指针)示例:4. 继承普通继承虚继承5.

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

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

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

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