/*
题目描述:读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。
输入:测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。
输出:对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。
样例输入:
1 + 2
4 + 2 * 5 - 7 / 11
0
样例输出:
3.00
13.36
*/
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <cctype>
#include <stack>
#include <cstdlib>
#include <map>
#include <utility>using namespace std;int main()
{string str;map<char, int> opPriority;double a, b;opPriority.insert(pair<char, int>('+', 0));opPriority.insert(pair<char, int>('-', 0));opPriority.insert(pair<char, int>('*', 1));opPriority.insert(pair<char, int>('/', 1));#ifndef ONLINE_JUDGEifstream cin("d:\\OJ\\uva_in.txt");
#endif // ONLINE_JUDGEwhile (getline(cin, str)) {if (str == "0")break;istringstream line(str);string tmp;stack<double> s;stack<char> op;while (line >> tmp) {if (isdigit(tmp[0])) {s.push(atof(tmp.c_str()));} else {if (op.empty())op.push(tmp[0]);else {char ch = tmp[0];char stackch = op.top();while (!op.empty() && opPriority[ch] <= opPriority[stackch]) {op.pop();if (stackch == '+') {a = s.top();s.pop();b = s.top();s.pop();a = a + b;s.push(a);} else if (stackch == '-') {a = s.top();s.pop();b = s.top();s.pop();a = b - a;//cout << "a:" << a <<endl;s.push(a);} else if (stackch == '*') {a = s.top();s.pop();b = s.top();s.pop();a = a * b;s.push(a);} else if (stackch == '/') {a = s.top();s.pop();b = s.top();s.pop();a = b / a;s.push(a);}if (!op.empty())stackch = op.top();}op.push(ch);}}}while (!op.empty()) {char stackch = op.top();op.pop();if (stackch == '+') {a = s.top();s.pop();b = s.top();s.pop();a = a + b;s.push(a);} else if (stackch == '-') {a = s.top();s.pop();b = s.top();s.pop();a = b - a;s.push(a);} else if (stackch == '*') {a = s.top();s.pop();b = s.top();s.pop();a = a * b;s.push(a);} else if (stackch == '/') {a = s.top();s.pop();b = s.top();s.pop();a = b / a;s.push(a);}}double ans = s.top();s.pop();cout.precision(2);cout << fixed << ans <<endl;}return 0;
}

题目1019:简单计算器相关推荐

  1. 九度OJ 1019 简单计算器

    题目描述: 读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值. 输入: 测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔 ...

  2. 简单计算器 (关于栈的一种应用)

    题目:简单计算器 读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值. Input 测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一 ...

  3. 微型计算机的计算器,微机简单计算器程序设计

    <微机简单计算器程序设计>由会员分享,可在线阅读,更多相关<微机简单计算器程序设计(15页珍藏版)>请在人人文库网上搜索. 1.课程设计(大作业)报告课程名称:微机原理与汇编语 ...

  4. c语言课程设计计算器软件,C语言课程设计简单计算器程序.docx

    课程设计名称: C 语言课程设计课程设计题目: 简单计算器程序 目录 第1章 需求分析 0 设计要求 0 任务 0 第2章 总体设计 1 TOC \o "1-5" \h \z \o ...

  5. 简易计算机课程设计总结,C语言课程设计报告简单计算器程序

    C语言课程设计报告简单计算器程序 (26页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 24.9 积分 .课程设计名称:C语言课程设计课程设计题目:简单 ...

  6. 九度OJ题目1019:简单计算器

    题目1019:简单计算器 时间限制:1 秒 内存限制:32 兆 特殊判题:否 题目描述: 读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值. 输入: 测试输入包含若干测试用 ...

  7. PTA 基础编程题目集 7-12 两个数的简单计算器 C语言

    PTA 基础编程题目集 7-12 两个数的简单计算器 C语言 本题要求编写一个简单计算器程序,可根据输入的运算符,对2个整数进行加.减.乘.除或求余运算.题目保证输入和输出均不超过整型范围. 输入格式 ...

  8. c语言对10求余不为7,【PTA | 基础编程题目集】7-12 两个数的简单计算器 (10分)

    本题要求编写一个简单计算器程序,可根据输入的运算符,对2个整数进行加.减.乘.除或求余运算.题目保证输入和输出均不超过整型范围. 输入格式: 输入在一行中依次输入操作数1.运算符.操作数2,其间以1个 ...

  9. 【PTA题目解答】习题6-7 简单计算器 (20 分)模拟简单运算器的工作。

    习题6-7 简单计算器 (20 分)模拟简单运算器的工作. 习题6-7 简单计算器 (20 分)模拟简单运算器的工作.假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从 ...

  10. 7-12 两个数的简单计算器 (C语言)

    7-12 两个数的简单计算器 (10 分)本题要求编写一个简单计算器程序,可根据输入的运算符,对2个整数进行加.减.乘.除或求余运算.题目保证输入和输出均不超过整型范围. 输入格式: 输入在一行中依次 ...

最新文章

  1. 百度云加速 ajax,使用百度云加速后网站打开速度慢、广告不显示的解决方法
  2. 【node】express中mysql的基本用法、连接池的使用、事务的回滚
  3. Objective-C字符串处理的函数
  4. 'webpack-dev-server' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
  5. P1966 火柴排队
  6. 使用powershell批量导入AD用户
  7. 【讲解】1030 Travel Plan (30 分)【DFS】_41行代码Ac
  8. 直接插入排序比较次数_程序员必须要会的直接插入排序算法
  9. 串口循环缓存区 简单 免初始化 不用堆、指针、分段memcpy
  10. 在线UML绘图完全免费!
  11. 15个常用excel函数公式_工作中常用的excel函数公式大全,拿来即用!
  12. php 伪静态规则,常用伪静态规则(for Nginx)
  13. 四咪唑基四苯乙烯,四苯基吡嗪(tetraphenylpyrazine,TPP)
  14. 用python做餐厅点餐系统
  15. 创意美食、创意生活,今天我要把创意吃进肚子——邻家壹号创意之旅
  16. [题解][CF-1292C]Xenon‘s Attack on the Gangs
  17. 专门为某种用途设计的计算机称为,专门为某种用途而设计的计算机,称为( )计算机。...
  18. hibernate-validate如何校验controller+service+分组校验+自定义注解实现校验规则等
  19. ArcBlock 分享 | 冒志鸿:我为区块链技术落地“狂”!
  20. ODOO开发教程之图表

热门文章

  1. 如何成为一名专家级的开发人员
  2. linux 相对路径
  3. 动态多维数组在 VC 中的应用
  4. python入门只需20分钟-史上最详细python学习路线-从入门到精通,只需5个月时间...
  5. python有哪些方向、应该怎么学-大牛5大方向分析,完整Python 学习路线墙裂推荐!...
  6. 以python入门教程新世界-国外旅行也不忘学习Python:Python 操作列表001
  7. python爬虫教程书-Python 爬虫:把廖雪峰教程转换成 PDF 电子书
  8. 安装完python后怎么使用-安装anaconda后该怎么使用
  9. 怎么用python做表格-怎么用python画表格?
  10. python面向对象编程的优点-Python语言有哪些优点?