#import <Foundation/Foundation.h>
@interface Fraction : NSObject
{
NSInteger _numerator;//分数的分子
NSInteger _denominator;//分数的分母
}
//构造方法的设计
- (id)initWithNumerator:(NSInteger)numerator andDenominator:(NSInteger)denominator;
//setter方法
- (void)setNumerator:(NSInteger)numerator;
- (void)setDenominator:(NSInteger)denominator;
- (void)setNumorator:(NSInteger)Numerator andDenominator:(NSInteger)denominator;
//getter方法
- (NSInteger)numerator;
- (NSInteger)denominator;
//分数的加减乘除运算
- (void)addFraction:(Fraction *)aFraction;
- (void)subFraction:(Fraction *)aFraction;
- (void)mulFraction:(Fraction *)aFraction;
- (void)divFraction:(Fraction *)aFraction;
//实现约分
- (void)reduce;
//打印分数
- (void)printFraction;
@end
@implementation Fraction
//init方法实现
- (id)initWithNumerator:(NSInteger)numerator andDenominator:(NSInteger)denominator
{
if (self = [super init]) {
_numerator = numerator;
_denominator = denominator;
}
return self;
}
//srtter方法实现
- (void)setNumerator:(NSInteger)numerator
{
_numerator = numerator;
}
- (void)setDenominator:(NSInteger)denominator
{
_denominator = denominator;
}
- (void)setNumerator:(NSInteger)numerator andDenominator:(NSInteger)denominator
{
_numerator = numerator;
_denominator = denominator;
}
//getter方法
- (NSInteger)numerator
{
return _numerator;
}
- (NSInteger)denominator
{
return _denominator;
}
//分数的加法运算
- (void)addFraction:(Fraction *)aFraction
{
_numerator = [self numerator] * [aFraction denominator] + [aFraction numerator] * [self denominator];
_denominator = [self denominator] * [aFraction denominator];
}
//分数的减法运算
- (void)sbuFraction:(Fraction *)aFraction
{
_numerator = [self numerator] * [aFraction denominator] - [aFraction numerator] * [self denominator];
_denominator = [self denominator] * [aFraction denominator];
}
//分数的惩罚运算
- (void)mulFraction:(Fraction *)aFraction
{
_numerator = [self numerator] * [aFraction numerator];
_denominator = [self denominator] * [aFraction denominator];
}
//分数的除法运算
- (void)divFraction:(Fraction *)aFraction
{
_numerator = [self numerator] * [aFraction denominator];
_denominator = [self denominator] * [aFraction numerator];
}
//分数的约分
- (void)reduce
{
NSInteger n = _numerator;
NSInteger d = _denominator;
while (d) {
NSInteger temp = n%d;
n = d;
d = temp;
}
_numerator /= n;
_denominator /= n;
}
- (void)printFraction
{
NSLog(@"Fraction = %li/%li", _numerator, _denominator);
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
Fraction *f1 = [[Fraction alloc] initWithNumerator:1 andDenominator:3];
Fraction *f2 = [[Fraction alloc] initWithNumerator:2 andDenominator:5];
// [f1 addFraction:f2];
// [f1 printFraction];
[f1 mulFraction:f2];
[f1 printFraction];
Fraction *f3 = [[Fraction alloc] initWithNumerator:1 andDenominator:3];
Fraction *f4 = [[Fraction alloc] initWithNumerator:4 andDenominator:15];
[f3 addFraction:f4];
[f3 reduce];
[f3 printFraction];
}
return 0;
}