一种移动终端及其计算器数据计算处理方法、系统的制作方法

文档序号:10569870阅读:226来源:国知局
一种移动终端及其计算器数据计算处理方法、系统的制作方法
【专利摘要】本发明公开了一种移动终端及其计算器数据计算处理方法、系统,所述移动终端的计算器数据计算处理方法包括:获取用户输入的以数字和运算符号为组成元素的运算式;设置空的第一栈,从左至右遍历运算式的每个元素,将运算式中的数字直接输出,同时将运算式中的运算符号入栈,并根据运算优先级,控制运算符号依次出栈输出,生成一中间式;设置空的第二栈,从左至右遍历中间式的每个元素,将中间式中的数字入栈,并按照中间式中的运算符号,依次将处于第二栈栈顶的两个数字出栈进行运算,并将运算结果再入栈,直至得到最终运算结果。所述移动终端的计算器数据计算处理方法,使得计算器能够输入复杂运算式并直接算出结果,给用户提供了方便。
【专利说明】
一种移动终端及其计算器数据计算处理方法、系统
技术领域
[0001]本发明涉及移动终端应用领域,尤其涉及一种移动终端及其计算器数据计算处理方法、系统。
【背景技术】
[0002]目前,计算器(运算器)是移动终端必备的一个日常常用的应用程序;作为简单计算使用的计算器能够执行加、减、乘、除的四则运算;但是现有技术中的大多移动终端中该计算器的功能比较单一,只能进行一次运算,特别是在遇到稍微复杂的运算式时无法胜任,给用户带来不便。譬如,在执行2 + 6*(3 — 6)/3时,需要用户先在计算器中输入3 — 6并记录运算结果一 3,然后再输入6*( — 3)并记录运算结果一 18,然后再输入(一 18)/3并记录运算结果一 6,最后输入2 + ( — 6)并记录运算结果一 4;现有的移动终端的简单计算器无法直接输入运算式2+ 6*( 3 — 6)/3并自动直接得出结果。
[0003]因此,现有技术还有待于改进和发展。

【发明内容】

