4132:四则运算表达式求值

总时间限制: 1000ms 内存限制: 65536kB
描述
求一个可以带括号的小学算术四则运算表达式的值

输入
一行,一个四则运算表达式。’‘表示乘法,’/'表示除法
输出
一行,该表达式的值,保留小数点后面两位
样例输入
输入样例1:
3.4
输入样例2:
7+8.3
输入样例3:
3+4.5
(7+2)(3)((3+4)(2+3.5)/(4+5))-34(7-(2+3))
样例输出
输出样例1:
3.40
输出样例2:
15.30
输出样例3:
454.75

来源
Guo Wei

问题链接:Bailian4132 四则运算表达式求值
问题简述:(略)
问题分析:表达式求值问题,需要考虑运算优先级,先乘除后加减括号里优先。采用递归下降法来处理,考虑优先顺序。
程序说明:用C++流输入函数来处理字符输入流。
参考链接:(略)
题记:用C++处理表达式的范例

AC的C++语言程序如下:

/* Bailian4132 四则运算表达式求值 */#include <bits/stdc++.h>using namespace std;double expression();double factor()     // 处理括号与值
{double result = 0;char op = cin.peek();       // 看一个字符if ( op == '(') {cin.get();      // 读左括号result = expression();    // 括号内表达式cin.get();    // 读右括号} else {bool dotflag = false;double pright = 10;while ( isdigit(op) || op == '.') {if (op == '.') {pright = 1;dotflag = true;cin.get();op = cin.peek();} else {if (dotflag) {pright *= 0.1;result += pright * (op - '0');cin.get();op = cin.peek();} else {result = result * pright + op - '0';cin.get();op = cin.peek();}}}}return result;
}double item()  // 乘除
{double result = factor();     // 处理括号for (;;) {char op = cin.peek();       // 看一个字符if ( op == '*' || op == '/') {cin.get();double value = factor();if ( op == '*')result *= value;elseresult /= value;} elsebreak;}return result;
}double expression() // 加减
{double result = item();     // 处理乘除for(;;) {char op = cin.peek();       // 看一个字符if ( op == '+' || op == '-') {cin.get();double value = item();if( op == '+')result += value;elseresult -= value;} elsebreak;}return result;
}int main()
{printf("%.2f", expression());return 0;
}

Bailian4132 四则运算表达式求值【文本处理】相关推荐

  1. c语言求不定式的最大值,C语言之四则运算表达式求值(链栈)—支持浮点型数据,负数, 整型数据运算...

    运算符间的优先级关系: 链栈结构体定义: 数据域使用字符串长度为20的字符数组(故需要注意判断读取的字符串是运算符还是数值) 可支持浮点型数据,负数, 整型数据的运算 float EvaluateEx ...

  2. 四则运算表达式求值の各种心碎

    实验三---四则运算表达式求值 一.基本要求: ( 1 ) 利用二叉树后序遍历来实现表达式的转换,同时可以使用实验三的结果来求解后缀表达式的值. ( 2) 输入输出格式: 输入格式:在字符界面上输入一 ...

  3. 栈的应用(递归:例子裴波那契数列 四则运算表达式求值 :后缀(逆波兰) )

    递归: -栈有一个很重要的应用:在程序设计语言中实现递归. 当你往镜子前面一站,镜子里面就有-一个你的像. 但你试过两面镜子一起照吗?如果A.B两面镜子相互面对面放着,你往中间- -站,嘿,两面镜子里 ...

  4. 分别用C++和JavaScript 实现四则运算表达式求值

    博主16年4.19去面腾讯实习生,其中一个问题是让写一个函数求四则运算表达式的值,输入是字符串,输出为表达式结果.当时只记得这是数据结构里堆栈的应用,表达式要变顺序,但是实现就想不起来了,自然程序写的 ...

  5. 栈运算 java_栈的应用——四则运算表达式求值(Java实现)

    首先介绍几个概念 中缀式:平常我们所用到的标准的四则运算表达式就是中缀式,如9+(3-1)*3+10/2,这就是一个中缀式 后缀式(逆波兰式):一种不需要括号的后缀表达法,我们也把他称为逆波兰式,如将 ...

  6. 四则运算表达式求值(栈的应用)

    1.前/中/后缀表达式的转换(首先需要明白三者之间的转换)    自然表达式转换为前/中/后缀表达式,其实是很简单的.首先将自然表达式按照优先级顺序,构造出与表达式相对应的二叉树,然后对二叉树进行前/ ...

  7. 经典笔试上机考题-表达式求值

    相信参加过笔试面试同学应当见到过表达式求值这道题,下面列举的一道经典的考题,本文将同大家一起细细探讨一下表达式求值这一类问题的求法,希望抛砖引玉,其中有不妥的地方也请大家多多批评指正. /* 功能:四 ...

  8. [数据结构]表达式求值

    一.问题描述 表达式求值是数学中的一个基本问题,也是程序设计中的一个简单问题.我们所涉及的表达式中包含数字和符号,本实验中处理的符号包括'+'.'-'.'*'.'/'.'('和')',要求按照我们所习 ...

  9. 表达式求值Spring.Expressions

    简介 Spring.Expressions命名空间可以用一种强大的表达式语言在运行时操作对象.这种语言可以读写属性值.调用方法.访问数组/集合/索引器的元素.进行算术和逻辑运算,同时支持命名变量,并且 ...

最新文章

  1. Spring boot定时任务(Scheduling Tasks)
  2. python3 字符串操作总结
  3. UGUI_判断鼠标或者手指是否点击在UI上
  4. java layoutmanager_Java Swing 探索(一)LayoutManager
  5. Linux的LCD硬件实现原理和FrameBuffer简介
  6. Spring框架学习---Spring Framework上篇
  7. Spark SQL Catalyst源代码分析之Analyzer
  8. 电路课设-音响分频器电路设计
  9. 于NXP芯片第一次无法进入CAN中断的问题
  10. 路由交换技术-交换机vlan,trunk,access等配置,保证其连通性,telnet远程登陆配置,osf协议配置,默认路由。
  11. apollo学习之---(17)commen-math学习
  12. ActiveMQ —— Spring 整合 ActiveMQ
  13. 这样走能实现读博梦想吗?
  14. 电脑办公利器 屈指可数的软件!
  15. UVA10791 Minimum Sum LCM(数论)
  16. 教你怎么打印出实际大小的身份证
  17. 非线性规划 - 数学建模
  18. 神州数码易拓TIOTOP ERP查询作业模板-上单头下单身查询作业
  19. 电子病历系统开发过程
  20. pkg-config 与gcc 配合的使用

热门文章

  1. FLEX- MDI窗口开发实例
  2. 修改分值,总分不能超过100
  3. html——windows.onload()与$(document).ready()区别
  4. 手机游戏行业洗牌在即 成本增长小团队出局
  5. 使用Box2D制作AS3游戏——2.1a版本——Hello World Box2D .
  6. 1.ElementUI中table的sortable使用
  7. mysql econnreset_javascript - 节点Js mysql(和mysql2)ECONNRESET - 堆栈内存溢出
  8. Spring boot yml文件的书写格式
  9. Spring Date JPA实现增删改查
  10. Linux tmp目录自动清理 及解决方法