컴퓨터/아이폰

계산기 소스

k_ben 2012. 1. 18. 11:18

//  Calculator.h

#import <Foundation/NSObject.h>

// MVC : M (Model)


@interface Calculator : NSObject {

int su;

int value;

char bubo;

}

@property int su, value;

@property char bubo;

@end


//

//  Calculator.m


#import "Calculator.h"


@implementation Calculator

@synthesize su, value, bubo;

@end


//

//  CalculatorManager.h


#import <Foundation/NSObject.h>


@class Calculator;

@interface CalculatorManager : NSObject {


Calculator *calc;

int resultInt;

float resultFloat;

}


-(id) init;

-(void) dealloc;

-(void) setSu:(int)su andValue:(int)value;

-(void) performOperation:(char)buho;

-(void) disp;

@end



//

//  CalculatorManager.m


#import "CalculatorManager.h"

#import "Calculator.h"


@implementation CalculatorManager


-(id) init{

self = [super init];

if(self){

calc =[[Calculator allocinit];

}

return self;

}


-(void) setSu:(int)su andValue:(int)value // 10 20

{

[calc setSu:su];

[calc setValue:value];

}


-(void) performOperation:(char)buho // +

{

[calc setBubo:buho];

switch ([calc bubo]) { // calc.buho

case '+':

resultInt = [calc su] + [calc value];

break;

case '-':

resultInt = [calc su] - [calc value];

break;

case '*':

resultInt = calc.su * calc.value;

break;

case '/':

resultFloat = (float)[calc su] / [calc value];

break;

}

}


-(void) disp

{

if(calc.bubo == '/'){

if (calc.value == 0) {

NSLog(@"0으로 나눌수 없습니다.");

}else {

NSLog(@"%i %c %i"calc.sucalc.bubocalc.value);

NSLog(@"연산결과 : %i"resultFloat);

}

}else {

NSLog(@"%i %c %i"calc.sucalc.bubocalc.value);

NSLog(@"연산결과 : %i"resultInt);

}


}


-(void) dealloc{

[calc release];

[super dealloc];

}


@end


///////////////////////




#import "CalculatorManager.h"


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

    NSAutoreleasePool * pool = [[NSAutoreleasePool allocinit];


int su, value;

char buho;

NSLog(@"input su:");

scanf("%d", &su);

NSLog(@"input buho:");

scanf("%*c %c", &buho);

NSLog(@"input value:");

scanf("%d", &value);

CalculatorManager *manager = [[CalculatorManager allocinit];

[manager setSu:su andValue:value];

[manager performOperation:buho];

[manager disp];

[manager release];  

    [pool drain];

    return 0;

}



2011-05-26 11:42:54.436 test56[485:a0f] input su:

10

2011-05-26 11:42:56.429 test56[485:a0f] input buho:

+

2011-05-26 11:42:57.253 test56[485:a0f] input value:

20

2011-05-26 11:42:57.854 test56[485:a0f] 10 + 20

2011-05-26 11:42:57.855 test56[485:a0f] 연산결과 : 30

[출처] test56 [계산기]|작성자 바우만