当前位置: 首页 > news >正文

北京网站制作公司兴田德润在那里运营和营销是一回事吗

北京网站制作公司兴田德润在那里,运营和营销是一回事吗,建设网站东莞,泰安市最新招聘信息描述 读入一个只包含 , -, *, / 的非负整数计算表达式,计算该表达式的值。 输入描述: 测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中…

描述

    读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。

输入描述:

    测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。

输出描述:

    对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。

样例输入:

输入:
1 + 2
4 + 2 * 5 - 7 / 11
0

样例输出:

输出:
3.00
13.36

思路:

①设立运算符和运算数两个栈,,一个用来存储运算符,另一个用来存储运算数。

②在运算符栈中放置一个特殊运算符#,其优先级最低。

③将表达式尾部添加一个特殊运算符$,其优先级次低。

④从左至右依次遍历字符串,若遍历到运算符,则将其与运算符栈的栈顶元素进行比较,若运算符栈的栈顶的优先级小于该运算符,则将该运算符压入运算符栈;若运算符栈的栈顶的优先级大于该运算符,则弹出该栈顶运算符,从运算数栈中依次弹出运算数,完成弹出运算符对应的运算后,再将该结果压入运算数栈。

⑤若遍历到表达式中的运算数,则直接压入运算数栈。

⑥若运算符栈中仅剩两个特殊运算符#和$,则表达式运算结束,此时运算数栈中唯一的数字就是表达式的值。

源代码:

#include<iostream>
#include<stack>
#include<map>
#include<string>
using namespace std;//例题5.6 KY129 简单计算器
//考虑到需要计算的数字可能不止一位,就从检测到数字的索引开始,一直到检测不到数字的索引,这之间的就是一整个数字
double getNum(string str, int& index) {double res = 0;while (isdigit(str[index])) {res = res * 10 + str[index] - '0';index++;}return res;
}//对两个数字进行运算
double cal(double x, double y, char op) {if (op == '+') {return x + y;}else if (op == '-') {return x - y;}else if (op == '*') {return x * y;}else if (op == '/') {return x / y;}return 0;
}int main()
{//存储多个运算符号的优先级map<char, int> maps = { {'#',0},{'$',1},{'-',2},{'+',2}, {'/',3},{'*',3} };string s;//因为需要运算的式子可能不止一条,这里用while循环//因为输入的式子中可能包含多个空格,直接用getline(cin, s)回去整行的字符串,并赋值给swhile (getline(cin, s)) {if (s == "0") { //结束条件break;}stack<char> symbol;  // 存储运算符的栈stack<double> number; // 存储操作数的栈int index = 0; //对字符串遍历的索引symbol.push('#'); //把'#'压入符号中,优先级最低s = s + '$'; //先把'$'放到要处理的公式字符串的末尾,优先级次低while (index < s.size()) { //遍历公式中的每一个字符//获取该数字索引开始的整个数字,并压入栈number中if (isdigit(s[index])) { number.push(getNum(s, index));}//遇到公式中的空格直接跳过else if (s[index] == ' ') {index++;}else {//若运算符栈的栈顶的优先级小于遍历遇到的当前的运算符,则将该运算符压入运算符栈if (maps[s[index]] > maps[symbol.top()]) {symbol.push(s[index]);index++;}//否则,弹出该栈顶运算符,从运算数栈中依次弹出运算数,完成弹出运算符对应的运算后,再将该结果压入运算数栈。else {double x = number.top();number.pop();double y = number.top();number.pop();char op = symbol.top();symbol.pop();number.push(cal(y, x, op));}}}//精确到小数点后2位printf("%.2f\n", number.top());}return 0;
}

提交结果:

 

http://www.hrbkazy.com/news/42759.html

相关文章:

  • java网站项目可做随州seo
  • 专业网站设计公司排行榜网店运营入门基础知识
  • 可以做内容的网站站长平台官网
  • 济南大型网站设计公司seo站长教程
  • 我做的网站在手机里滑动怎么这里卡软文文案范文
  • 顺德网站建设基本流程app优化建议
  • 济南做网站比较好的公司百度竞价排名广告定价
  • 网站建设服务哪便宜杭州seook优屏网络
  • 免费个人网站服务器bb百度地图导航2022最新版
  • 专卖手表的网站网站推广网络推广
  • wordpress mysql扩展优化的定义
  • 宿迁seo公司seo tdk
  • 免费模板建站惠州seo排名公司
  • 西部数码网站流量怎么充事件营销的经典案例
  • 网站建站网站设计公司百度电脑版网址
  • icp许可证优化大师win7
  • 百度网站排名关键词整站优化做高端网站公司
  • 邢台无忧网站建设公司近期热点新闻
  • 阿里巴巴网站怎样做的漂亮百度关键词排名销售
  • 上海网站建设推广服务seo优化网站排名
  • 学做饼干网站软文300字介绍商品
  • 建设一个网站的具体步骤免费投放广告的平台
  • 网站开发哪里接单简述如何优化网站的方法
  • 云速建站可以建个人网站吗技术培训班
  • 淘宝网站建设类别北京网站建设公司哪家好
  • 建立个网站需要多少钱下载百度app并安装
  • 版权申请网站百度上传自己个人简介
  • 微信做网站支付工具百度快照推广排名
  • 天津靠谱点的装修公司上海网站seo招聘
  • 网站做收录是什么意思合肥网站推广助理