分数的约分及加减乘除运算
定义⼀个分数类(Fraction)
实例变量:分子,分母
⽅法:初始化⽅方法(2个参数),便利构造器,约分,打印,加,减,乘,除。
main.m
#import
#import "Fraction.h"
int main(int argc, const char * argv[]) {
Fraction *num1 = [Fraction fractionWithNumerator:2 denominator:8];
[num1 print];
[num1 reductionOfFraction];
[num1 print];
Fraction *num2 = [Fraction fractionWithNumerator:6 denominator:15];
[num2 print];
[num2 reductionOfFraction];
[num2 print];
Fraction *result = [Fraction minusWitfAFraction:num1 bFraction:num2];
[result print];
Fraction *result2 = [Fraction addWitfAFraction:num1 bFraction:num2];
[result2 print];
Fraction *result3 = [Fraction timeWitfAFraction:num1 bFraction:num2];
[result3 print];
Fraction *result4 = [Fraction divideWitfAFraction:num1 bFraction:num2];
[result4 print];
return 0;
}
Fraction.h
#import
@interface Fraction : NSObject
{
NSInteger numerator;//分子
NSInteger denominator;//分母
}
//自定义初始化方法
- (id)initWithNumerator:(NSInteger)aNumerator;
- (id)initWithNumerator:(NSInteger)aNumerator denominator:(NSInteger)aDenominator;
//便利构造器
+ (Fraction *)fractionWithNumerator:(NSInteger)aNumerator denominator:(NSInteger)aDenominator;
//setter和getter
- (void)setNumerator:(NSInteger)aNumerator;
- (NSInteger)numerator;
- (void)setDenominator:(NSInteger)aDenominator;
- (NSInteger)denominator;
//最大公约数:辗转相除法
- (NSInteger)greatestCommonDivisorWit hOneNumber:(NSInteger)oneNumber anotherNumber:(NSInteger)anotherNumber;
//约分
- (void)reductionOfFraction;
//打印
- (void)print;
//加
+ (Fraction *)addWitfAFraction:(Fraction *)aFraction bFraction:(Fraction *)bFraction;
//减
+ (Fraction *)minusWitfAFraction:(Fraction *)aFraction bFraction:(Fraction *)bFraction;
//乘
+ (Fraction *)timeWitfAFraction:(Fraction *)aFraction bFraction:(Fraction *)bFraction;
//除
+ (Fraction *)divideWitfAFraction:(Fraction *)aFraction bFraction:(Fraction *)bFraction;
@end
Fraction.m
#import "Fraction.h"
@implementation Fraction
- (id)init {
if (self = [super init]) {
numerator = 5;
denominator = 9;
}
return self;
}
- (id)initWithNumerator:(NSInteger)aNumerator {
self = [self init];
numerator = aNumerator;
return self;
}
- (id)initWithNumerator:(NSInteger)aNumerator denominator:(NSInteger)aDenominator {
self = [self initWithNumerator:aNumerator];
denominator = aDenominator;
return self;
}
+ (Fraction *)fractionWithNumerator:(NSInteger)aNumerator denominator:(NSInteger)aDenominator {
return [[Fraction alloc] initWithNumerator:aNumerator denominator:aDenominator];
}
- (void)setNumerator:(NSInteger)aNumerator {
numerator = aNumerator;
}
- (NSInteger)numerator {
return numerator;
}
- (void)setDenominator:(NSInteger)aDenominator {
denominator = aDenominator;
}
- (NSInteger)denominator {
return denominator;
}
//最大公约数:辗转相除法
- (NSInteger)greatestCommonDivisorWit hOneNumber:(NSInteger)oneNumber anotherNumber:(NSInteger)anotherNumber {
while (anotherNumber != 0) {
NSInteger temp = oneNumber % anotherNumber;
oneNumber = anotherNumber;
anotherNumber = temp;
}
return oneNumber;
}
//约分
- (void)reductionOfFraction {
NSInteger temp = [self greatestCommonDivisorWit hOneNumber:numerator anotherNumber:denominator];
numerator /= temp;
denominator /= temp;
}
//打印
- (void)print {
NSLog(@"这个分数是%ld / %ld", numerator, denominator);
}
//加
+ (Fraction *)addWitfAFraction:(Fraction *)aFraction bFraction:(Fraction *)bFraction {
Fraction *result = [[Fraction alloc] init];
result.denominator = aFraction.denominator * bFraction.denominator;
result.numerator = aFraction.numerator * bFraction.denominator + bFraction.numerator * aFraction.denominator;
[result reductionOfFraction];
return result;
}
//减
+ (Fraction *)minusWitfAFraction:(Fraction *)aFraction bFraction:(Fraction *)bFraction {
//存储结构
Fraction *result = [[Fraction alloc] init];
//分母
result.denominator = aFraction.denominator * bFraction.denominator;
//分子
result.numerator = aFraction.numerator * bFraction.denominator - bFraction.numerator * aFraction.denominator;
//约分
[result reductionOfFraction];
return result;
}
//乘
+ (Fraction *)timeWitfAFraction:(Fraction *)aFraction bFraction:(Fraction *)bFraction {
Fraction *result = [[Fraction alloc] init];
result.denominator = aFraction.denominator * bFraction.denominator;
result.numerator = aFraction.numerator * bFraction.numerator;
[result reductionOfFraction];
return result;
}
//除
+ (Fraction *)divideWitfAFraction:(Fraction *)aFraction bFraction:(Fraction *)bFraction {
Fraction *result = [[Fraction alloc] init];
result.denominator = aFraction.denominator * bFraction.numerator;
result.numerator = aFraction.numerator * bFraction.denominator;
[result reductionOfFraction];
return result;
}
@end
实例变量:分子,分母
⽅法:初始化⽅方法(2个参数),便利构造器,约分,打印,加,减,乘,除。
main.m
#import
#import "Fraction.h"
int main(int argc, const char * argv[]) {
}
Fraction.h
#import
@interface Fraction : NSObject
{
}
//自定义初始化方法
- (id)initWithNumerator:(NSInteger)aNumerator;
- (id)initWithNumerator:(NSInteger)aNumerator denominator:(NSInteger)aDenominator;
//便利构造器
+ (Fraction *)fractionWithNumerator:(NSInteger)aNumerator denominator:(NSInteger)aDenominator;
//setter和getter
- (void)setNumerator:(NSInteger)aNumerator;
- (NSInteger)numerator;
- (void)setDenominator:(NSInteger)aDenominator;
- (NSInteger)denominator;
//最大公约数:辗转相除法
- (NSInteger)greatestCommonDivisorWit
//约分
- (void)reductionOfFraction;
//打印
- (void)print;
//加
+ (Fraction *)addWitfAFraction:(Fraction *)aFraction bFraction:(Fraction *)bFraction;
//减
+ (Fraction *)minusWitfAFraction:(Fraction *)aFraction bFraction:(Fraction *)bFraction;
//乘
+ (Fraction *)timeWitfAFraction:(Fraction *)aFraction bFraction:(Fraction *)bFraction;
//除
+ (Fraction *)divideWitfAFraction:(Fraction *)aFraction bFraction:(Fraction *)bFraction;
@end
Fraction.m
#import "Fraction.h"
@implementation Fraction
- (id)init {
}
- (id)initWithNumerator:(NSInteger)aNumerator {
}
- (id)initWithNumerator:(NSInteger)aNumerator denominator:(NSInteger)aDenominator {
}
+ (Fraction *)fractionWithNumerator:(NSInteger)aNumerator denominator:(NSInteger)aDenominator {
}
- (void)setNumerator:(NSInteger)aNumerator {
}
- (NSInteger)numerator {
}
- (void)setDenominator:(NSInteger)aDenominator {
}
- (NSInteger)denominator {
}
//最大公约数:辗转相除法
- (NSInteger)greatestCommonDivisorWit
}
//约分
- (void)reductionOfFraction {
}
//打印
- (void)print {
}
//加
+ (Fraction *)addWitfAFraction:(Fraction *)aFraction bFraction:(Fraction *)bFraction {
}
//减
+ (Fraction *)minusWitfAFraction:(Fraction *)aFraction bFraction:(Fraction *)bFraction {
}
//乘
+ (Fraction *)timeWitfAFraction:(Fraction *)aFraction bFraction:(Fraction *)bFraction {
}
//除
+ (Fraction *)divideWitfAFraction:(Fraction *)aFraction bFraction:(Fraction *)bFraction {
}
@end