建立一個Fraction類(分數)實現分數的加減乘除,比較大小、約分等方法。 要求:為類新增屬性
阿新 • • 發佈:2019-01-10
Fraction.h宣告檔案
#import <Foundation/Foundation.h> @interface Fraction : NSObject @property (nonatomic) NSInteger member;//分子 @property (nonatomic) NSInteger denominator;//分母 //初始化 - (id)initWitnMember:(NSInteger)member denominator:(NSInteger)denominator; //最大公約數 - (NSInteger)gcdNumber:(NSInteger)member denominator:(NSInteger)denominator; //相加 - (Fraction *)sumNumber:(Fraction *)fraction; //相減 - (Fraction *)reduceNumber:(Fraction *)fraction; //相乘 - (Fraction *)rideNumber:(Fraction *)fraction; //相除 - (Fraction *)divideNumber:(Fraction *)fraction; //比較大小 - (NSComparisonResult)resultCompare:(Fraction *)fraction; //約分 - (void)simplifyNumber; @end
Fraction.m實現檔案
#import "Fraction.h" @implementation Fraction //初始化 - (id)initWitnMember:(NSInteger)member denominator:(NSInteger)denominator{ self = [super init]; if(self != nil){ self.member = member; self.denominator = denominator; } return self; } //最大公約數 - (NSInteger)gcdNumber:(NSInteger)member denominator:(NSInteger)denominator{ NSInteger a = member % denominator; while (a != 0) { member = denominator; denominator = a; a = member % denominator; } return denominator; } //約分 - (void)simplifyNumber{ NSInteger divisor = [self gcdNumber:self.member denominator:self.denominator]; self.member/= divisor; self.denominator/= divisor; } //相加 - (Fraction *)sumNumber:(Fraction *)fraction{ Fraction *fr = [[Fraction alloc] init]; fr.member = [self member]*[fraction denominator] + [fraction member]*[self denominator]; fr.denominator = [fraction denominator]*[self denominator]; [fr simplifyNumber]; return fr; } //相減 - (Fraction *)reduceNumber:(Fraction *)fraction{ Fraction *fr = [[Fraction alloc] init]; fr.member = self.member*fraction.denominator - fraction.member*self.denominator; fr.denominator = self. denominator*fraction.denominator; [fr simplifyNumber]; return fr; } //相乘 - (Fraction *)rideNumber:(Fraction *)fraction{ Fraction *fr = [[Fraction alloc] init]; fr.member = [self member]*[fraction member]; fr.denominator = [self denominator]*[fraction denominator]; [fr simplifyNumber]; return fr; } //相除 - (Fraction *)divideNumber:(Fraction *)fraction{ Fraction *fr = [[Fraction alloc] init]; fr.member = [self member]*[fraction denominator]; fr.denominator = [self denominator]*[fraction member]; [fr simplifyNumber]; return fr; } //比較大小 - (NSComparisonResult)resultCompar:(Fraction *)fraction{ NSInteger sum1 = [self member]*[fraction denominator]; NSInteger sum2 = [fraction member]*[self denominator]; NSInteger sum = sum1 - sum2; if (sum > 0) { return NSOrderedSame; }else if (sum == 0){ return NSOrderedSame; }else{ return NSOrderedAscending; } } @end
主函式呼叫
#import <Foundation/Foundation.h> #import "Fraction.h" int main(int argc, const char * argv[]) { @autoreleasepool { Fraction *fr1 = [[Fraction alloc] initWitnMember:1 denominator:3]; Fraction *fr2 = [[Fraction alloc] initWitnMember:3 denominator:5]; //NSArray *arr = [[NSArray alloc] initWithObjects:fr1,fr2, nil]; //相加 Fraction *fr = [fr1 sumNumber:fr2]; NSLog(@"%ld/%ld", fr.member, fr.denominator); //相減 Fraction *fra = [fr1 reduceNumber:fr2]; NSLog(@"%ld/%ld", fra.member,fra.denominator); //相乘 Fraction *fra1 = [fr1 rideNumber:fr2]; NSLog(@"%ld/%ld", fra1.member,fra1.denominator); //相除 Fraction *fra2 = [fr1 divideNumber:fr2]; NSLog(@"%ld/%ld", fra2.member,fra2.denominator); } return 0; }