分數的加減乘除 約分 以及比較大小

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


發佈了29 篇原創文章 · 獲贊 6 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章