创建一个Fraction类(分数)实现分数的加减乘除,比较大小、约分等方法。 要求:为类添加属性
2014-08-13 23:32
826 查看
Fraction.h声明文件
#import <Foundation/Foundation.h>
@interface Fraction : NSObject
@property (nonatomic) NSInteger member;//分子
@property (nonatomic) NSInteger denominator;//分母
//初始化
- (id)initWitnMember:(NSInteger)member denominator:(NSInteger)denominator;
//最大公约数
- (NSInteger)gcdNumber:(NSInteger)member denominator:(NSInteger)denominator;
//相加
- (Fraction *)sumNumber:(Fraction *)fraction;
//相减
- (Fraction *)reduceNumber:(Fraction *)fraction;
//相乘
- (Fraction *)rideNumber:(Fraction *)fraction;
//相除
- (Fraction *)divideNumber:(Fraction *)fraction;
//比较大小
- (NSComparisonResult)resultCompare:(Fraction *)fraction;
//约分
- (void)simplifyNumber;
@end
Fraction.m实现文件
#import "Fraction.h"
@implementation Fraction
//初始化
- (id)initWitnMember:(NSInteger)member denominator:(NSInteger)denominator{
self = [super init];
if(self != nil){
self.member = member;
self.denominator = denominator;
}
return self;
}
//最大公约数
- (NSInteger)gcdNumber:(NSInteger)member denominator:(NSInteger)denominator{
NSInteger a = member % denominator;
while (a != 0) {
member = denominator;
denominator = a;
a = member % denominator;
}
return denominator;
}
//约分
- (void)simplifyNumber{
NSInteger divisor = [self gcdNumber:self.member denominator:self.denominator];
self.member/= divisor;
self.denominator/= divisor;
}
//相加
- (Fraction *)sumNumber:(Fraction *)fraction{
Fraction *fr = [[Fraction alloc] init];
fr.member = [self member]*[fraction denominator] + [fraction member]*[self denominator];
fr.denominator = [fraction denominator]*[self denominator];
[fr simplifyNumber];
return fr;
}
//相减
- (Fraction *)reduceNumber:(Fraction *)fraction{
Fraction *fr = [[Fraction alloc] init];
fr.member = self.member*fraction.denominator - fraction.member*self.denominator;
fr.denominator = self. denominator*fraction.denominator;
[fr simplifyNumber];
return fr;
}
//相乘
- (Fraction *)rideNumber:(Fraction *)fraction{
Fraction *fr = [[Fraction alloc] init];
fr.member = [self member]*[fraction member];
fr.denominator = [self denominator]*[fraction denominator];
[fr simplifyNumber];
return fr;
}
//相除
- (Fraction *)divideNumber:(Fraction *)fraction{
Fraction *fr = [[Fraction alloc] init];
fr.member = [self member]*[fraction denominator];
fr.denominator = [self denominator]*[fraction member];
[fr simplifyNumber];
return fr;
}
//比较大小
- (NSComparisonResult)resultCompar:(Fraction *)fraction{
NSInteger sum1 = [self member]*[fraction denominator];
NSInteger sum2 = [fraction member]*[self denominator];
NSInteger sum = sum1 - sum2;
if (sum > 0) {
return NSOrderedSame;
}else if (sum == 0){
return NSOrderedSame;
}else{
return NSOrderedAscending;
}
}
@end
主函数调用
#import <Foundation/Foundation.h>
#import "Fraction.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
Fraction *fr1 = [[Fraction alloc] initWitnMember:1 denominator:3];
Fraction *fr2 = [[Fraction alloc] initWitnMember:3 denominator:5];
//NSArray *arr = [[NSArray alloc] initWithObjects:fr1,fr2, nil];
//相加
Fraction *fr = [fr1 sumNumber:fr2];
NSLog(@"%ld/%ld", fr.member, fr.denominator);
//相减
Fraction *fra = [fr1 reduceNumber:fr2];
NSLog(@"%ld/%ld", fra.member,fra.denominator);
//相乘
Fraction *fra1 = [fr1 rideNumber:fr2];
NSLog(@"%ld/%ld", fra1.member,fra1.denominator);
//相除
Fraction *fra2 = [fr1 divideNumber:fr2];
NSLog(@"%ld/%ld", fra2.member,fra2.denominator);
}
return 0;
}
#import <Foundation/Foundation.h>
@interface Fraction : NSObject
@property (nonatomic) NSInteger member;//分子
@property (nonatomic) NSInteger denominator;//分母
//初始化
- (id)initWitnMember:(NSInteger)member denominator:(NSInteger)denominator;
//最大公约数
- (NSInteger)gcdNumber:(NSInteger)member denominator:(NSInteger)denominator;
//相加
- (Fraction *)sumNumber:(Fraction *)fraction;
//相减
- (Fraction *)reduceNumber:(Fraction *)fraction;
//相乘
- (Fraction *)rideNumber:(Fraction *)fraction;
//相除
- (Fraction *)divideNumber:(Fraction *)fraction;
//比较大小
- (NSComparisonResult)resultCompare:(Fraction *)fraction;
//约分
- (void)simplifyNumber;
@end
Fraction.m实现文件
#import "Fraction.h"
@implementation Fraction
//初始化
- (id)initWitnMember:(NSInteger)member denominator:(NSInteger)denominator{
self = [super init];
if(self != nil){
self.member = member;
self.denominator = denominator;
}
return self;
}
//最大公约数
- (NSInteger)gcdNumber:(NSInteger)member denominator:(NSInteger)denominator{
NSInteger a = member % denominator;
while (a != 0) {
member = denominator;
denominator = a;
a = member % denominator;
}
return denominator;
}
//约分
- (void)simplifyNumber{
NSInteger divisor = [self gcdNumber:self.member denominator:self.denominator];
self.member/= divisor;
self.denominator/= divisor;
}
//相加
- (Fraction *)sumNumber:(Fraction *)fraction{
Fraction *fr = [[Fraction alloc] init];
fr.member = [self member]*[fraction denominator] + [fraction member]*[self denominator];
fr.denominator = [fraction denominator]*[self denominator];
[fr simplifyNumber];
return fr;
}
//相减
- (Fraction *)reduceNumber:(Fraction *)fraction{
Fraction *fr = [[Fraction alloc] init];
fr.member = self.member*fraction.denominator - fraction.member*self.denominator;
fr.denominator = self. denominator*fraction.denominator;
[fr simplifyNumber];
return fr;
}
//相乘
- (Fraction *)rideNumber:(Fraction *)fraction{
Fraction *fr = [[Fraction alloc] init];
fr.member = [self member]*[fraction member];
fr.denominator = [self denominator]*[fraction denominator];
[fr simplifyNumber];
return fr;
}
//相除
- (Fraction *)divideNumber:(Fraction *)fraction{
Fraction *fr = [[Fraction alloc] init];
fr.member = [self member]*[fraction denominator];
fr.denominator = [self denominator]*[fraction member];
[fr simplifyNumber];
return fr;
}
//比较大小
- (NSComparisonResult)resultCompar:(Fraction *)fraction{
NSInteger sum1 = [self member]*[fraction denominator];
NSInteger sum2 = [fraction member]*[self denominator];
NSInteger sum = sum1 - sum2;
if (sum > 0) {
return NSOrderedSame;
}else if (sum == 0){
return NSOrderedSame;
}else{
return NSOrderedAscending;
}
}
@end
主函数调用
#import <Foundation/Foundation.h>
#import "Fraction.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
Fraction *fr1 = [[Fraction alloc] initWitnMember:1 denominator:3];
Fraction *fr2 = [[Fraction alloc] initWitnMember:3 denominator:5];
//NSArray *arr = [[NSArray alloc] initWithObjects:fr1,fr2, nil];
//相加
Fraction *fr = [fr1 sumNumber:fr2];
NSLog(@"%ld/%ld", fr.member, fr.denominator);
//相减
Fraction *fra = [fr1 reduceNumber:fr2];
NSLog(@"%ld/%ld", fra.member,fra.denominator);
//相乘
Fraction *fra1 = [fr1 rideNumber:fr2];
NSLog(@"%ld/%ld", fra1.member,fra1.denominator);
//相除
Fraction *fra2 = [fr1 divideNumber:fr2];
NSLog(@"%ld/%ld", fra2.member,fra2.denominator);
}
return 0;
}
相关文章推荐
- OC 创建一个Fraction类(分数)实现分数的加减乘除,比较大小、约分等方法。 要求:为类添加属性
- 创建一个Fraction类(分数)实现分数的加减乘除,比较大小、约分等方法。要求:为类添加属性
- 创建一个Fraction类(分数)实现分数的加减乘除,比较大小、约分等方法.要求:为类添加属性
- 创建一个Fraction类(分数)实现分数的加减乘除,比较大小、约分等方法。
- 如何通过创建一个Fraction类(分数)来实现分数的加减乘除,比较大小、约分等方法(方法的实现部分)
- 创建一个Fraction类(分数)实现分数的加减乘除,比较大小、约分等方法。
- Fraction类(分数)实现分数的加减乘除, ⽐比较⼤大⼩小、约分等⽅方法
- 这是一个关于XML文档的操作管理器XMLHelper类,类中包括XML文档的创建,文档节点和属性的读取,添加,修改,删除的方法功能的实现
- 分数的加减乘除 约分 以及比较大小
- Javascript 创建类并动态添加属性及方法的简单实现
- 创建一个分数类,实现分数的加减乘除
- 5.编写一个程序,有两个类,其中类MAX中具有两个方法,方法名都是max,一个方法能够比较两个数的大小,另外一个方法能够比较三个数的大小。在另外一个类中创建对象,调用这两个方法,分别输出两组数:2、6
- 编写一个Book类,该类至少有name和price两个属性。该类要实现Comarable接口,在接口的compareTo()方法中规定两个Book类实例的大小关系为二者的price属性的大小关系。
- 编写一个Book类,该类至少有name和price两个属性。该类要实现Comparable接口,在接口的compareTo()方法中规定两个Book类实例的大小关系为二者的price属性的大小关系。在
- c++一个实现分数大小比较和各种运算的类
- c#打包文件解压缩 C#中使用委托、接口、匿名方法、泛型委托实现加减乘除算法 一个简单例子理解C#的协变和逆变 对于过长字符串的大小比对
- 给一个对象添加属性和方法的三种方案简单比较
- 一个简易的8位计算器,可实现加减乘除,testbench写的较为简易,代码覆盖率有点低。方法比较笨,综合之后的频率不高。
- lesson 8: 编写一个Book类,该类至少有name和price两个属性。该类要实现Comparable接口,在接口的compareTo()方法中规定两个Book类实例的大小关系为二者的pric
- 编写一个Book类,该类至少有name和price两个属性。该类要实现Comparable接口,在接口的compareTo()方法中规定两个Book类实例的大小关系为二者的price属性的大小关系。在