资源简介

Fraction类使用属性的方法,实现了分数的约分,打印,加法,减法,乘法,除法四则运算

资源截图

代码片段和文件信息

//
//  Fraction.m
//  NewFraction
//
//  Created by dllo on 15/10/15.
//  Copyright (c) 2015年 ZKJ. All rights reserved.
//

#import “Fraction.h“

@implementation Fraction

/**
 *  自定义初始化
 *
 *  @param numerator   分子
 *  @param denominator 分母
 *
 *  @return 分数对象
 */
- (instancetype)initWithNumerator:(NSInteger)numerator withDenominator:(NSInteger)denominator {
    
    self = [super init];
    if (self) {
        _numerator = numerator;
        _denominator = denominator;
    }
    return self;
}

/**
 *  便利构造器
 *
 *  @param numerator   分子
 *  @param denominator 分母
 *
 *  @return 分数类
 */
+ (instancetype)fractionWithNumerator:(NSInteger)numerator withDenominator:(NSInteger)denominator {
    
    Fraction *fraction = [[Fraction alloc] initWithNumerator:numerator withDenominator:denominator];
    return fraction;
}

/**
 *  打印分数方法
 */
- (void)print {
    NSLog(@“%ld/%ld“ _numerator _denominator);
}

/**
 *  约分
 */
- (void)reduce {
    //对分子是负数的情况进行考虑
    NSInteger numerator = _numerator > 0 ? _numerator : -_numerator;
    NSInteger denominator = _denominator;
    NSInteger gcd;
    
//    辗转相除法得最大公约数,考虑分子是0的情况
    if (_numerator == 0) {
        return;
    } else {
        while (numerator) {
            gcd = denominator % numerator;
            denominator = numerator;
            numerator = gcd;
        }
        gcd = denominator;
        
        _numerator /= gcd;
        _denominator /= gcd;
    }
}

/**
 *  分数加法运算
 *
 *  @param antherFraction 传进来的对象
 *
 *  @return 分数对象
 */
- (Fraction *)addFraction:(Fraction *)antherFraction {
    
    Fraction *result = [Fraction fractionWithNumerator:_numerator * antherFraction.denominator + _denominator * antherFraction.numerator withDenominator:_denominator * antherFraction.denominator];
    
    [result reduce];
    
    return result;
}

/**
 *  减法运算
 *
 *  @param antherFraction 减数
 *
 *  @return 分数对象
 */
- (Fraction *)subFraction:(Fraction *)antherFraction {
    
    Fraction *result = [Fraction fractionWithNumerator:_numerator * antherFraction.denominator - _denominator * antherFraction.numerator withDenominator:_denominator * antherFraction.denominator];
    
    [result reduce];
    
    return result;
}

/**
 *  乘法
 *
 *  @param antherFraction 乘数
 *
 *  @return 分数对象
 */
- (Fraction *)mulFraction:(Fraction *)antherFraction {
    
    Fraction *result = [Fraction fractionWithNumerator:_numerator * antherFraction.numerator withDenominator:_denominator * antherFraction.denominator];
    
    [result reduce];
    
    return result;
}

/**
 *  除法
 *
 *  @param antherFraction 除数
 *
 *  @return 分数对象
 */
- (Fraction *)divFraction:(Fraction *)antherFraction {
    
//    考虑除数为0的情况,提示出错,并且返回调用对象本身
    if (antherFraction.numerator == 0) {
        NSLog(@“除数不能为0“);
        return self;
    }
    Fraction *result = [Fraction fractionWithNumerator:_numerator * antherFraction.denominator withDenominator:_denominator * antherFraction.numerator];
    
    [result reduce];
    
    return result;
}

@end










 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2015-10-15 19:33  Fraction\
     目录           0  2015-10-15 19:40  Fraction\.git\
     目录           0  2015-10-15 19:33  Fraction\.git\branches\
     文件          15  2015-10-15 19:33  Fraction\.git\COMMIT_EDITMSG
     文件         137  2015-10-15 19:33  Fraction\.git\config
     文件          73  2015-10-15 19:33  Fraction\.git\description
     文件          23  2015-10-15 19:33  Fraction\.git\HEAD
     目录           0  2015-10-15 19:33  Fraction\.git\hooks\
     文件         452  2015-10-15 19:33  Fraction\.git\hooks\applypatch-msg.sample
     文件         896  2015-10-15 19:33  Fraction\.git\hooks\commit-msg.sample
     文件         189  2015-10-15 19:33  Fraction\.git\hooks\post-update.sample
     文件         398  2015-10-15 19:33  Fraction\.git\hooks\pre-applypatch.sample
     文件        1642  2015-10-15 19:33  Fraction\.git\hooks\pre-commit.sample
     文件        1348  2015-10-15 19:33  Fraction\.git\hooks\pre-push.sample
     文件        4951  2015-10-15 19:33  Fraction\.git\hooks\pre-rebase.sample
     文件        1239  2015-10-15 19:33  Fraction\.git\hooks\prepare-commit-msg.sample
     文件        3611  2015-10-15 19:33  Fraction\.git\hooks\update.sample
     文件         635  2015-10-15 19:33  Fraction\.git\index
     目录           0  2015-10-15 19:33  Fraction\.git\info\
     文件          40  2015-10-15 19:33  Fraction\.git\info\exclude
     目录           0  2015-10-15 19:40  __MACOSX\
     目录           0  2015-10-15 19:40  __MACOSX\Fraction\
     目录           0  2015-10-15 19:40  __MACOSX\Fraction\.git\
     目录           0  2015-10-15 19:40  __MACOSX\Fraction\.git\info\
     文件         171  2015-10-15 19:33  __MACOSX\Fraction\.git\info\._exclude
     目录           0  2015-10-15 19:33  Fraction\.git\logs\
     文件         173  2015-10-15 19:33  Fraction\.git\logs\HEAD
     目录           0  2015-10-15 19:33  Fraction\.git\logs\refs\
     目录           0  2015-10-15 19:33  Fraction\.git\logs\refs\heads\
     文件         173  2015-10-15 19:33  Fraction\.git\logs\refs\heads\master
     目录           0  2015-10-15 19:33  Fraction\.git\objects\
............此处省略46个文件信息

评论

共有 条评论