学习Objective-C程序设计 第七章练习

本文通过Objective-C编程语言实例,详细介绍了如何定义、初始化、操作分数类,并展示了分数加法运算的过程。

#import <Foundation/Foundation.h>
#import "Fraction.h"

int main(int argc, const char * argv[])
{

    @autoreleasepool {
        
        // insert code here...
        Fraction *myFraction=[[Fraction alloc]init];
        [myFraction setNumerator:1];
        [myFraction setDenominator:3];
        
        //显示分数
        
        NSLog(@"The valuse of myFraction is:");
        [myFraction print];
        
        Fraction *aFraction=[[Fraction alloc]init];
        Fraction *bFraction=[[Fraction alloc]init];
        Fraction *resultFraction;
        
        [aFraction  setTo:1 over:4];
        [bFraction  setTo:1 over:2];
        [aFraction print];
        NSLog(@"+");
        [bFraction print];
        NSLog(@"=");
        resultFraction=[aFraction add:bFraction];
        [resultFraction print];
                
    }
    return 0;
}

第七章是关于 类的分离接口与实现文件 全章用一个处理分数的例子来讲解,今天练习了,将供码岾出来。

首先是:Fraction.h



#import <Foundation/Foundation.h>

@interface Fraction : NSObject
@property int numerator,denominator;
-(void) print;

/*
-(void) setNumerator:(int)n;
-(void) setDenominator:(int)d;
-(int) numerator;
-(int) denominator;
*/

-(void) setTo:(int)n  over:(int)d;
-(Fraction *) add:(Fraction *)f;
-(void) reduce;

-(double) convertToNum;

@end


接下来是Fraction.m

#import "Fraction.h"

@implementation Fraction

/************不要再声明实便变量
{
    int numerator;
    int denominator;
}
**********************************/

@synthesize numerator,denominator;



-(void) print
{
    NSLog(@"%i/%i",numerator,denominator);
    //NSLog(@"分子%i",numerator);
    
    
}

/***********************

-(void) setNumerator:(int)n
{
    numerator=n;
}

-(void) setDenominator:(int)d
{
    denominator=d;
}

-(int)numerator
{
    return numerator;
}

-(int)denominator
{
    return denominator;
}

*************************/

-(void) setTo:(int)n  over:(int)d
{
    numerator=n;
    denominator=d;
}

-(Fraction *) add:(Fraction *)f
{
    //两个分数相加:a/b+c/d=((a*d)+(b*c))/(b*d)
    Fraction *result=[[Fraction alloc]init];
    result.numerator=numerator*f.denominator+denominator*f.numerator;
    result.denominator=denominator*f.denominator;
    [result reduce];
    return result;

}

-(void) reduce
{
    int u=numerator;
    int v=denominator;
    int temp;
    
    while (v!=0) {
        temp=u%v;
        u=v;
        v=temp;
    }
    numerator/=u;
    denominator/=u;
}


-(double)convertToNum
{
    if (denominator!=0) {
        return (double) numerator/denominator;
    }
    else
        return NAN;
}

@end
cv


最后是测试main.m

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值