Fraction类(分数)实现分数的加减乘除, ⽐比较⼤大⼩小、约分等⽅方法
来源:互联网 发布:学钢琴 软件 编辑:程序博客网 时间:2024/06/02 15:53
Fraction.h:
#import <Foundation/Foundation.h>
@interface Fraction : NSObject
//声明两个实例变量
@property NSInteger upNumber, downNumber;
//自定义初始化方法
- (id)initWithUpNumber:(NSInteger)upNumber downNumber:(NSInteger)downNumber;
//便利构造器
+ (id)fractionWithUpNumber:(NSInteger)upNumber downNumber:(NSInteger)downNumber;
//求最大公约数
- (NSInteger)GCDNumber:(NSInteger)num1 number2:(NSInteger)num2;
//约分
- (void)reduce;
//加法
- (Fraction *)addFraction:(Fraction *)anotherFraction;
//减法
- (Fraction *)delFraction:(Fraction *)anotherFraction;
//乘法
- (Fraction *)mulFraction:(Fraction *)anotherFraction;
//除法
- (Fraction *)divFraction:(Fraction *)anotherFraction;
//比较大小
- (void)comFraction:(Fraction *)num1 ;
--------------------------------------------------------------------------------------------
Fraction.m:#import "Fraction.h"
@implementation Fraction
- (id)initWithUpNumber:(NSInteger)upNumber downNumber:(NSInteger)downNumber {
if (self = [super init]) {
_upNumber = upNumber;
_downNumber = downNumber;
}
return self;
}
+ (id)fractionWithUpNumber:(NSInteger)upNumber downNumber:(NSInteger)downNumber {
return [[Fraction alloc] initWithUpNumber:upNumber downNumber:downNumber];
}
//重写方法
- (NSString *)description
{
return [NSString stringWithFormat:@"%ld/%ld", _upNumber, _downNumber];
}
#pragma mark -运算方法
//求最大公约数
- (NSInteger)GCDNumber:(NSInteger)num1 number2:(NSInteger)num2 {
//利用辗转相除法, 求出最大公约数
while (num2 != 0) {
NSInteger temp = num1 % num2;
num1 = num2;
num2 = temp;
}
return num1;
}
//约分
- (void)reduce {
NSInteger num = [self GCDNumber:_upNumber number2:_downNumber];
//分子, 分母都以最大公约数, 就是约分后的分子, 分母
_upNumber /= num;
_downNumber /= num;
}
//加法
- (Fraction *)addFraction:(Fraction *)anotherFraction {
Fraction *fraction = [[Fraction alloc] init];
//两分数相加后的分子
fraction.upNumber = _upNumber * anotherFraction.downNumber + anotherFraction.upNumber * _downNumber;
//相加后的分母
fraction.downNumber = _downNumber * anotherFraction.downNumber;
[fraction reduce];
return fraction;
}
//减法
- (Fraction *)delFraction:(Fraction *)anotherFraction {
Fraction *fraction = [[Fraction alloc] init];
//两分数相减后的分子
fraction.upNumber = _upNumber * anotherFraction.downNumber - anotherFraction.upNumber * _downNumber;
//两分数相减后的分母
fraction.downNumber = _downNumber * anotherFraction.downNumber;
[fraction reduce];
return fraction;
}
//乘法
- (Fraction *)mulFraction:(Fraction *)anotherFraction {
Fraction *fraction = [[Fraction alloc] init];
//两分数相乘后的分子
fraction.upNumber = _upNumber * anotherFraction.upNumber;
//两分数相乘后的分母
fraction.downNumber = _downNumber * anotherFraction.downNumber;
[fraction reduce];
return fraction;
}
//除法
- (Fraction *)divFraction:(Fraction *)anotherFraction {
Fraction *fraction = [[Fraction alloc] init];
//两分数相除后的分子
fraction.upNumber = _upNumber * anotherFraction.downNumber;
//两分数相除后的分母
fraction.downNumber = _downNumber * anotherFraction.upNumber;
[fraction reduce];
return fraction;
}
//比较大小
- (void)comFraction:(Fraction *)num1 {
Fraction *result = [self delFraction:num1];
//比较两个分数的大小
if (result == 0) {
NSLog(@"两数相等!");
}
if (result > 0) {
NSLog(@"%@ > %@", self, num1);
}else if (result < 0) {
NSLog(@"%@ < %@", self, num1);
}
}
@end
#import <Foundation/Foundation.h>
#import "Fraction.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
// 创建⼀一个Fraction类(分数)实现分数的加减乘除,⽐比较⼤大⼩小、约分等⽅方法。
// 要求:为类添加属性
Fraction *num1 = [[Fraction alloc] initWithUpNumber:4 downNumber:12];
Fraction *num2 = [[Fraction alloc] initWithUpNumber:3 downNumber:12];
//两分数之和
Fraction *sum = [num1 addFraction:num2];
NSLog(@"%@", sum);
//两数之差
Fraction *del = [num1 delFraction:num2];
NSLog(@"%@", del);
//两数之积
Fraction *mul = [num1 mulFraction:num2];
NSLog(@"%@", mul);
//两数之商
Fraction *div = [num1 divFraction:num2];
NSLog(@"%@", div);
//两数比较大小
[num1 comFraction:num2];
}
return 0;
}
- Fraction类(分数)实现分数的加减乘除, ⽐比较⼤大⼩小、约分等⽅方法
- 创建一个Fraction类(分数)实现分数的加减乘除,比较大小、约分等方法。
- 创建一个Fraction类(分数)实现分数的加减乘除,比较大小、约分等方法。
- 创建一个Fraction类(分数)实现分数的加减乘除,比较大小、约分等方法.要求:为类添加属性
- 创建一个Fraction类(分数)实现分数的加减乘除,比较大小、约分等方法。 要求:为类添加属性
- 如何通过创建一个Fraction类(分数)来实现分数的加减乘除,比较大小、约分等方法(方法的实现部分)
- OC 创建一个Fraction类(分数)实现分数的加减乘除,比较大小、约分等方法。 要求:为类添加属性
- 分数的加减乘除 约分 以及比较大小
- 分数的约分及加减乘除运算
- 实现分数的加减乘除
- Objective c 分数之间的加减乘除 约分,最大公约数
- 分数类的加减乘除
- 分数的约分
- Java 小例子:模拟分数的类 Fraction
- 实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、比较(6种关系)的运算
- 实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、比较(6种关系)的运算
- 【c++程序】分数的约分
- 【十三】分数的重载,加减乘除以及比较
- VVDocumenter Xcode6.4安装步骤(非常实用)
- Android的四种监听事件处理方式
- UVA10025连续自然数添上正负号得到固定的数
- css页面布局基础
- HDU 3829 — Cat VS Dog 最大独立集
- Fraction类(分数)实现分数的加减乘除, ⽐比较⼤大⼩小、约分等⽅方法
- hdu5336 多校联合第四场1010 模拟+bfs优先队列
- 鸟哥的私房菜学习笔记 重要的Bash Shell的操作环境
- Windows7解决VBoxDD.dll不能加载
- Integer super重写重载public4个关键字
- hdu 3790 最短路径问题 最短路Dijkstra
- 46 Useful Utility Functions For #Delphi XE8
- 使用libsvm实现文本分类
- 在网上找来的几个大牛,忽然觉得自己来参加ACM倒也不是一件错误的事情,梦想总是要有的,万一成了呢。