定义一个分数类(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;
}
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 *div2 = [FractionfractionWithMolecule:3Denominator:5];
Fraction *div = [[Fractionalloc]init];
div = [divdivFraction:div1bFraction:div2];
NSLog(@"div = %d/%d", div.molecule, div.denominator);
输出结果: