第一题 分数类(Fraction)
1、成员变量:分子、分母
2、方法:
(1)初始化方法
(2)分子、分母的赋值、取值方法
(3)打印分数
(4)约分
(5)加、减、乘、除四个运算方法,返回分数对象
3、主函数中创建分数对象,测试加、减、乘、除。
提示:加减乘除运算只有一个Fraction类型的参数,有一个Fraction类型的返回值。
创建Fraction(分数)类
// Fraction.h 文件
#import <Foundation/Foundation.h>
@interface Fraction : NSObject
{
int _numerator; // 分子
int _denominator; // 分母
}
///初始化
- (id)initWithNumerator:(int)numerator denominator:(int)denominator;
///赋值
- (void)setNumerator:(int)numerator;
- (void)setDenominator:(int)denominator;
///取值
- (int)numerator;
- (int)denominator;
///打印
- (void)print;
///约分
- (void)reduction;
///加
- (Fraction *)add:(Fraction *)fraction;
///减
- (Fraction *)reduce:(Fraction *)fraction;
///乘
- (Fraction *)multiply:(Fraction *)fraction;
///除
- (Fraction *)divide:(Fraction *)fraction;
@end
// Fraction.m 文件
// 实现 Fraction.h 中的方法
#import "Fraction.h"
@implementation Fraction
///初始化
- (id)initWithNumerator:(int)numerator denominator:(int)denominator
{
_numerator = numerator;
_denominator = denominator;
return self;
}
///赋值
- (void)setNumerator:(int)numerator
{
_numerator = numerator;
}
- (void)setDenominator:(int)denominator
{
_denominator = denominator;
}
///取值
- (int)numerator
{
return _numerator;
}
- (int)denominator
{
return _denominator;
}
///打印分数
- (void)print
{
NSLog(@"%d / %d", _numerator, _denominator);
}
///约分
- (void)reduction
{
int x = _numerator, y = _denominator;
while (x % y != 0) {
int a = x % y;
x = y;
y = a;
}
_numerator /= y;
_denominator /= y;
}
///加
- (Fraction *)add:(Fraction *)fraction
{
Fraction *_result = [[Fraction alloc] init];
_result->_numerator = ([self numerator] * [fraction denominator]) + ([self denominator] * [fraction numerator]);
_result->_denominator = [self denominator] * [fraction denominator];
[_result reduction];
return _result;
}
///减
- (Fraction *)reduce:(Fraction *)fraction
{
Fraction *_result = [[Fraction alloc] init];
_result->_numerator = ([self numerator] * [fraction denominator]) - ([self denominator] * [fraction numerator]);
_result->_denominator = [self denominator] * [fraction denominator];
[_result reduction];
return _result;
}
///乘
- (Fraction *)multiply:(Fraction *)fraction
{
Fraction *_result = [[Fraction alloc] init];
_result->_numerator = [self numerator] * [fraction numerator];
_result->_denominator = [self denominator] * [fraction denominator];
[_result reduction];
return _result;
}
///除
- (Fraction *)divide:(Fraction *)fraction
{
Fraction *_result = [[Fraction alloc] init];
_result->_numerator = [self numerator] * [fraction denominator];
_result->_denominator = [self denominator] * [fraction numerator];
[_result reduction];
return _result;
}
@end
// 主函数mian.m
#import <Foundation/Foundation.h>
#import "Fraction.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
// 创建Fraction的对象叫a1
Fraction *a1 = [[Fraction alloc] initWithNumerator:2 denominator:3];
// 创建Fraction的对象叫a2
Fraction *a2 = [[Fraction alloc] initWithNumerator:1 denominator:4];
// 打印对象a1, a2
[a1 print];
[a2 print];
// 创建fraction类temp1保存a1加a2的值
Fraction *temp1 = [a1 add:a2];
// 打印对象temp1
[temp1 print];
// 创建fraction类temp1保存a1减a2的值
Fraction *temp2 = [a1 reduce:a2];
// 打印对象temp2
[temp2 print];
// 创建fraction类temp1保存a1乘a2的值
Fraction *temp3 = [a1 multiply:a2];
// 打印对象temp3
[temp3 print];
// 创建fraction类temp1保存a1除a2的值
Fraction *temp4 = [a1 divide:a2];
// 打印对象temp4
[temp4 print];
}
return 0;
}