Created
January 30, 2013 02:09
-
-
Save b-adams/4669982 to your computer and use it in GitHub Desktop.
Calculator (just entering numbers) class for Wells CS132
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#import <Foundation/Foundation.h> | |
FOUNDATION_EXPORT const char CLEAR_SCREEN_KEY; //The FOUNDATION_EXPORT part makes this truly global - available to all other files. | |
@interface Calculator : NSObject | |
@property (assign) int numberOnScreen; | |
-(void) clearScreen; | |
-(void) pressKey:(char) input; | |
@end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#import "Calculator.h" | |
const char CLEAR_SCREEN_KEY = 'x'; | |
@implementation Calculator | |
@synthesize numberOnScreen; | |
- (id)init | |
{ | |
self = [super init]; | |
if (self) { | |
[self clearScreen]; | |
} | |
return self; | |
} | |
-(NSString*) description | |
{ | |
return [NSString stringWithFormat:@"Calculator with %d on screen.", [self numberOnScreen]]; | |
} | |
-(void) clearScreen | |
{ | |
NSLog(@"Clearing screen of <%@> at memory location [%p] upon receiving message {%@}", | |
self, self, NSStringFromSelector(_cmd)); | |
[self setNumberOnScreen:0]; | |
} | |
-(void) pressKey:(char)input | |
{ | |
int oldNumberOnScreen; | |
int newNumberOnScreen; | |
int numberEntered; | |
if(input == CLEAR_SCREEN_KEY) | |
{ //Clear the screen | |
[self clearScreen]; | |
} | |
else | |
{ //Must be a digit | |
//First, convert user input character into a number | |
if(input < '0' || input > '9') | |
numberEntered=NAN; //Not a digit! | |
else | |
numberEntered = (input - '0'); //Tricksy conversion | |
//Second, update number on screen | |
oldNumberOnScreen = [self numberOnScreen]; | |
newNumberOnScreen = 10*oldNumberOnScreen + numberEntered; | |
[self setNumberOnScreen:newNumberOnScreen]; | |
} | |
} | |
@end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#import <Foundation/Foundation.h> | |
#import "Calculator.h" | |
int main(int argc, const char * argv[]) | |
{ | |
@autoreleasepool { | |
char userInput; | |
Calculator* casioCFX9850g = nil; | |
casioCFX9850g = [[Calculator alloc] init]; | |
while(YES) | |
{ | |
printf("Please press a key:"); | |
scanf(" %c", &userInput); | |
[casioCFX9850g pressKey:userInput]; | |
printf("You pressed %c. The number on screen is now %d\n", | |
userInput, [casioCFX9850g numberOnScreen]); | |
} | |
} | |
return 0; | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment