.h文件
#import <Foundation/Foundation.h>
@interface Fraction : NSObject
@property (nonatomic) NSInteger numerator;//分子
@property (nonatomic) NSInteger denominator;//分母
-(id)initWithNumerator:(NSInteger)numerator denominator:(NSInteger)denominator;//初始化
-(void)reductionOfFraction;//约分
-(void)add:(Fraction*)fraction;//相加
-(void)subtract:(Fraction*)fraction;//相减
-(void)multiply:(Fraction*)fraction;//相乘
-(void)divide:(Fraction*)fraction;//相除
-(NSInteger)compare:(Fraction*)fraction;//比较
@end
.m文件
初始化方法等都是初级的 并没有涉及内存管理
#import "Fraction.h"
@implementation Fraction
-(id)initWithNumerator:(NSInteger)numerator denominator:(NSInteger)denominator{
self = [super init];
if (self) {
_numerator = numerator;
_denominator = denominator;
}
return self;
}
-(void)reductionOfFraction{
NSInteger a = self.numerator;
NSInteger b = self.denominator;
NSInteger c = 0;
while (b != 0) {
c = a % b;
a = b;
b = c;
}
NSLog(@"%ld/%ld",self .numerator/a,self. denominator/a);
}//约分
-(void)add:(Fraction*)fraction{
Fraction *fra = [[Fraction alloc]init];
fra.numerator = (self.numerator*fraction.denominator) +(fraction.numerator*self.denominator);
fra.denominator = self.denominator*fraction.denominator;
[fra reductionOfFraction];
}//相加
-(void)subtract:(Fraction*)fraction{
Fraction *fra = [[Fraction alloc]init];
fra.numerator = (self.numerator*fraction.denominator) - (fraction.numerator*self.denominator);
fra.denominator = self.denominator*fraction.denominator;
[fra reductionOfFraction];
}//相减
-(void)multiply:(Fraction*)fraction{
Fraction *fra = [[Fraction alloc]init];
fra.numerator = self.numerator*fraction.denominator;
fra.denominator = self.denominator*fraction.numerator;
[fra reductionOfFraction];
}//相乘
-(void)divide:(Fraction*)fraction{
Fraction *fra = [[Fraction alloc]init];
fra.numerator = self.numerator*fraction.numerator;
fra.denominator = self.denominator*fraction.denominator;
[fra reductionOfFraction];
}//相除
-(NSInteger)compare:(Fraction*)fraction{
NSInteger a = self.numerator*fraction.denominator;
NSInteger b = fraction.numerator*self.denominator;
if (a > b) {
return 1;
} else if (a < b){
return -1;
}else{
return 0;
}
}//比较
@end