#import <Foundation/Foundation.h>
@interface Accumulator : NSObject
{
double accumulated;
}
-(void) add: (double) value;
-(void) subtract: (double) value;
-(void) multiply: (double) value;
-(void) divide: (double) value;
-(void) setAccumulator: (double) value;
-(double) accumulated;
@end
@implementation Accumulator
-(void) add: (double) value
{
accumulated += value;
}
-(void) subtract: (double) value
{
accumulated -= value;
}
-(void) multiply: (double) value
{
accumulated *= value;
}
-(void) divide: (double) value
{
accumulated /= value;
}
-(void) setAccumulator: (double) value
{
accumulated = value;
}
-(double) accumulated
{
return accumulated;
}
@end
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
Accumulator *myAccumulator = [[Accumulator alloc]init];
char op;
double number;
scanf("%lf %c", &number, &op);
while (op != 'E') {
scanf("%lf %c", &number, &op);
switch (op) {
case '+':
[myAccumulator add: number];
break;
case '-':
[myAccumulator subtract: number];
break;
case 'x':
case 'X':
case '*':
[myAccumulator multiply: number];
break;
case '/':
if (number == 0)
NSLog(@"Can not divide by zero.");
else
[myAccumulator divide: number];
break;
case 's':
case 'S':
[myAccumulator setAccumulator: number];
break;
default:
NSLog(@"Unknown operator.");
break;
}
NSLog(@"= %g", [myAccumulator accumulated]);
}
NSLog(@"End of program");
[myAccumulator release];
[pool drain];
return 0;
}
Thoughts on where I could improve?