#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface Operation : NSObject
-(double) addOperation:(double)num1 :(double)num2;
-(double) subtractionOperation:(double)num1 :(double)num2;
-(double) multiplicationOperation:(double)num1 :(double)num2;
-(double) divisionOperation:(double)num1 :(double)num2;
@end
NS_ASSUME_NONNULL_END
@implementation Operation
-(double)addOperation:(double)num1 :(double)num2{
return num1+num2;
}
-(double)subtractionOperation:(double)num1 :(double)num2{
return num1-num2;
}
-(double)multiplicationOperation:(double)num1 :(double)num2{
return num1*num2;
}
-(double)divisionOperation:(double)num1 :(double)num2{
return num1/num2;
}
@end
NS_ASSUME_NONNULL_BEGIN
@interface Calculator : Operation
{
double _result;
}
-(void)setResult: (double)num1 :(double)num2 :(char)operation;
-(double)result;
@end
NS_ASSUME_NONNULL_END
@implementation Calculator
-(double)result{
return _result;
}
-(void)setResult:(double)num1 :(double)num2 :(char)operation{
switch (operation) {
case '+':
NSLog(@"两数的计算结果为:%lf",[self addOperation:num1 :num2]);
break;
case '-':
NSLog(@"两数的计算结果为:%lf",[self subtractionOperation:num1 :num2]);
break;
case '*':
NSLog(@"两数的计算结果为:%lf",[self multiplicationOperation:num1 :num2]);
break;
case '/':
NSLog(@"两数的计算结果为:%lf",[self divisionOperation:num1 :num2]);
break;
default:
break;
}
}
@end
int main(int argc, const char * argv[]) {
while (1) {
NSLog(@"输入第一个数:");
double a1;
rewind(stdin);
scanf("%lf",&a1);
NSLog(@"请选择计算类型:+、-、*、/");
char ans='a';
rewind(stdin);
scanf("%c",&ans);
NSLog(@"输入第二个数:");
double a2;
rewind(stdin);
scanf("%lf",&a2);
if(a1!=0&&a2!=0&&(ans!='+'||ans!='-'||ans!='*'||ans!='/')){
Calculator *ca=[Calculator new];
[ca setResult:a1 :a2 :ans];
[ca result];
NSLog(@"是否继续?y/n");
char end='a';
rewind(stdin);
scanf("%c",&end);
if(end!='y'){
NSLog(@"再见");
break;
}
}else{
NSLog(@"输入一误,重新输入");
}
}
return 0;
}