分数的四则运算
来源:互联网 发布:安卓手机数据恢复大师 编辑:程序博客网 时间:2024/05/22 07:59
实现分数的加减乘除运算
@implementation Fraction
- (void)setNumerator:(NSInteger)numerator{
_numerator = numerator;
}
- (NSInteger)numerator{
return _numerator;
}
- (void)setDenominator:(NSInteger)denominator{
_denominator = denominator;
}
- (NSInteger)denominator{
return _denominator;
}
-(instancetype)initWithNumerator:(NSInteger)numerator denominator:(NSInteger)denominator{
self = [super init];
if (self) {
_numerator = numerator;
_denominator = denominator;
}
return self;
}
+ (Fraction *)NumeratorWithNumerator:(NSInteger)numerator denominator:(NSInteger)denominator{
return [[Fraction alloc] initWithNumerator:numerator denominator:denominator];
}
//一个方法如果不在.h中声明,外部使用对象的时候无法调用,这个方法就只能在这个类的内部使用
//求最大公约数
- (NSInteger)gcdWithNum1:(NSInteger)num1 num2:(NSInteger)num2{
//辗转相除法
while (num2 != 0) {
NSInteger temp = num2;
num2 = num1 % num2;
num1 = temp;
}
return num1;
}
//输出分数
- (void)print{
if (_numerator == _denominator && _numerator != 0 && _denominator != 0) {
NSLog(@"1");
}else if (_numerator == 0 && _denominator != 0){
NSLog(@"0");
}else if (_denominator == 0){
NSLog(@"分母不能为0");
}else if (_denominator < 0){
NSLog(@"%ld %ld", -_numerator, -_denominator);
}else{
NSLog(@"%ld %ld", _numerator, _denominator);
}
}
//约分
- (void)reduce{
//计算最大公约数
NSInteger gcd = [self gcdWithNum1:_numerator num2:_denominator];
_numerator /= gcd;
_denominator /= gcd;
NSLog(@"%ld %ld", _numerator, _denominator);
}
//加法
- (Fraction *)addFraction:(Fraction *)anotherFraction{
//加过之后的分子
NSInteger newNum = self.numerator * anotherFraction.denominator + self.denominator * anotherFraction.numerator;
//加过之后的分母
NSInteger newDenom = self.denominator * anotherFraction.denominator;
Fraction *result = [[Fraction alloc] initWithNumerator:newNum denominator:newDenom];
return result;
}
//减
- (Fraction *)subtractFraction:(Fraction *)anotherFraction{
NSInteger newNum = self.numerator * anotherFraction.denominator - self.denominator * anotherFraction.numerator;
NSInteger newDenom = self.numerator * anotherFraction.denominator;
Fraction *result = [[Fraction alloc] initWithNumerator:newNum denominator:newDenom];
return result;
}
//乘
- (Fraction *)multiplyFraction:(Fraction *)anotherFraction{
NSInteger newNum = self.numerator * anotherFraction.numerator;
NSInteger newDonm = self.denominator * anotherFraction.denominator;
Fraction *result = [[Fraction alloc] initWithNumerator:newNum denominator:newDonm];
return result;
}
//除
- (Fraction *)divideFraction:(Fraction *)anotherFraction{
NSInteger newNum = self.numerator * anotherFraction.denominator;
NSInteger newDonm = self.denominator * anotherFraction.numerator;
Fraction *result = [[Fraction alloc] initWithNumerator:newNum denominator:newDonm];
return result;
}
- 分数类的四则运算
- 分数类的四则运算
- OJ分数的四则运算
- 分数的四则运算
- 分数的四则运算
- 分数的四则运算
- 分数的四则运算
- 分数的四则运算
- 分数的四则运算
- 分数的四则运算
- 分数的四则运算
- 分数的四则运算(c++)
- 分数的表示和四则运算
- 分数四则运算
- 分数四则运算
- c++实现重载分数的四则运算
- 分数类和整数的四则运算
- 分数和整型数的四则运算
- (转)cocoapods使用教程
- codeforces 608B Hamming Distance Sum
- java判断string变量是否是数字的六种方法小结
- LeetCode Merge k Sorted Lists 归并
- Eeny Meeny Moo(约瑟夫环)
- 分数的四则运算
- CSS2.1SPEC:视觉格式化模型之包含块
- 在dell XPS13(9350) 上安装ubuntu15.10(2015年12月)
- Android知识点textview的属性
- linux根目录下的proc目录详解
- android控件注解
- JS去掉字符串中的空格
- 软件工程知识体系
- 【杭电】[2803]The MAX