不用数据结构中的什么堆栈.还没学过,.能计算1+3*3+4这种的计算器 请讲下原理好吗、最好贴上代码
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/11 10:12:55
不用数据结构中的什么堆栈.还没学过,.能计算1+3*3+4这种的计算器 请讲下原理好吗、最好贴上代码
定义一个字符串数组,把那些字符输入进去,与close 对比,如果相同的话就退出,不相同的话继续执行,开始判断下面的内容,把( ) + - * / 等字符判断出来,定下位置,还有把数字还原出来,最后整合到一个算式中算出结果,输出就行了.由于题目有以下要求,所以在思考之后决定用如下方法解决它:这里用到了strcmp函数,这个函数在头文件string.h下运行的,这函数的作用是如果字符串相等的话输出为0..在还原字符串中的数字时,遇到了很大的问题,开始是判断 整数和运算符 ,可在程序该如何还原成了这个程序的关键,开始在编的时候我记得在什么书上讲过一个字符串还原的时候要用到 栈 的知识,我就上网去搜了一下还真是发现了一个算法 逆波兰表达式 的方法,可我在看的时候发现了一个问题,这个程序在还原数值的时候用了将近开几百行去判定那些字符,我看了一会儿,发现看的不太懂,突然我发现了一种方法的可行性:这个程序是这样的意思,之前都有定义的如右图:我这编的时候没有想过括号,所以这里只有三个数,两个运算符,所以在没有遇到运算符时,它的数一直都属于第一个数,当遇到运算符时,把这运算符记录下,此时第二个数开始,没有遇到在没有遇到运算符时此数一直属于第二个数,依次可以判断第三个数,这事通过改变下标来完成的,此时已经把sum[0] sum[1] sum[2] ch[0] ch[1] 记录下,在后面运算时虽然有运算符的优先级的判断,但先根据ch[0] ch[1] 来决定运算的方向,此时可以避免运算符的优先级的判断,这只是那种算法的一种形式,其它类似与上面的程序,这里要注意的就是除法的程序了,就是在除法是 分母 要判断是不是0的问题,还有要注意的是在除法时注意要一开始就要判断.这里还有一个 flag 的判断,是为了在分母为0时的输出问题,一般只用输出sum1 就行了,但除法分母为0是,输出为 数据错误 .程序如右:问题:因为在编的时想如何计算实数的时候,我发现如果用上面哪种方法很难实现,因为你判断了小数点后,后面的数如果按上面的程序那样继续运行的话会变成另外一段数,如果每一个都对应一个还好写,但如果只有一个有小数或两个有小数的话,那具体哪个是小数不好定位,具体来说实数的判定我是没有想出办法去成功的还原他们.那还在思考中.还有一个问题就是在sum[2]这里,它的每一个数据后面都加了一个四,我不知道为什么,我问了一些别人,他们也都不知道,但为了程序可执行的问题,我在这后面加了一行sum[2]=sum[20]/10;这是为了调整这个程序而写的,加了这一行之后,这个程序就可以很好的运行了,就可以的到下面的程序结果.程序的运行结果为:这是第一个运算符为 + 的一个程序结果; 这是第一个运算符为 - 的一个程序结果; 这是第一个运算符为 * 的一个程序结果; 这是第一个运算符为 / 的一个程序结果;
不用数据结构中的什么堆栈.还没学过,.能计算1+3*3+4这种的计算器 请讲下原理好吗、最好贴上代码
大学计算机题求助20.人类血缘关系可以用数据结构中的()结构表示(3分) A、 B、 C、 D、 A、图型 B、堆栈 C
不用计算器计算:5-2*6^1/2+(7-4*3^1/2)^1/2
用数据结构中的树能解决什么实际问题?数据结构大作业,不同于一般的实验报告.
先用科学计算器计算第一组题,然后归纳一下,你发现了什么?不用科学计算器,你能直接写出第二组题的答案吗?
数据段data segment 堆栈段stack segment 代码段code segment的 段地址 有什么关系?
不用计算器计算,求1、0.25的100次方乘以4的101次方2、201乘以199 3、999的平方
数据结构中的带权图怎么计算权的
你是否不用计算器能求出根号下2009个3的平方+2009个4的平方的值
N-环丙基-1,3,5-三嗪-2,4,6-三胺 是什么东西 ,我想查一下这个东西的海关报关时的HS代码,最好能直接把代码
科学计算器计算三角函数的原理
vb计算1!+3!+*****+(2n+1)!的代码