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

.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];


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值