OC:可约分的分数

//Fraction.h

#import 

@interface Fraction : NSObject

@property int upper, lower;

-(void)print;
-(void)add:(Fraction*)bFraction;
-(void)reduce;


@end


//Fraction.m

#import "Fraction.h"

@implementation Fraction

@synthesize upper, lower;

-(void)print{
    NSLog(@"%d/%d", upper, lower);
}

-(void)add:(Fraction*)bFraction{
    upper = upper* bFraction.lower + bFraction.upper * lower;
    lower *= bFraction.lower;
}

-(void)reduce{
    int u = (upper > lower? upper: lower), v = (lower > upper? upper: lower), temp;
    printf("u0 = %d\n", u);
    printf("v0 = %d\n", v);
    while(u % v != 0){
        temp = u % v;
        u = v;
        v = temp;
    }
    upper /= v;
    lower /= v;
    printf("u = %d\n", u);
}

@end

//main.m

#import "Fraction.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Fraction *aFraction = [[Fraction alloc] init];
        aFraction.upper = 1;
        aFraction.lower = 4;
        Fraction *bFraction = [[Fraction alloc] init];
        bFraction.upper = 1;
        bFraction.lower = 2;
        [aFraction add: bFraction];
        [aFraction reduce];
        [aFraction print];
    }
    return 0;
}

或在add:方法中使用[self reduce]以简化。self代指接收消息(调用方法)的对象,在此处即aFractiion。

你可能感兴趣的:(OC:可约分的分数)