g***j 发帖数: 1275 | 1 1345+*612+/-
如何计算这个
但是,如果这输入是一个字符串的话,怎么判断,是13 还是3啊, |
s********u 发帖数: 1109 | 2 如果是prefix,用递归方便一点;如果是postfix,用stack方便。
字符串输入进来转换成数字的话,可以用sscanf,个人喜欢用stringstream。 |
g***j 发帖数: 1275 | 3 那你这个扫描的,难道不是1345?
【在 s********u 的大作中提到】 : 如果是prefix,用递归方便一点;如果是postfix,用stack方便。 : 字符串输入进来转换成数字的话,可以用sscanf,个人喜欢用stringstream。
|
s********u 发帖数: 1109 | 4 为了保险起见,我自己试了一下:
stringstream stream;
stream.str("3745+38");
int num;
char op;
stream>>num;
cout << num << endl;
stream>>op;
cout<< op <
stream>>num;
cout<
确认是可以分开3745,+, 38。就算没有空格也是如此。
何况应该后缀表达式数字之间至少是有空格隔开的,否则怎么表示23+3.
在这种情况下,stream>>str,然后再用string创建stream转换成数字或者直接取str[0
]操作符就行了。
【在 g***j 的大作中提到】 : 那你这个扫描的,难道不是1345?
|
g***j 发帖数: 1275 | 5 3745+38-
你得出来啥?
是 3 + 745 - 38 还是 37 + 45 - 38 还是 374 + 5 - 38
【在 s********u 的大作中提到】 : 为了保险起见,我自己试了一下: : stringstream stream; : stream.str("3745+38"); : : int num; : char op; : stream>>num; : cout << num << endl; : stream>>op; : cout<< op <
|
s********u 发帖数: 1109 | 6 post fix不能把数字放在一起的,必须是用空格隔开。
我前面不是说了么,如果不隔开,就连12+3都没法表示,因为123+有歧义。
所以一般题目里会表示成 “12 3 +"
【在 g***j 的大作中提到】 : 3745+38- : 你得出来啥? : 是 3 + 745 - 38 还是 37 + 45 - 38 还是 374 + 5 - 38
|