OC分数的实现

 

#import <Foundation/Foundation.h>

 

@interface Fraction : NSObject

{

    NSInteger _numerator;//分数的分子

    NSInteger _denominator;//分数的分母

}

 

//构造方法的设计

- (id)initWithNumerator:(NSInteger)numerator andDenominator:(NSInteger)denominator;

 

//setter方法

- (void)setNumerator:(NSInteger)numerator;

- (void)setDenominator:(NSInteger)denominator;

- (void)setNumorator:(NSInteger)Numerator andDenominator:(NSInteger)denominator;

 

//getter方法

 

- (NSInteger)numerator;

- (NSInteger)denominator;

 

//分数的加减乘除运算

- (void)addFraction:(Fraction *)aFraction;

- (void)subFraction:(Fraction *)aFraction;

- (void)mulFraction:(Fraction *)aFraction;

- (void)divFraction:(Fraction *)aFraction;

 

//实现约分

- (void)reduce;

 

//打印分数

- (void)printFraction;

 

 

@end

 

 

 

@implementation Fraction

//init方法实现

- (id)initWithNumerator:(NSInteger)numerator andDenominator:(NSInteger)denominator

{

    if (self = [super init]) {

        _numerator = numerator;

        _denominator = denominator;

    }

    return self;

}

 

//srtter方法实现

- (void)setNumerator:(NSInteger)numerator

{

    _numerator = numerator;

}

 

- (void)setDenominator:(NSInteger)denominator

{

    _denominator = denominator;

}

 

- (void)setNumerator:(NSInteger)numerator andDenominator:(NSInteger)denominator

{

    _numerator = numerator;

    _denominator = denominator;

}

 

//getter方法

 

- (NSInteger)numerator

{

    return _numerator;

}

 

- (NSInteger)denominator

{

    return _denominator;

}

 

//分数的加法运算

- (void)addFraction:(Fraction *)aFraction

{

    _numerator = [self numerator] * [aFraction denominator] + [aFraction numerator] * [self denominator];

    _denominator = [self denominator] * [aFraction denominator];

}

 

//分数的减法运算

- (void)sbuFraction:(Fraction *)aFraction

{

    _numerator = [self numerator] * [aFraction denominator] - [aFraction numerator] * [self denominator];

    _denominator = [self denominator] * [aFraction denominator];

}

 

//分数的惩罚运算

- (void)mulFraction:(Fraction *)aFraction

{

    _numerator = [self numerator] * [aFraction numerator];

    _denominator = [self denominator] * [aFraction denominator];

}

 

//分数的除法运算

- (void)divFraction:(Fraction *)aFraction

{

    _numerator = [self numerator] * [aFraction denominator];

    _denominator = [self denominator] * [aFraction numerator];

}

 

//分数的约分

- (void)reduce

{

    NSInteger n = _numerator;

    NSInteger d = _denominator;

    while (d) {

        NSInteger temp = n%d;

        n = d;

        d = temp;

    }

    

    _numerator /= n;

    _denominator /= n;

    

}

 

- (void)printFraction

{

    NSLog(@"Fraction = %li/%li", _numerator, _denominator);

}

@end

 

 

int main(int argc, const char * argv[]) {

 

    @autoreleasepool {

        Fraction *f1 = [[Fraction alloc] initWithNumerator:1 andDenominator:3];

        Fraction *f2 = [[Fraction alloc] initWithNumerator:2 andDenominator:5];

//        [f1 addFraction:f2];

//        [f1 printFraction];

        

        [f1 mulFraction:f2];

        [f1 printFraction];

        

        Fraction *f3 = [[Fraction alloc] initWithNumerator:1 andDenominator:3];

        Fraction *f4 = [[Fraction alloc] initWithNumerator:4 andDenominator:15];

        [f3 addFraction:f4];

        [f3 reduce];

        [f3 printFraction];

    }

    return 0;

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值