OC -分数

 定义一个分数类(Fraction)实例变量:分子,分母

 方法:初始化方法(2个参数),便利构造器,约分,打印,加,减,乘,除。

  1.接口部分

@interdace Fractior : NSObject

{

     int _molecule;

     int _denominator;

}

- (void)print;

- (void)setMolecule:(int)molecule;

- (int)molecule;


- (void)setDenominator:(int)denomiator;

- (int)denomiator;


//遍历构造器

+ (id)fractionWithMolecule:(int)molecule Denomiator:(int)denomator;


//加法

- (Fraction *)addFraction:(Fraction *)afraction  bFraction:(Fraction *)bfraction;


//减法

- (Fraction *)subFraction:(Fraction *)afraction  bFraction:(Fraction *)bfraction;


//乘法

- (Fraction *)mulFraction:(Fraction *)afraction  bFraction:(Fraction *)bfraction;


//除法

- (Fraction *)divFraction:(Fraction *)afraction  bFraction:(Fraction *)bfraction;


//最大公约数:辗转相除法

- (NSInteger)greatestCommonDivisorWithOneNumber:(NSInteger)onenumber anotherNumber:(NSInteger)another number;


//约分

- (void)reduceOffFraction;

@end

2.实现部分

@implementation Fraction


- (void)print{

   NSLog(@"打印份数%d/%d", _molecule, _denominator);

}


//setter getter 取值赋值方法

- (void)setMolecule:(int)molecule{

   _molecule = molecule;

}

- (int)molecule{

    return _molecule;

}


- (void)setDenominator:(int)denomiator{

     _denomiator = denomiator;

}

- (int)denomiator{

      return _decnominator;

}


//遍历构造器

- (id)initWithMolecule:(int)molecule  Denominatior:(int)denominator{

    self = [super init];

    if(self){

    _molecule = molecule;

    _denominator = denominator;

    } 

    return self;

}


+ (id)fractionWithMolecule:(int)molecule Denomiator:(int)denomator{

      Fraction *p = [[Fraction alloc] initWithMolecule:molecule  Denomiator:denomator];

      return  p;

}


//加法

- (Fraction *)addFraction:(Fraction *)afraction  bFraction:(Fraction *)bfraction{

     Fraction  *fra1 = [[Fraction alloc] init];

     fra1->_denominator = afraction->_denominator * bfraction->_denominator;

     fra1->_molecule = afraction->_molecule * bfraction->_denominator + afraction-<_denominator * bfraction->_molecule;

     return  fra1;

}


//减法

- (Fraction *)subFraction:(Fraction *)afraction  bFraction:(Fraction *)bfraction{

     Fraction  *fra2 = [[Fraction alloc] init];

     fra2->_denominator = afraction->_denominator * bfraction->_denominator;

     fra2->_molecule = afraction->_molecule * bfraction->_denominator - afraction-<_denominator * bfraction->_molecule;

     return  fra2;

}


//乘法

- (Fraction *)mulFraction:(Fraction *)afraction  bFraction:(Fraction *)bfraction{

     Fraction  *fra3 = [[Fraction alloc] init];

     fra3->_denominator = afraction->_denominator * bfraction->_denominator;

     fra2->_molecule = afraction->_molecule * bfraction-> _molecule;

     return fra3;

}


//除法

- (Fraction *)divFraction:(Fraction *)afraction  bFraction:(Fraction *)bfraction{

     Fraction  *fra4 = [[Fraction alloc] init];

     fra3->_denominator = afraction->_denominator * bfraction->_molecule;

     fra2->_molecule = afraction->_molecule * bfraction-> _denominator;

     return fra4;

}


//最大公约数:辗转相除法

- (NSInteger)greatestCommonDivisorWithOneNumber:(NSInteger)onenumber anotherNumber:(NSInteger)another number{

   while (anothernumber !=0) {

       NSInteger temp = onenumber % anothernumber;

        onenumber = anothernumber;

        anothernumber = temp;

    }

   return onenumber;

}

//约分

- (void)reduceOffFraction{

    NSInteger temp = [selfgreatestCommonDivisorWithOneNumber:_moleculeanotherNumber:_denominator];

    _denominator /= temp;

    _molecule /= temp;

}


3.main函数
//约分打印

        Fraction *num1 = [FractionfractionWithMolecule:20Denominator:36];

        [num1print];          //打印出 20/ 36;

        [num1reduceOffFraction];

        [num1print];    //约分化简后,输出 5 / 9;


//加法

        Fraction *sum1 = [FractionfractionWithMolecule:4Denominator:7];

       Fraction *sum2 = [FractionfractionWithMolecule:2Denominator:9];

       Fraction *sum = [[Fractionalloc]init];

        sum = [sumaddFraction:sum1bFraction:sum2];

       NSLog(@"sum = %d/%d", sum.molecule, sum.denominator);


//减法

        Fraction *sub1 = [FractionfractionWithMolecule:3Denominator:8];

       Fraction *sub2 = [FractionfractionWithMolecule:2Denominator:7];

       Fraction *sub = [[Fractionalloc]init];

        sub = [subsubFraction:sub1bFraction:sub2];

       NSLog(@"sub = %d/%d", sub.molecule, sub.denominator);


//乘法

        Fraction *mul1 = [FractionfractionWithMolecule:2Denominator:5];

       Fraction *mul2 = [FractionfractionWithMolecule:3Denominator:5];

       Fraction *mul = [[Fractionalloc]init];

        mul = [mulmulFraction:mul1bFraction:mul2];

       NSLog(@"mul = %d/%d", mul.molecule, mul.denominator);


//除法
        Fraction *div1 = [Fraction fractionWithMolecule:6  Denominator: 11 ];

       Fraction *div2 = [FractionfractionWithMolecule:3Denominator:5];

       Fraction *div = [[Fractionalloc]init];

        div = [divdivFraction:div1bFraction:div2];

       NSLog(@"div = %d/%d", div.molecule, div.denominator);

输出结果:




 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值