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;

}


猜你喜欢

转载自blog.csdn.net/qq_42376419/article/details/80559083