定义分数(Fraction)类:
1、成员变量:分子、分母
2、方法:
(1)自定义初始化方法(初始分子和分母)
(2)分子的赋值、取值方法
(3)分母的赋值取值方法
(4)打印分数信息
(5)约分
(6)加、减、乘、除运算方法,返回分数对象。
3、mian.m文件中创建分数对象,测试加、减、乘、除。
#import <Foundation/Foundation.h>
@interface Fraction : NSObject
{
NSInteger _numerator;
NSInteger _denominator;
}
/// 自定义初始化
- (id)initWithNumerator:(NSInteger)numerator denominator:(NSInteger)demoinator;
/// 分子的赋值
- (void)setNumerator:(NSInteger)numerator;
/// 分母的赋值
- (void)setDenominator:(NSInteger)denominator;
/// 分子的取值
- (NSInteger)getNumerator;
/// 分子的赋值
- (NSInteger)getDenominator;
/// 打印分数
- (void)outputFraction;
///约分
- (void)outputReduceNumerator;
//计算
- (Fraction *)calculate:(Fraction *)f type:(NSString *)type;
@end
@implementation Fraction
/// 自定义初始化
- (id)initWithNumerator:(NSInteger)numerator denominator:(NSInteger)demoinator
{
_numerator = numerator;
_denominator = demoinator;
return self;
}
/// 分子的赋值
- (void)setNumerator:(NSInteger)numerator
{
_numerator = numerator;
}
/// 分母的赋值
- (void)setDenominator:(NSInteger)denominator
{
_denominator = denominator;
}
/// 分子的取值
- (NSInteger)getNumerator
{
return _numerator;
}
/// 分母的取值
- (NSInteger)getDenominator
{
return _denominator;
}
/// 打印分数
- (void)outputFraction
{
NSLog(@"分数为:%ld/%ld", _numerator, _denominator);
}
/// 约分
- (void)outputReduceNumerator
{
NSInteger temp1 = 0, temp2 = 0, temp3 = 0;
temp1 = _numerator;
temp2 = _denominator;
while (_denominator != 0)
{
temp3 = _numerator % _denominator;
_numerator = _denominator;
_denominator = temp3;
}
NSLog(@"约分后分数为%ld/%ld", temp1/_numerator, temp2/_numerator);
}
/// 计算
- (Fraction *)calculate:(Fraction *)f type:(NSString *)type;
{
Fraction *result = [[Fraction alloc]init];
if ([type isEqualTo:@"+"]) {
result->_numerator = f->_numerator *_denominator + f->_denominator *_numerator;
result->_denominator = f->_denominator *_denominator;
[result outputReduceNumerator];
}
if ([type isEqualTo:@"-"]) {
result->_numerator = f->_numerator *_denominator - f->_denominator *_numerator;
result->_denominator = f->_denominator *_denominator;
[result outputReduceNumerator];
}
if ([type isEqualTo:@"*"]) {
result->_numerator = f->_numerator * _numerator;
result->_denominator = f->_denominator *_denominator;
[result outputReduceNumerator];
}
if ([type isEqualTo:@"/"]) {
result->_numerator = f->_denominator* _numerator;
result->_denominator = f->_numerator * _denominator;
[result outputReduceNumerator];
}
return result;
}
@end
#import <Foundation/Foundation.h>
#import "Fraction.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
Fraction *f1 = [[Fraction alloc]initWithNumerator:1 denominator:2];
[f1 outputFraction];
[f1 setNumerator:6];
[f1 setDenominator:9];
[f1 outputReduceNumerator];
Fraction *f2 = [[Fraction alloc]initWithNumerator:1 denominator:3];
Fraction *f3 = [[Fraction alloc]initWithNumerator:6 denominator:5];
Fraction *f4 = [[Fraction alloc]initWithNumerator:4 denominator:12];
Fraction *f5 = [[Fraction alloc]initWithNumerator:1 denominator:8];
[f2 calculate:f3 type:@"*"];
[f4 calculate:f5 type:@"/"];
}
return 0;
}