4/07/2010

참고사항..objective c..

#import <Foundation/Foundation.h>

@interface Fraction : NSObject
{
int numerator;
int denominator;
}
@property int numerator,denominator;
- (void)print;
- (void)setTo:(int)n :(int)d;
- (double)convertToNum;
- (Fraction *)add:(Fraction *)f;
- (Fraction *)subtract:(Fraction *)f;
- (Fraction *)multiply:(Fraction *)f;
- (Fraction *)divide:(Fraction *)f;
- (void)reduce;
@end

@implementation Fraction
@synthesize numerator,denominator;
- (void)setTo:(int)n :(int)d
{
numerator = n;
denominator = d;
}
- (void)print
{
NSLog(@"%i/%i", numerator,denominator);
}

- (double)convertToNum
{
if(denominator!=0)
{
return (double) numerator/denominator;
}else{
return 1.0;
}
}
- (Fraction *)add:(Fraction *)f
{
Fraction *rFraction = [[Fraction alloc] init];
[rFraction setTo: ((numerator*f.denominator)+(f.numerator*denominator))
:denominator*f.denominator];
[rFraction reduce];
return rFraction;
}
- (Fraction *)subtract:(Fraction *)f
{
Fraction *rFraction = [[Fraction alloc] init];
[rFraction setTo: ((numerator*f.denominator)-(f.numerator*denominator))
:denominator*f.denominator];
[rFraction reduce];
return rFraction;
}

- (Fraction *)multiply:(Fraction *)f
{
Fraction *rFraction = [[Fraction alloc] init];
[rFraction setTo: numerator*f.numerator
:denominator*f.denominator];
[rFraction reduce];
return rFraction;
}

- (Fraction *)divide:(Fraction *)f
{
Fraction *rFraction = [[Fraction alloc] init];
[rFraction setTo: numerator*f.denominator
:denominator*f.numerator];
[rFraction reduce];
return rFraction;
}

- (void)reduce
{
int n = numerator;
int d = denominator;
int temp;
while(d!=0){
temp = n % d;
n = d;
d = temp;
}
numerator /= n;
denominator /= n;
}
@end
int main (int argc, char *argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
Fraction  *aFraction = [[Fraction alloc] init];
Fraction  *bFraction = [[Fraction alloc] init];
[aFraction setTo:1 :2];
[bFraction setTo:1 :4];
[[aFraction divide: bFraction] print];
[[aFraction multiply: bFraction] print];
[[aFraction subtract: bFraction] print];
[[aFraction add: bFraction] print];
[aFraction release];
[bFraction release];
[pool drain];
return 0;
}

펌-코드랩(codelab)-문제발생시 삭제함.