您的位置:首页 > 其它

分数的加减乘除 约分 以及比较大小

2014-08-12 23:23 453 查看
.h文件中
@interface Fraction : NSObject
@property (nonatomic) NSInteger numerator;//分子
@property (nonatomic) NSInteger denominator;//分母
-(id)initWithNumerator:(NSInteger)numerator denominator:(NSInteger)denominator;//初始化
-(void)reductionOfFraction;//约分
-(Fraction *)add:(Fraction*)fraction;//相加
-(Fraction *)subtract:(Fraction*)fraction;//相减
-(Fraction *)multiply:(Fraction*)fraction;//相乘
-(Fraction *)divide:(Fraction*)fraction;//相除
-(NSComparisonResult)compare:(Fraction*)fraction;//比较
.m文件中
-(id)initWithNumerator:(NSInteger)numerator denominator:(NSInteger)denominator{
self = [super init];
if (self) {
self.numerator = numerator;
self.denominator = denominator;
}
return self;
}
- (NSInteger)getDivisorWithNumber1:(NSInteger)number1 number2:(NSInteger)number2
{
NSInteger c = 0;
if (number1 < 0) {
number1 = -number1;
}
while (number2 != 0) {
c = number1 % number2;
number1 = number2;
number2 = c;
}
return number1;
}
- (void)reductionOfFraction{
NSInteger divisor = [self getDivisorWithNumber1:self.numerator number2:self.denominator];
self.numerator /= divisor;
self.denominator /= divisor;

}//约分
-(Fraction *)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];
return fra;
}//相加
-(Fraction *)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];
return fra;
}//相减
-(Fraction *)multiply:(Fraction*)fraction{
Fraction *fra = [[Fraction alloc]init];
fra.numerator = self.numerator*fraction.numerator;
fra.denominator = self.denominator*fraction.denominator;
[fra  reductionOfFraction];
return fra;
}//相乘
-(Fraction *)divide:(Fraction*)fraction{
Fraction *fra = [[Fraction alloc]init];
fra.numerator = self.numerator*fraction.denominator;
fra.denominator = self.denominator*fraction.numerator;
[fra  reductionOfFraction];
return fra;
}//相除
-(NSComparisonResult)compare:(Fraction*)fraction{
NSInteger a = self.numerator*fraction.denominator;
NSInteger b = fraction.numerator*self.denominator;
if (a > b) {
return NSOrderedDescending;
} else if (a < b){
return NSOrderedAscending;
}else{
return NSOrderedSame;
}
}//比较
- (NSString *)description
{
NSString *str = nil;
if (self.numerator%self.denominator == 0) {
str = [NSString stringWithFormat:@"%ld", self.numerator/self.denominator];
} else {
str = [NSString stringWithFormat:@"%ld/%ld", self.numerator, self.denominator];
}
return str;
}

main.m文件中

Fraction *fra = [[Fraction alloc]initWithNumerator:2 denominator:6];
Fraction *fra1 = [[Fraction alloc]initWithNumerator:4 denominator:6];
Fraction *addFra = [fra add:fra1];
Fraction *subFra =  [fra subtract:fra1];
Fraction *mulFra =  [fra multiply:fra1];
Fraction *divFra =   [fra divide:fra1];
NSInteger a =  [fra compare:fra1];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