呵呵,我当时的算法是这样,如果只是加减运算的话就照常加减。当如果发现有乘号的时候你就把乘法另外计算,最后将值与放到加减运算中去……这样最后不管你怎样放罢这个四则运算最后的答案就能保证这个序列的正确性。
用一个变量来记录总的运算记录。
A=(普通加减运算的和)
设置两个变量,分别记录两个不同的变量值。
C,D
设置一个变量做为乘队法的计算结果
E
1+1*2/2
你这样的就是先做1+1的运算,那么总变量里的A值就是2,
接着开始继续往下,发现乘号以后那就是说你的第一个变量做的运算就是多余的,那就从总的变量中把所加的1减掉,然后再用所记录的第二个变量先做乘的运算,最后再加乘运算的结果与第一变量相加。以此推算下去的话,最后就是先进行了乘计算,再进行了除计算,最后就是加法运算。算法大概是这样,不知道你能明白么?我说得比较乱……
还有另一种情况,那就是在四则运算中有括号的情况下的处理,你就要做括号的判断,用两个变量来记录括号中的运算公式,和上面一样,只不过是多了一步就是当括号中的运算结束以后再与最后的记录进行简单的加减运算就可以了。
上面这是一种算法,实现起来比较容易。还有一种算法,那就是对字符串进行查找和分析,先对字符串中是否有括号进行查找,如果有括号就把括号中的东西提出来计算,计算以后记入变量中,然后再对乘除号进行计算,最后再对加减进行提取计算,这个的话主要就是提取字符中……其实要实现也不难。
这两种方法你可以对比一下,挑自己喜欢的方法去实现。其它的我暂时没有好的方案。如果你有想到的话分享一下。