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;
}