作业帮 > 数学 > 作业

Java中计算,例如公式((a+5)*3-6)/7当a=5时 求结果,并且公式是变化的有可能时a-5*1等等等等,求一个

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:数学作业 时间:2024/05/13 22:21:52
Java中计算,例如公式((a+5)*3-6)/7当a=5时 求结果,并且公式是变化的有可能时a-5*1等等等等,求一个程序
公式是变化的,而且有一个值也是变化的,求结果
Java中计算,例如公式((a+5)*3-6)/7当a=5时 求结果,并且公式是变化的有可能时a-5*1等等等等,求一个
求一个算式的值,你的程序需要对输入的公式进行词法语法分析,并考虑优先级,将其变化为一系列2项数的操作.
一般首先有一个堆栈,把每一个元素(括号,数字,操作符)压栈,然后每遇到一个右括号时出栈到最近的左括号,得到一个相对简单的算式,计算这个算式的结果并将其压栈.直到遇到算式尾.这样复杂的公式求解就已经分解成了解决一系列不含括号的算式的问题.
处理不含括号的算式的问题,就需要词法语法分析,从左往右遇到乘除就做,加减先不做,然后只剩加减,就再从左往右逐次进行.
比如3-4*(5+2)/7,压栈3,-,4,*,(,5,+,2,然后遇到‘)’出栈5+2,计算得7,压栈变成3,-,4,*,7,/,7算式结束不再有括号,从左往右,先做4*7得28,变成3,-,28,/,7,再做28/7,变成3,-,4,最后得-1