您的位置:首页 > 其它

创建一个Fraction类(分数)实现分数的加减乘除,比较大小、约分等方法。 要求:为类添加属性

2014-08-13 23:32 826 查看
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  NSComparisonResult
相关文章推荐