[0004]本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种移动终端及其计算器数据计算处理方法、系统,从而解决现有技术中移动终端的计算器进行运算式计算时,无法直接输入复杂运算式并直接算出结果,而需要用户根据基本的加、减、乘、除运算法则,计算多个式子来得出最终的运算结果,导致使用不便的问题。
[0005]本发明解决技术问题所采用的技术方案如下:
一种移动终端的计算器数据计算处理方法,包括:
A、获取用户输入的以数字和运算符号为组成元素的运算式;
B、设置空的第一栈,从左至右遍历所述运算式的每个元素,将所述运算式中的数字直接输出,同时将所述运算式中的运算符号入栈,并根据运算优先级,控制运算符号依次出栈输出,生成一由输出的数字和运算符号组成的用于进行进一步运算的中间式;
C、设置空的第二栈,从左至右遍历所述中间式的每个元素,将所述中间式中的数字入栈,并按照所述中间式中的运算符号,依次将处于第二栈栈顶的两个数字出栈进行运算,并将运算结果再入栈,直至得到最终运算结果。
[0006]所述的移动终端的计算器数据计算处理方法,所述步骤B具体包括:
B1、设置空的第一栈,然后从左至右遍历所述运算式的每个元素,判断元素是数字还是运算符号;
B2、当元素为数字,则直接输出为所述中间式的一部分;
B3、当元素为运算符号,则判断此时第一栈是否为空;若为空,则将所述运算符号入栈,若不为空,则根据所述运算符号和处于第一栈栈顶的元素的运算优先级的高低,相应控制所述运算符号入栈和第一栈栈内元素出栈输出,直至遍历到所述运算式的最后一个数字时,将此时第一栈内剩余的元素全部输出,得到所述中间式。
[0007]所述的移动终端的计算器数据计算处理方法,所述步骤B3具体包括:
B31、若此时第一栈不为空,则判断所述运算符号的运算优先级是否高于处于第一栈栈顶的元素的运算优先级;
B32、若所述运算符号的运算优先级高于处于第一栈栈顶的元素的运算优先级,则将所述运算符号入栈;若所述运算符号的运算优先级不高于处于第一栈栈顶的元素的运算优先级,则将此时处于第一栈栈顶的元素出栈输出,之后继续进行判断,直至所述运算符号的运算优先级高于处于第一栈栈顶的元素的运算优先级或者第一栈中的元素全部出栈,再将所述运算符号入栈;
B33、当遍历到所述运算式的最后一个数字时,将此时第一栈内剩余的元素全部输出,最终得到所述中间式。
[0008]所述的移动终端的计算器数据计算处理方法,所述步骤C具体包括:
Cl、设置空的第二栈,然后从左至右遍历所述中间式的每个元素,判断元素是数字还是运算符号;
C2、当元素是数字,则将数字直接入栈;
C3、当元素是运算符号,就将此时处于第二栈栈顶的两个数字出栈进行运算,并将运算结果再入栈,直到得到最终运算结果。
[0009]所述的移动终端的计算器数据计算处理方法,所述数字为十进制数字,所述运算符号为加、减、乘、除及括号;所述运算符号的运算优先级为括号最高,乘、除次之,加、减最低。
[0010]所述的移动终端的计算器数据计算处理方法,所述步骤B32具体还包括:
B321、若元素为运算符号,且此时第一栈不为空,则判断所述运算符号是否为左括号或右括号;
B322、若所述运算符号为左括号,则将左括号直接入栈;若所述运算符号为右括号,则将第一栈内的元素按照由栈顶到栈底的顺序依次出栈输出至所述中间式,直至左括号为止;
B323、若所述运算符号既不是左括号也不是右括号,则根据所述运算符号和处于第一栈栈顶的元素的运算优先级的高低,相应控制所述运算符号入栈和第一栈栈内元素出栈输出至所述中间式。
[0011 ] 一种移动终端的计算器数据计算处理系统,包括:
运算式获取模块,用于获取用户输入的以数字和运算符号为组成元素的运算式;
中间式生成模块,用于设置空的第一栈,从左至右遍历所述运算式的每个元素,将所述运算式中的数字直接输出,同时将所述运算式中的运算符号入栈,并根据运算优先级,控制运算符号依次出栈输出,生成一由输出的数字和运算符号组成的用于进行进一步运算的中间式;
计算模块,用于设置空的第二栈,从左至右遍历所述中间式的每个元素,将所述中间式中的数字入栈,并按照所述中间式中的运算符号,依次将处于第二栈栈顶的两个数字出栈进行运算,并将运算结果再入栈,直至得到最终运算结果。
[0012]所述的移动终端的计算器数据计算处理系统,所述中间式生成模块包括:
第一判断单元,用于设置空的第一栈,然后从左至右遍历所述运算式的每个元素,判断元素是数字还是运算符号;
数字输出单元,用于当元素为数字,则直接输出为所述中间式的一部分;
运算符号输出单元,用于当元素为运算符号,则判断此时第一栈是否为空;若为空,则将所述运算符号入栈,若不为空,则根据所述运算符号和处于第一栈栈顶的元素的运算优先级的高低,相应控制所述运算符号入栈和第一栈栈内元素出栈输出,直至遍历到所述运算式的最后一个数字时,将此时第一栈内剩余的元素全部输出,得到所述中间式。
[0013]所述的移动终端的计算器数据计算处理系统,所述计算模块包括:
第二判断单元,用于设置空的第二栈,然后从左至右遍历所述中间式的每个元素,判断元素是数字还是运算符号;
数字入栈单元,用于当元素是数字,则将数字直接入栈;
计算单元,用于当元素是运算符号,就将此时处于第二栈栈顶的两个数字出栈进行运算,并将运算结果再入栈,直到得到最终运算结果。
[0014]一种移动终端,包括以上任一项所述的计算器数据计算处理系统。
[0015]综上所述,本发明公开了一种移动终端及其计算器数据计算处理方法、系统,所述移动终端的计算器数据计算处理方法包括:获取用户输入的以数字和运算符号为组成元素的运算式;设置空的第一栈,从左至右遍历所述运算式的每个元素,将所述运算式中的数字直接输出,同时将所述运算式中的运算符号入栈,并根据运算优先级,控制运算符号依次出栈输出,生成一中间式;设置空的第二栈,从左至右遍历所述中间式的每个元素,将所述中间式中的数字入栈,并按照所述中间式中的运算符号,依次将处于第二栈栈顶的两个数字出栈进行运算,并将运算结果再入栈,直至得到最终运算结果;使移动终端增加了计算器能够输入复杂运算式并直接算出结果的功能。所述移动终端的计算器数据计算处理方法,能够直接输入复杂运算式由计算器直接算出结果,而不需要用户根据基本的加、减、乘、除运算法则,计算多个式子来得出最终的运算结果,给用户提供了方便。
【附图说明】
[0016]图1是本发明移动终端的计算器数据计算处理方法的流程图。
[0017]图2是本发明移动终端的计算器数据计算处理系统的功能原理框图。
【具体实施方式】
[0018]为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0019]请参见图1,图1是本发明移动终端的计算器数据计算处理方法的流程图。图1所示的一种移动终端的计算器数据计算处理方法,包括:
步骤S100、获取用户输入的以数字和运算符号为组成元素的运算式;
步骤S200、设置空的第一栈,从左至右遍历所述运算式的每个元素,将所述运算式中的数字直接输出,同时将所述运算式中的运算符号入栈,并根据运算优先级,控制运算符号依次出栈输出,生成一由输出的数字和运算符号组成的用于进行进一步运算的中间式;
步骤S300、设置空的第二栈,从左至右遍历所述中间式的每个元素,将所述中间式中的数字入栈,并按照所述中间式中的运算符号,依次将处于第二栈栈顶的两个数字出栈进行运算,并将运算结果再入栈,直至得到最终运算结果。
[0020]本发明实施例的所述数字为十进制数字,所述运算符号为加、减、乘、除及括号(包括左括号和右括号);所述运算符号的运算优先级为括号最高,乘、除次之,加、减最低;所述的第一栈和第二栈均为为先入后出处理的数据结构,也即是都为堆栈,是一种运算受限的线性表;其限制是仅允许在表的一端进行插入和删除运算;一端被称为栈顶,相对地,另一端称为栈底;向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
[0021]目前,移动终端都具有计算器(运算器)功能,本发明实施例的移动终端以手机为例进行说明,本发明实施例中,使用手机计算器功能时,当用户输入数字和运算符号组成运算式后,手机首先获取用户输入的运算式;然后,先设置空的第一栈,从左至右遍历所述运算式的每个数字和运算符号,将所述运算式中的数字直接输出,同时将所述运算式中的运算符号入栈,并根据其运算优先级,控制运算符号依次出栈输出,生成一由输出的数字和运算符号组成的用于进行进一步运算的中间式;简单的说,也就是先对用户输入的运算式进行转换,转换前为运算式,转换后为中间式。最后,再设置空的第二栈,从左至右遍历所述中间式的每个数字和运算符号,将所述中间式中的数字入栈,并按照所述中间式中的运算符号,依次将处于第二栈栈顶的两个数字出栈进行运算,并将运算结果再入栈,直至得到最终运算结果;简单的说,也就是对上述所得中间式进行运算,得到运算结果。
[0022]进一步的,步骤S200具体包括:
步骤S210、设置空的第一栈,然后从左至右遍历所述运算式的每个元素,判断元素是数字还是运算符号;
步骤S220、当元素为数字,则直接输出为所述中间式的一部分;
步骤S230、当元素为运算符号,则判断此时第一栈是否为空;若为空,则将所述运算符号入栈,若不为空,则根据所述运算符号和处于第一栈栈顶的元素的运算优先级的高低,相应控制所述运算符号入栈和第一栈栈内元素出栈输出,直至遍历到所述运算式的最后一个数字时,将此时第一栈内剩余的元素全部输出,得到所述中间式。
[0023]进一步的,所述步骤S230具体包括:
5231、若此时第一栈不为空,则判断所述运算符号的运算优先级是否高于处于第一栈栈顶的元素的运算优先级;
5232、若所述运算符号的运算优先级高于处于第一栈栈顶的元素的运算优先级,则将所述运算符号入栈;若所述运算符号的运算优先级不高于处于第一栈栈顶的元素的运算优先级,则将此时处于第一栈栈顶的元素出栈输出,之后继续进行判断,直至所述运算符号的运算优先级高于处于第一栈栈顶的元素的运算优先级或者第一栈中的元素全部出栈,再将所述运算符号入栈;
5233、当遍历到所述运算式的最后一个数字时,将此时第一栈内剩余的元素全部输出,最终得到所述中间式。
[0024]以上具体的步骤也就是将运算式转换为中间式的方法,转换的方法简单的说就是:设置一个空的栈;然后从左至右遍历运算式的每个数字或符号,若是数字就输出即成为中间式的一部分;若是符号,则判断栈是否为空,若为空则入栈,若不为空则判断其与栈顶符号的优先级,当优先级不高于栈顶符号(乘除优先于加减)则栈顶元素依次出栈并输出,并将当前符号入栈。
[0025]进一步的,考虑到括号的特殊性,其包括左括号、右括号两部分,在需要输入的运算符号为括号时,需要进行特殊的处理。因此,所述步骤S232具体还包括:
5237、若元素为运算符号,且此时第一栈不为空,则判断所述运算符号是否为左括号或右括号;
5238、若所述运算符号为左括号,则将左括号直接入栈;若所述运算符号为右括号,则将第一栈内的元素按照由栈顶到栈底的顺序依次出栈输出至所述中间式,直至左括号为止;需要说明的是,此处由栈顶到栈底的顺序也即是入栈时间由晚到早的顺序,反之,由栈底到栈顶的顺序也即是入栈时间由早到晚的顺序;
5239、若所述运算符号既不是左括号也不是右括号,则根据所述运算符号和处于第一栈栈顶的元素的运算优先级的高低,相应控制所述运算符号入栈和第一栈栈内元素出栈输出至所述中间式。
[0026]进一步的,所述步骤S300的具体包括:
S310、设置空的第二栈,然后从左至右遍历所述中间式的每个元素,判断元素是数字还是运算符号;
S320、当元素是数字,则将数字直接入栈;
S330、当元素是运算符号,就将此时处于第二栈栈顶的两个数字出栈进行运算,并将运算结果再入栈,直到得到最终运算结果。
[0027]所述步骤S300,简单的说,就是当得到中间式之后,再次设置一个空栈,然后从左至右遍历中间式的每个数字或符号,若是数字就进栈,若是符号,就将处于栈顶两个数字出栈并进行运算,运算结果再入栈,一直到得到最终运算结果。
[0028]本发明还提供了一种移动终端的计算器数据计算处理方法的具体应用实施例,例如,当用户输入运算式9 + (3 —1)*3 + 10/2时,移动终端的计算器数据计算处理方法包括:
步骤S1、获取用户输入的运算式9+(3 — I )*3 +10/2;
步骤S2、初始化一空的栈,用来对符号进出栈使用;
步骤S3、第一个字符是数字9,直接输出为中间式的一部分,接着是符号+,将其入栈;执行完本步骤后,栈中按入栈时间由早到晚为:+,目前的中间式为9 ;
步骤S4、第三个字符是(,因其是左括号,还未配对,故将其入栈;执行完本步骤后,栈中按入栈时间由早到晚为:+ (,目前的中间式为9;
步骤S5、第四个字符是数字3直接输出为中间式的一部分,接着是符号一故将其入栈;执行完本步骤后,栈中按入栈时间由早到晚为:+( —,目前的中间式为9 3;
步骤S6、接着是数字I直接输出为中间式的一部分,栈中按入栈时间由早到晚为:+(一,目前的中间式为9 3 I;
步骤S7、接着是符号),此时需要去匹配之前栈中的(,所以栈中元素按时间由晚到早依次出栈输出至中间式,直到(为止;执行完本步骤后,栈中按入栈时间由早到晚为:+,目前的中间式为9 3 1—;
步骤S8、接着是符号*,因主此时栈顶元素为+,+优先级低于*,因此将*入栈;接着是数字3,将其直接输出至中间式;执行完本步骤后,栈中按入栈时间由早到晚为:+*,目前的中间式为9 3 1 — 3;
步骤S9、接着是符号+,因主此时栈顶元素为*,*优先级高于+,因此栈中元素出栈输出至中间式,因为栈中没有比+更低优先级的符号,所以栈中元素全部出栈;然后再将当前处理的+入栈;执行完本步骤后,栈中按入栈时间由早到晚为:+,需要说明的是此时栈中的+为运算式9后的+,并非步骤S3运行完后桟中的+;目前的中间式为9 3 1 — 3*+;步骤S10、接着是数字10,直接输出至中间式,中间式变为9 3 1-3*+ 10,后面是符号/,故将/入栈;执行完本步骤后,栈中按入栈时间由早到晚为:+ /;此时中间式为:9 31- 3 * + 10;
步骤S11、最后一个是数字2,直接输出至中间式,从而得到最终的中间式为:9 3 1-3 * + 10 2 / +;
步骤S12、初始化另一个空栈;
步骤S13、因为中间式中前三个均为数字,所以都入栈,执行完本步骤后栈中元素按时间由早到晚为9 3 I;
步骤S14、接下来是符号一,故将栈顶两元素出栈运算为3 — I,得2,将2再入栈;执行完本步骤后栈中元素按时间由早到晚为9 2;
步骤S15、接着是数字3,将其入栈,执行完本步骤后栈中元素按时间由早到晚为9 2 3;步骤S16、接着是*,故栈顶两元素3和2出栈运算,2*3得6,将6入栈;执行完本步骤后栈中元素按时间由早到晚为9 6;
步骤S17、接着是+,故栈顶两元素6和9出栈运算,9 + 6得15,将15入栈;执行完本步骤后栈中元素按时间由早到晚为15;
步骤S18、接着是数字10和2,均入栈,执行完本步骤后栈中元素按时间由早到晚为1510 2;
步骤S19、接着是/,故栈顶两元素2和10出栈运算,10/2得5,将5入栈;执行完本步骤后栈中元素按时间由早到晚为15 5;
步骤S20、最后是+,故找顶两兀素5和15出找运算,15+ 5得20,20为最终运算结果。
[0029]另外,需要说明的是,以上具体实施例中,为了方便观看和表现清楚,在中间式相邻的数字或符号之间加了空格。
[0030]因此,本发明提出了一种移动终端的计算器数据计算处理方法,使移动终端的计算器能够输入复杂运算式并直接算出结果,给用户提供了方便,提升了用户体验。
[0031]本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储与一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁盘、光盘、只读存储记忆体(Read-Only,R0M)或随机存储记忆体(Random Access Memory,RAM)等。
[0032]基于上述方法实施例,本发明实施例还提供了一种移动终端的计算器数据计算处理系统,如图2所示,所述系统包括:运算式获取模块700、中间式生成模块800、计算模块900,其中,
运算式获取模块700,用于获取用户输入的以数字和运算符号为组成元素的运算式;具体如上所述。
[0033]中间式生成模块800,用于设置空的第一栈,从左至右遍历所述运算式的每个元素,将所述运算式中的数字直接输出,同时将所述运算式中的运算符号入栈,并根据运算优先级,控制运算符号依次出栈输出,生成一由输出的数字和运算符号组成的用于进行进一步运算的中间式;具体如上所述。
[0034]计算模块900,用于设置空的第二栈,从左至右遍历所述中间式的每个元素,将所述中间式中的数字入栈,并按照所述中间式中的运算符号,依次将处于第二栈栈顶的两个数字出栈进行运算,并将运算结果再入栈,直至得到最终运算结果;具体如上所述。
[0035]进一步的,所述中间式生成模块800还包括:
第一判断单元,用于设置空的第一栈,然后从左至右遍历所述运算式的每个元素,判断元素是数字还是运算符号;具体如上所述;
数字输出单元,用于当元素为数字,则直接输出为所述中间式的一部分;具体如上所述;
运算符号输出单元,用于当元素为运算符号,则判断此时第一栈是否为空;若为空,则将所述运算符号入栈,若不为空,则根据所述运算符号和处于第一栈栈顶的元素的运算优先级的高低,相应控制所述运算符号入栈和第一栈栈内元素出栈输出,直至遍历到所述运算式的最后一个数字时,将此时第一栈内剩余的元素全部输出,得到所述中间式;具体如上所述。
[0036]进一步的,所述计算模块900还包括:
第二判断单元,用于设置空的第二栈,然后从左至右遍历所述中间式的每个元素,判断元素是数字还是运算符号;具体如上所述;
数字入栈单元,用于当元素是数字,则将数字直接入栈;具体如上所述;
计算单元,用于当元素是运算符号,就将此时处于第二栈栈顶的两个数字出栈进行运算,并将运算结果再入栈,直到得到最终运算结果;具体如上所述。
[0037]进一步的,本发明还提供了一种移动终端,包括以上所述移动终端的计算器数据计算处理系统。
[0038]综上所述,本发明公开了一种移动终端及其计算器数据计算处理方法、系统,所述移动终端的计算器数据计算处理方法包括:获取用户输入的以数字和运算符号为组成元素的运算式;设置空的第一栈,从左至右遍历所述运算式的每个元素,将所述运算式中的数字直接输出,同时将所述运算式中的运算符号入栈,并根据运算优先级,控制运算符号依次出栈输出,生成一中间式;设置空的第二栈,从左至右遍历所述中间式的每个元素,将所述中间式中的数字入栈,并按照所述中间式中的运算符号,依次将处于第二栈栈顶的两个数字出栈进行运算,并将运算结果再入栈,直至得到最终运算结果;使移动终端增加了计算器能够输入复杂运算式并直接算出结果的功能。所述移动终端的计算器数据计算处理方法,能够直接输入复杂运算式由计算器直接算出结果,而不需要用户根据基本的加、减、乘、除运算法则,计算多个式子来得出最终的运算结果,给用户提供了方便。
[0039]应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
【主权项】
1.一种移动终端的计算器数据计算处理方法,其特征在于,包括: A、获取用户输入的以数字和运算符号为组成元素的运算式; B、设置空的第一栈,从左至右遍历所述运算式的每个元素,将所述运算式中的数字直接输出,同时将所述运算式中的运算符号入栈,并根据运算优先级,控制运算符号依次出栈输出,生成一由输出的数字和运算符号组成的用于进行进一步运算的中间式; C、设置空的第二栈,从左至右遍历所述中间式的每个元素,将所述中间式中的数字入栈,并按照所述中间式中的运算符号,依次将处于第二栈栈顶的两个数字出栈进行运算,并将运算结果再入栈,直至得到最终运算结果。2.根据权利要求1所述的移动终端的计算器数据计算处理方法,其特征在于,所述步骤B具体包括: B1、设置空的第一栈,然后从左至右遍历所述运算式的每个元素,判断元素是数字还是运算符号; B2、当元素为数字,则直接输出为所述中间式的一部分; B3、当元素为运算符号,则判断此时第一栈是否为空;若为空,则将所述运算符号入栈,若不为空,则根据所述运算符号和处于第一栈栈顶的元素的运算优先级的高低,相应控制所述运算符号入栈和第一栈栈内元素出栈输出,直至遍历到所述运算式的最后一个数字时,将此时第一栈内剩余的元素全部输出,得到所述中间式。3.根据权利要求2所述的移动终端的计算器数据计算处理方法,其特征在于,所述步骤B3具体包括: B31、若此时第一栈不为空,则判断所述运算符号的运算优先级是否高于处于第一栈栈顶的元素的运算优先级; B32、若所述运算符号的运算优先级高于处于第一栈栈顶的元素的运算优先级,则将所述运算符号入栈;若所述运算符号的运算优先级不高于处于第一栈栈顶的元素的运算优先级,则将此时处于第一栈栈顶的元素出栈输出,之后继续进行判断,直至所述运算符号的运算优先级高于处于第一栈栈顶的元素的运算优先级或者第一栈中的元素全部出栈,再将所述运算符号入栈; B33、当遍历到所述运算式的最后一个数字时,将此时第一栈内剩余的元素全部输出,最终得到所述中间式。4.根据权利要求1所述的移动终端的计算器数据计算处理方法,其特征在于,所述步骤C具体包括: Cl、设置空的第二栈,然后从左至右遍历所述中间式的每个元素,判断元素是数字还是运算符号; C2、当元素是数字,则将数字直接入栈; C3、当元素是运算符号,就将此时处于第二栈栈顶的两个数字出栈进行运算,并将运算结果再入栈,直到得到最终运算结果。5.根据权利要求3所述的移动终端的计算器数据计算处理方法,其特征在于,所述数字为十进制数字,所述运算符号为加、减、乘、除及括号;所述运算符号的运算优先级为括号最尚,乘、除次之,加、减最低。6.根据权利要求5所述的移动终端的计算器数据计算处理方法,其特征在于,所述步骤B32具体还包括: B321、若元素为运算符号,且此时第一栈不为空,则判断所述运算符号是否为左括号或右括号; B322、若所述运算符号为左括号,则将左括号直接入栈;若所述运算符号为右括号,则将第一栈内的元素按照由栈顶到栈底的顺序依次出栈输出至所述中间式,直至左括号为止; B323、若所述运算符号既不是左括号也不是右括号,则根据所述运算符号和处于第一栈栈顶的元素的运算优先级的高低,相应控制所述运算符号入栈和第一栈栈内元素出栈输出至所述中间式。7.一种移动终端的计算器数据计算处理系统,其特征在于,包括: 运算式获取模块,用于获取用户输入的以数字和运算符号为组成元素的运算式; 中间式生成模块,用于设置空的第一栈,从左至右遍历所述运算式的每个元素,将所述运算式中的数字直接输出,同时将所述运算式中的运算符号入栈,并根据运算优先级,控制运算符号依次出栈输出,生成一由输出的数字和运算符号组成的用于进行进一步运算的中间式; 计算模块,用于设置空的第二栈,从左至右遍历所述中间式的每个元素,将所述中间式中的数字入栈,并按照所述中间式中的运算符号,依次将处于第二栈栈顶的两个数字出栈进行运算,并将运算结果再入栈,直至得到最终运算结果。8.根据权利要求7所述的移动终端的计算器数据计算处理系统,其特征在于,所述中间式生成模块包括: 第一判断单元,用于设置空的第一栈,然后从左至右遍历所述运算式的每个元素,判断元素是数字还是运算符号; 数字输出单元,用于当元素为数字,则直接输出为所述中间式的一部分; 运算符号输出单元,用于当元素为运算符号,则判断此时第一栈是否为空;若为空,则将所述运算符号入栈,若不为空,则根据所述运算符号和处于第一栈栈顶的元素的运算优先级的高低,相应控制所述运算符号入栈和第一栈栈内元素出栈输出,直至遍历到所述运算式的最后一个数字时,将此时第一栈内剩余的元素全部输出,得到所述中间式。9.根据权利要求7所述的移动终端的计算器数据计算处理系统,其特征在于,所述计算模块包括: 第二判断单元,用于设置空的第二栈,然后从左至右遍历所述中间式的每个元素,判断元素是数字还是运算符号; 数字入栈单元,用于当元素是数字,则将数字直接入栈; 计算单元,用于当元素是运算符号,就将此时处于第二栈栈顶的两个数字出栈进行运算,并将运算结果再入栈,直到得到最终运算结果。10.一种移动终端,其特征在于,包括如权利要求7-9任一项所述的计算器数据计算处理系统。
【文档编号】G06F15/02GK105930297SQ201610309913
【公开日】2016年9月7日
【申请日】2016年5月11日
【发明人】俞斌, 杨维琴
【申请人】Tcl移动通信科技(宁波)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1