2012年2月1日 星期三

「學會Objective-C的24堂課」Ch13-2,3習題解答

#import <Foundation/Foundation.h>

// **********************ch13-hw2&3**************************
//原題目有誤,改為1/4+3/6=18/24
@interface Fraction : NSObject {
    int numerator,denominator;
}
-(void) setNum: (int) a;
-(void) setDen: (int) b;
-(int) getNum;
-(int) getDen;
-(void) print;
@end

@implementation Fraction
//set numerator
-(void) setNum:(int)a
{
    numerator=a;
}
//set Denominator
-(void) setDen:(int)b
{
    denominator=b;
}
//get denominator
-(int) getDen
{
    return denominator;
}
//get numerator
-(int) getNum
{
    return numerator;
}

//print fraction
-(void)print
{
    NSLog(@"分數是%i/%i", numerator, denominator);
}
@end

int main (int argc, const char * argv[])
{
    
    @autoreleasepool {
        
        Fraction *fraction1 =[[Fraction alloc] init];
        Fraction *fraction2 =[[Fraction alloc] init];
        [fraction1 setNum:1];
        [fraction1 setDen:4];
        [fraction1 print];
        [fraction2 setNum:3];
        [fraction2 setDen:6];
        [fraction2 print];       
        int a1, a2, b1, b2,c1,c2;
        a1=[fraction1 getNum];
        a2=[fraction1 getDen];
        b1=[fraction2 getNum];
        b2=[fraction2 getDen];
        c1=a1*b2+a2*b1;
        c2=a2*b2;
        int u=c2, v=c1, temp;
        while (v!=0) {
            temp=u%v;
            u=v;
            v=temp;
        }
        c1/=u;
        c2/=u;
        printf("分數和是:%i/%i", c1, c2);
    }
    return 0;
}

2 則留言:

  1. 建議可以把分數相加&分數約分設定為兩個類別方法
    以利後續程式延展或維護

    同樣也是初學者留~

    回覆刪除