c++简单计算器

来源:互联网 发布:java获取request对象 编辑:程序博客网 时间:2024/06/05 14:10

问题 C: 某计算器的超电磁炮

时间限制: 1 Sec
内存限制: 64 MB
提交状态

题目描述

输入由非负整数、+、-、*、/、(、)组成的计算表达式,计算该表达式的值。

输入

每个输入文件中一组数据。

输入只有一行,不超过200个字符,其中不存在空格。数据保证表达式一定合法,且所有的整数都不小于0、不大于1024。中间结果保证不超过15位有效数位精度。

输出

输出一行,即表达式的值,结果精度保留小数点后2位。

样例输入

3+(12/(2*2+1))

样例输出

5.40

这道题其实是大一下学期学C++的时候上机的一道题,今晚练习赛写了一个钟多,没能AC,参考了一下以前的代码,感慨自己脑力确实不如从前了,也说不定自己四年从来都没强过。好吧,后天机试,学渣继续加油~

#include <iostream>#include <cstdio>#include <vector>#include <string>#include <cmath>#include <queue>#include <algorithm>#include <stack>#include <cstring>#include <set>#include <map>using namespace std;stack<char> op;stack<double> num;bool valid(char c) {    if (op.empty())        return false;    if (op.top() == '(')        return false;    if (c == '+' || c == '-')        return true;    if (c == '*' && (op.top() == '*' || op.top() == '/'))        return true;    if (c == '/' && (op.top() == '*' || op.top() == '/'))        return true;    else        return false;}void exe() {    double result;    double b = num.top();    num.pop();    double a = num.top();    num.pop();    char c = op.top();    op.pop();    switch (c) {    case '+':        result = a + b;        break;    case '-':        result = a - b;        break;    case '*':        result = a * b;        break;    case '/':        result = a / b;        break;    }    num.push(result);}int main() {string str;cin >> str;int temp = 0;for (int i = 0; i < str.length(); i++) {if (str[i] >= '0' && str[i] <= '9') {temp = temp * 10 + str[i] - '0';if (i + 1 == str.length() || !(str[i + 1] >= '0' && str[i + 1] <= '9')) {num.push(temp);temp = 0;}} else if (str[i] == '+' || str[i] == '-' || str[i] == '*' || str[i] == '/') {while (valid(str[i])) {exe();}op.push(str[i]);} else if (str[i] == '(') {op.push('(');} else if (str[i] == ')') {while (op.top() != '(') {exe();}op.pop();}}printf("%.2lf\n", num.top());return 0;}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 苹果屏幕ic坏了怎么办 苹果6手机触摸屏失灵怎么办 苹果5s屏幕黑了怎么办 乐视手机充电慢怎么办 苹果5s触摸屏失灵怎么办 苹果6出现闪屏怎么办 苹果4s没有卡槽怎么办 苹果se触屏失灵怎么办 苹果6s屏幕乱跳怎么办 6s屏幕触摸失灵怎么办 苹果6sp屏幕失灵怎么办 苹果6s屏幕不动怎么办 苹果6s卡住了怎么办 苹果6s经常卡屏怎么办 苹果6s点不动了怎么办 手机屏自己乱点怎么办 苹果手机摔开了怎么办 苹果屏幕摔开了怎么办 苹果手机6开不了机怎么办 苹果6开不开机怎么办 苹果6s开不开机怎么办 苹果6手机开不了机怎么办 苹果6s不能开机怎么办 苹果6p无法开机怎么办 苹果6s开不了机怎么办 苹果7屏幕划不动怎么办 苹果6老是卡机怎么办 苹果手机黑屏开不了机怎么办 苹果6plus掉水里了怎么办 苹果6黑屏开不了机怎么办 苹果手机6死机了怎么办 苹果7手机死机怎么办啊 苹果7突然死机了怎么办 苹果手机5s死机怎么办 苹果六s死机了怎么办 苹果4卡机了怎么办 苹果4锁死了怎么办啊 苹果4手机停机了怎么办 苹果4开不了机怎么办 苹果4开不了机怎么办啊 苹果7手机死机了怎么办