国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種移動終端及其計(jì)算器數(shù)據(jù)計(jì)算處理方法、系統(tǒng)的制作方法

      文檔序號:10569870閱讀:228來源:國知局
      一種移動終端及其計(jì)算器數(shù)據(jù)計(jì)算處理方法、系統(tǒng)的制作方法
      【專利摘要】本發(fā)明公開了一種移動終端及其計(jì)算器數(shù)據(jù)計(jì)算處理方法、系統(tǒng),所述移動終端的計(jì)算器數(shù)據(jù)計(jì)算處理方法包括:獲取用戶輸入的以數(shù)字和運(yùn)算符號為組成元素的運(yùn)算式;設(shè)置空的第一棧,從左至右遍歷運(yùn)算式的每個元素,將運(yùn)算式中的數(shù)字直接輸出,同時將運(yùn)算式中的運(yùn)算符號入棧,并根據(jù)運(yùn)算優(yōu)先級,控制運(yùn)算符號依次出棧輸出,生成一中間式;設(shè)置空的第二棧,從左至右遍歷中間式的每個元素,將中間式中的數(shù)字入棧,并按照中間式中的運(yùn)算符號,依次將處于第二棧棧頂?shù)膬蓚€數(shù)字出棧進(jìn)行運(yùn)算,并將運(yùn)算結(jié)果再入棧,直至得到最終運(yùn)算結(jié)果。所述移動終端的計(jì)算器數(shù)據(jù)計(jì)算處理方法,使得計(jì)算器能夠輸入復(fù)雜運(yùn)算式并直接算出結(jié)果,給用戶提供了方便。
      【專利說明】
      一種移動終端及其計(jì)算器數(shù)據(jù)計(jì)算處理方法、系統(tǒng)
      技術(shù)領(lǐng)域
      [0001]本發(fā)明涉及移動終端應(yīng)用領(lǐng)域,尤其涉及一種移動終端及其計(jì)算器數(shù)據(jù)計(jì)算處理方法、系統(tǒng)。
      【背景技術(shù)】
      [0002]目前,計(jì)算器(運(yùn)算器)是移動終端必備的一個日常常用的應(yīng)用程序;作為簡單計(jì)算使用的計(jì)算器能夠執(zhí)行加、減、乘、除的四則運(yùn)算;但是現(xiàn)有技術(shù)中的大多移動終端中該計(jì)算器的功能比較單一,只能進(jìn)行一次運(yùn)算,特別是在遇到稍微復(fù)雜的運(yùn)算式時無法勝任,給用戶帶來不便。譬如,在執(zhí)行2 + 6*(3 — 6)/3時,需要用戶先在計(jì)算器中輸入3 — 6并記錄運(yùn)算結(jié)果一 3,然后再輸入6*( — 3)并記錄運(yùn)算結(jié)果一 18,然后再輸入(一 18)/3并記錄運(yùn)算結(jié)果一 6,最后輸入2 + ( — 6)并記錄運(yùn)算結(jié)果一 4;現(xiàn)有的移動終端的簡單計(jì)算器無法直接輸入運(yùn)算式2+ 6*( 3 — 6)/3并自動直接得出結(jié)果。
      [0003]因此,現(xiàn)有技術(shù)還有待于改進(jìn)和發(fā)展。

      【發(fā)明內(nèi)容】

      [0004]本發(fā)明要解決的技術(shù)問題在于,針對現(xiàn)有技術(shù)的上述缺陷,提供一種移動終端及其計(jì)算器數(shù)據(jù)計(jì)算處理方法、系統(tǒng),從而解決現(xiàn)有技術(shù)中移動終端的計(jì)算器進(jìn)行運(yùn)算式計(jì)算時,無法直接輸入復(fù)雜運(yùn)算式并直接算出結(jié)果,而需要用戶根據(jù)基本的加、減、乘、除運(yùn)算法則,計(jì)算多個式子來得出最終的運(yùn)算結(jié)果,導(dǎo)致使用不便的問題。
      [0005]本發(fā)明解決技術(shù)問題所采用的技術(shù)方案如下:
      一種移動終端的計(jì)算器數(shù)據(jù)計(jì)算處理方法,包括:
      A、獲取用戶輸入的以數(shù)字和運(yùn)算符號為組成元素的運(yùn)算式;
      B、設(shè)置空的第一棧,從左至右遍歷所述運(yùn)算式的每個元素,將所述運(yùn)算式中的數(shù)字直接輸出,同時將所述運(yùn)算式中的運(yùn)算符號入棧,并根據(jù)運(yùn)算優(yōu)先級,控制運(yùn)算符號依次出棧輸出,生成一由輸出的數(shù)字和運(yùn)算符號組成的用于進(jìn)行進(jìn)一步運(yùn)算的中間式;
      C、設(shè)置空的第二棧,從左至右遍歷所述中間式的每個元素,將所述中間式中的數(shù)字入棧,并按照所述中間式中的運(yùn)算符號,依次將處于第二棧棧頂?shù)膬蓚€數(shù)字出棧進(jìn)行運(yùn)算,并將運(yùn)算結(jié)果再入棧,直至得到最終運(yùn)算結(jié)果。
      [0006]所述的移動終端的計(jì)算器數(shù)據(jù)計(jì)算處理方法,所述步驟B具體包括:
      B1、設(shè)置空的第一棧,然后從左至右遍歷所述運(yùn)算式的每個元素,判斷元素是數(shù)字還是運(yùn)算符號;
      B2、當(dāng)元素為數(shù)字,則直接輸出為所述中間式的一部分;
      B3、當(dāng)元素為運(yùn)算符號,則判斷此時第一棧是否為空;若為空,則將所述運(yùn)算符號入棧,若不為空,則根據(jù)所述運(yùn)算符號和處于第一棧棧頂?shù)脑氐倪\(yùn)算優(yōu)先級的高低,相應(yīng)控制所述運(yùn)算符號入棧和第一棧棧內(nèi)元素出棧輸出,直至遍歷到所述運(yùn)算式的最后一個數(shù)字時,將此時第一棧內(nèi)剩余的元素全部輸出,得到所述中間式。
      [0007]所述的移動終端的計(jì)算器數(shù)據(jù)計(jì)算處理方法,所述步驟B3具體包括:
      B31、若此時第一棧不為空,則判斷所述運(yùn)算符號的運(yùn)算優(yōu)先級是否高于處于第一棧棧頂?shù)脑氐倪\(yùn)算優(yōu)先級;
      B32、若所述運(yùn)算符號的運(yùn)算優(yōu)先級高于處于第一棧棧頂?shù)脑氐倪\(yùn)算優(yōu)先級,則將所述運(yùn)算符號入棧;若所述運(yùn)算符號的運(yùn)算優(yōu)先級不高于處于第一棧棧頂?shù)脑氐倪\(yùn)算優(yōu)先級,則將此時處于第一棧棧頂?shù)脑爻鰲]敵?,之后繼續(xù)進(jìn)行判斷,直至所述運(yùn)算符號的運(yùn)算優(yōu)先級高于處于第一棧棧頂?shù)脑氐倪\(yùn)算優(yōu)先級或者第一棧中的元素全部出棧,再將所述運(yùn)算符號入棧;
      B33、當(dāng)遍歷到所述運(yùn)算式的最后一個數(shù)字時,將此時第一棧內(nèi)剩余的元素全部輸出,最終得到所述中間式。
      [0008]所述的移動終端的計(jì)算器數(shù)據(jù)計(jì)算處理方法,所述步驟C具體包括:
      Cl、設(shè)置空的第二棧,然后從左至右遍歷所述中間式的每個元素,判斷元素是數(shù)字還是運(yùn)算符號;
      C2、當(dāng)元素是數(shù)字,則將數(shù)字直接入棧;
      C3、當(dāng)元素是運(yùn)算符號,就將此時處于第二棧棧頂?shù)膬蓚€數(shù)字出棧進(jìn)行運(yùn)算,并將運(yùn)算結(jié)果再入棧,直到得到最終運(yùn)算結(jié)果。
      [0009]所述的移動終端的計(jì)算器數(shù)據(jù)計(jì)算處理方法,所述數(shù)字為十進(jìn)制數(shù)字,所述運(yùn)算符號為加、減、乘、除及括號;所述運(yùn)算符號的運(yùn)算優(yōu)先級為括號最高,乘、除次之,加、減最低。
      [0010]所述的移動終端的計(jì)算器數(shù)據(jù)計(jì)算處理方法,所述步驟B32具體還包括:
      B321、若元素為運(yùn)算符號,且此時第一棧不為空,則判斷所述運(yùn)算符號是否為左括號或右括號;
      B322、若所述運(yùn)算符號為左括號,則將左括號直接入棧;若所述運(yùn)算符號為右括號,則將第一棧內(nèi)的元素按照由棧頂?shù)綏5椎捻樞蛞来纬鰲]敵鲋了鲋虚g式,直至左括號為止;
      B323、若所述運(yùn)算符號既不是左括號也不是右括號,則根據(jù)所述運(yùn)算符號和處于第一棧棧頂?shù)脑氐倪\(yùn)算優(yōu)先級的高低,相應(yīng)控制所述運(yùn)算符號入棧和第一棧棧內(nèi)元素出棧輸出至所述中間式。
      [0011 ] 一種移動終端的計(jì)算器數(shù)據(jù)計(jì)算處理系統(tǒng),包括:
      運(yùn)算式獲取模塊,用于獲取用戶輸入的以數(shù)字和運(yùn)算符號為組成元素的運(yùn)算式;
      中間式生成模塊,用于設(shè)置空的第一棧,從左至右遍歷所述運(yùn)算式的每個元素,將所述運(yùn)算式中的數(shù)字直接輸出,同時將所述運(yùn)算式中的運(yùn)算符號入棧,并根據(jù)運(yùn)算優(yōu)先級,控制運(yùn)算符號依次出棧輸出,生成一由輸出的數(shù)字和運(yùn)算符號組成的用于進(jìn)行進(jìn)一步運(yùn)算的中間式;
      計(jì)算模塊,用于設(shè)置空的第二棧,從左至右遍歷所述中間式的每個元素,將所述中間式中的數(shù)字入棧,并按照所述中間式中的運(yùn)算符號,依次將處于第二棧棧頂?shù)膬蓚€數(shù)字出棧進(jìn)行運(yùn)算,并將運(yùn)算結(jié)果再入棧,直至得到最終運(yùn)算結(jié)果。
      [0012]所述的移動終端的計(jì)算器數(shù)據(jù)計(jì)算處理系統(tǒng),所述中間式生成模塊包括:
      第一判斷單元,用于設(shè)置空的第一棧,然后從左至右遍歷所述運(yùn)算式的每個元素,判斷元素是數(shù)字還是運(yùn)算符號;
      數(shù)字輸出單元,用于當(dāng)元素為數(shù)字,則直接輸出為所述中間式的一部分;
      運(yùn)算符號輸出單元,用于當(dāng)元素為運(yùn)算符號,則判斷此時第一棧是否為空;若為空,則將所述運(yùn)算符號入棧,若不為空,則根據(jù)所述運(yùn)算符號和處于第一棧棧頂?shù)脑氐倪\(yùn)算優(yōu)先級的高低,相應(yīng)控制所述運(yùn)算符號入棧和第一棧棧內(nèi)元素出棧輸出,直至遍歷到所述運(yùn)算式的最后一個數(shù)字時,將此時第一棧內(nèi)剩余的元素全部輸出,得到所述中間式。
      [0013]所述的移動終端的計(jì)算器數(shù)據(jù)計(jì)算處理系統(tǒng),所述計(jì)算模塊包括:
      第二判斷單元,用于設(shè)置空的第二棧,然后從左至右遍歷所述中間式的每個元素,判斷元素是數(shù)字還是運(yùn)算符號;
      數(shù)字入棧單元,用于當(dāng)元素是數(shù)字,則將數(shù)字直接入棧;
      計(jì)算單元,用于當(dāng)元素是運(yùn)算符號,就將此時處于第二棧棧頂?shù)膬蓚€數(shù)字出棧進(jìn)行運(yùn)算,并將運(yùn)算結(jié)果再入棧,直到得到最終運(yùn)算結(jié)果。
      [0014]一種移動終端,包括以上任一項(xiàng)所述的計(jì)算器數(shù)據(jù)計(jì)算處理系統(tǒng)。
      [0015]綜上所述,本發(fā)明公開了一種移動終端及其計(jì)算器數(shù)據(jù)計(jì)算處理方法、系統(tǒng),所述移動終端的計(jì)算器數(shù)據(jù)計(jì)算處理方法包括:獲取用戶輸入的以數(shù)字和運(yùn)算符號為組成元素的運(yùn)算式;設(shè)置空的第一棧,從左至右遍歷所述運(yùn)算式的每個元素,將所述運(yùn)算式中的數(shù)字直接輸出,同時將所述運(yùn)算式中的運(yùn)算符號入棧,并根據(jù)運(yùn)算優(yōu)先級,控制運(yùn)算符號依次出棧輸出,生成一中間式;設(shè)置空的第二棧,從左至右遍歷所述中間式的每個元素,將所述中間式中的數(shù)字入棧,并按照所述中間式中的運(yùn)算符號,依次將處于第二棧棧頂?shù)膬蓚€數(shù)字出棧進(jìn)行運(yùn)算,并將運(yùn)算結(jié)果再入棧,直至得到最終運(yùn)算結(jié)果;使移動終端增加了計(jì)算器能夠輸入復(fù)雜運(yùn)算式并直接算出結(jié)果的功能。所述移動終端的計(jì)算器數(shù)據(jù)計(jì)算處理方法,能夠直接輸入復(fù)雜運(yùn)算式由計(jì)算器直接算出結(jié)果,而不需要用戶根據(jù)基本的加、減、乘、除運(yùn)算法則,計(jì)算多個式子來得出最終的運(yùn)算結(jié)果,給用戶提供了方便。
      【附圖說明】
      [0016]圖1是本發(fā)明移動終端的計(jì)算器數(shù)據(jù)計(jì)算處理方法的流程圖。
      [0017]圖2是本發(fā)明移動終端的計(jì)算器數(shù)據(jù)計(jì)算處理系統(tǒng)的功能原理框圖。
      【具體實(shí)施方式】
      [0018]為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚、明確,以下參照附圖并舉實(shí)施例對本發(fā)明進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
      [0019]請參見圖1,圖1是本發(fā)明移動終端的計(jì)算器數(shù)據(jù)計(jì)算處理方法的流程圖。圖1所示的一種移動終端的計(jì)算器數(shù)據(jù)計(jì)算處理方法,包括:
      步驟S100、獲取用戶輸入的以數(shù)字和運(yùn)算符號為組成元素的運(yùn)算式;
      步驟S200、設(shè)置空的第一棧,從左至右遍歷所述運(yùn)算式的每個元素,將所述運(yùn)算式中的數(shù)字直接輸出,同時將所述運(yùn)算式中的運(yùn)算符號入棧,并根據(jù)運(yùn)算優(yōu)先級,控制運(yùn)算符號依次出棧輸出,生成一由輸出的數(shù)字和運(yùn)算符號組成的用于進(jìn)行進(jìn)一步運(yùn)算的中間式;
      步驟S300、設(shè)置空的第二棧,從左至右遍歷所述中間式的每個元素,將所述中間式中的數(shù)字入棧,并按照所述中間式中的運(yùn)算符號,依次將處于第二棧棧頂?shù)膬蓚€數(shù)字出棧進(jìn)行運(yùn)算,并將運(yùn)算結(jié)果再入棧,直至得到最終運(yùn)算結(jié)果。
      [0020]本發(fā)明實(shí)施例的所述數(shù)字為十進(jìn)制數(shù)字,所述運(yùn)算符號為加、減、乘、除及括號(包括左括號和右括號);所述運(yùn)算符號的運(yùn)算優(yōu)先級為括號最高,乘、除次之,加、減最低;所述的第一棧和第二棧均為為先入后出處理的數(shù)據(jù)結(jié)構(gòu),也即是都為堆棧,是一種運(yùn)算受限的線性表;其限制是僅允許在表的一端進(jìn)行插入和刪除運(yùn)算;一端被稱為棧頂,相對地,另一端稱為棧底;向一個棧插入新元素又稱作進(jìn)棧、入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;從一個棧刪除元素又稱作出?;蛲藯?,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。
      [0021]目前,移動終端都具有計(jì)算器(運(yùn)算器)功能,本發(fā)明實(shí)施例的移動終端以手機(jī)為例進(jìn)行說明,本發(fā)明實(shí)施例中,使用手機(jī)計(jì)算器功能時,當(dāng)用戶輸入數(shù)字和運(yùn)算符號組成運(yùn)算式后,手機(jī)首先獲取用戶輸入的運(yùn)算式;然后,先設(shè)置空的第一棧,從左至右遍歷所述運(yùn)算式的每個數(shù)字和運(yùn)算符號,將所述運(yùn)算式中的數(shù)字直接輸出,同時將所述運(yùn)算式中的運(yùn)算符號入棧,并根據(jù)其運(yùn)算優(yōu)先級,控制運(yùn)算符號依次出棧輸出,生成一由輸出的數(shù)字和運(yùn)算符號組成的用于進(jìn)行進(jìn)一步運(yùn)算的中間式;簡單的說,也就是先對用戶輸入的運(yùn)算式進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換前為運(yùn)算式,轉(zhuǎn)換后為中間式。最后,再設(shè)置空的第二棧,從左至右遍歷所述中間式的每個數(shù)字和運(yùn)算符號,將所述中間式中的數(shù)字入棧,并按照所述中間式中的運(yùn)算符號,依次將處于第二棧棧頂?shù)膬蓚€數(shù)字出棧進(jìn)行運(yùn)算,并將運(yùn)算結(jié)果再入棧,直至得到最終運(yùn)算結(jié)果;簡單的說,也就是對上述所得中間式進(jìn)行運(yùn)算,得到運(yùn)算結(jié)果。
      [0022]進(jìn)一步的,步驟S200具體包括:
      步驟S210、設(shè)置空的第一棧,然后從左至右遍歷所述運(yùn)算式的每個元素,判斷元素是數(shù)字還是運(yùn)算符號;
      步驟S220、當(dāng)元素為數(shù)字,則直接輸出為所述中間式的一部分;
      步驟S230、當(dāng)元素為運(yùn)算符號,則判斷此時第一棧是否為空;若為空,則將所述運(yùn)算符號入棧,若不為空,則根據(jù)所述運(yùn)算符號和處于第一棧棧頂?shù)脑氐倪\(yùn)算優(yōu)先級的高低,相應(yīng)控制所述運(yùn)算符號入棧和第一棧棧內(nèi)元素出棧輸出,直至遍歷到所述運(yùn)算式的最后一個數(shù)字時,將此時第一棧內(nèi)剩余的元素全部輸出,得到所述中間式。
      [0023]進(jìn)一步的,所述步驟S230具體包括:
      5231、若此時第一棧不為空,則判斷所述運(yùn)算符號的運(yùn)算優(yōu)先級是否高于處于第一棧棧頂?shù)脑氐倪\(yùn)算優(yōu)先級;
      5232、若所述運(yùn)算符號的運(yùn)算優(yōu)先級高于處于第一棧棧頂?shù)脑氐倪\(yùn)算優(yōu)先級,則將所述運(yùn)算符號入棧;若所述運(yùn)算符號的運(yùn)算優(yōu)先級不高于處于第一棧棧頂?shù)脑氐倪\(yùn)算優(yōu)先級,則將此時處于第一棧棧頂?shù)脑爻鰲]敵?,之后繼續(xù)進(jìn)行判斷,直至所述運(yùn)算符號的運(yùn)算優(yōu)先級高于處于第一棧棧頂?shù)脑氐倪\(yùn)算優(yōu)先級或者第一棧中的元素全部出棧,再將所述運(yùn)算符號入棧;
      5233、當(dāng)遍歷到所述運(yùn)算式的最后一個數(shù)字時,將此時第一棧內(nèi)剩余的元素全部輸出,最終得到所述中間式。
      [0024]以上具體的步驟也就是將運(yùn)算式轉(zhuǎn)換為中間式的方法,轉(zhuǎn)換的方法簡單的說就是:設(shè)置一個空的棧;然后從左至右遍歷運(yùn)算式的每個數(shù)字或符號,若是數(shù)字就輸出即成為中間式的一部分;若是符號,則判斷棧是否為空,若為空則入棧,若不為空則判斷其與棧頂符號的優(yōu)先級,當(dāng)優(yōu)先級不高于棧頂符號(乘除優(yōu)先于加減)則棧頂元素依次出棧并輸出,并將當(dāng)前符號入棧。
      [0025]進(jìn)一步的,考慮到括號的特殊性,其包括左括號、右括號兩部分,在需要輸入的運(yùn)算符號為括號時,需要進(jìn)行特殊的處理。因此,所述步驟S232具體還包括:
      5237、若元素為運(yùn)算符號,且此時第一棧不為空,則判斷所述運(yùn)算符號是否為左括號或右括號;
      5238、若所述運(yùn)算符號為左括號,則將左括號直接入棧;若所述運(yùn)算符號為右括號,則將第一棧內(nèi)的元素按照由棧頂?shù)綏5椎捻樞蛞来纬鰲]敵鲋了鲋虚g式,直至左括號為止;需要說明的是,此處由棧頂?shù)綏5椎捻樞蛞布词侨霔r間由晚到早的順序,反之,由棧底到棧頂?shù)捻樞蛞布词侨霔r間由早到晚的順序;
      5239、若所述運(yùn)算符號既不是左括號也不是右括號,則根據(jù)所述運(yùn)算符號和處于第一棧棧頂?shù)脑氐倪\(yùn)算優(yōu)先級的高低,相應(yīng)控制所述運(yùn)算符號入棧和第一棧棧內(nèi)元素出棧輸出至所述中間式。
      [0026]進(jìn)一步的,所述步驟S300的具體包括:
      S310、設(shè)置空的第二棧,然后從左至右遍歷所述中間式的每個元素,判斷元素是數(shù)字還是運(yùn)算符號;
      S320、當(dāng)元素是數(shù)字,則將數(shù)字直接入棧;
      S330、當(dāng)元素是運(yùn)算符號,就將此時處于第二棧棧頂?shù)膬蓚€數(shù)字出棧進(jìn)行運(yùn)算,并將運(yùn)算結(jié)果再入棧,直到得到最終運(yùn)算結(jié)果。
      [0027]所述步驟S300,簡單的說,就是當(dāng)?shù)玫街虚g式之后,再次設(shè)置一個空棧,然后從左至右遍歷中間式的每個數(shù)字或符號,若是數(shù)字就進(jìn)棧,若是符號,就將處于棧頂兩個數(shù)字出棧并進(jìn)行運(yùn)算,運(yùn)算結(jié)果再入棧,一直到得到最終運(yùn)算結(jié)果。
      [0028]本發(fā)明還提供了一種移動終端的計(jì)算器數(shù)據(jù)計(jì)算處理方法的具體應(yīng)用實(shí)施例,例如,當(dāng)用戶輸入運(yùn)算式9 + (3 —1)*3 + 10/2時,移動終端的計(jì)算器數(shù)據(jù)計(jì)算處理方法包括:
      步驟S1、獲取用戶輸入的運(yùn)算式9+(3 — I )*3 +10/2;
      步驟S2、初始化一空的棧,用來對符號進(jìn)出棧使用;
      步驟S3、第一個字符是數(shù)字9,直接輸出為中間式的一部分,接著是符號+,將其入棧;執(zhí)行完本步驟后,棧中按入棧時間由早到晚為:+,目前的中間式為9 ;
      步驟S4、第三個字符是(,因其是左括號,還未配對,故將其入棧;執(zhí)行完本步驟后,棧中按入棧時間由早到晚為:+ (,目前的中間式為9;
      步驟S5、第四個字符是數(shù)字3直接輸出為中間式的一部分,接著是符號一故將其入棧;執(zhí)行完本步驟后,棧中按入棧時間由早到晚為:+( —,目前的中間式為9 3;
      步驟S6、接著是數(shù)字I直接輸出為中間式的一部分,棧中按入棧時間由早到晚為:+(一,目前的中間式為9 3 I;
      步驟S7、接著是符號),此時需要去匹配之前棧中的(,所以棧中元素按時間由晚到早依次出棧輸出至中間式,直到(為止;執(zhí)行完本步驟后,棧中按入棧時間由早到晚為:+,目前的中間式為9 3 1—;
      步驟S8、接著是符號*,因主此時棧頂元素為+,+優(yōu)先級低于*,因此將*入棧;接著是數(shù)字3,將其直接輸出至中間式;執(zhí)行完本步驟后,棧中按入棧時間由早到晚為:+*,目前的中間式為9 3 1 — 3;
      步驟S9、接著是符號+,因主此時棧頂元素為*,*優(yōu)先級高于+,因此棧中元素出棧輸出至中間式,因?yàn)闂V袥]有比+更低優(yōu)先級的符號,所以棧中元素全部出棧;然后再將當(dāng)前處理的+入棧;執(zhí)行完本步驟后,棧中按入棧時間由早到晚為:+,需要說明的是此時棧中的+為運(yùn)算式9后的+,并非步驟S3運(yùn)行完后桟中的+;目前的中間式為9 3 1 — 3*+;步驟S10、接著是數(shù)字10,直接輸出至中間式,中間式變?yōu)? 3 1-3*+ 10,后面是符號/,故將/入棧;執(zhí)行完本步驟后,棧中按入棧時間由早到晚為:+ /;此時中間式為:9 31- 3 * + 10;
      步驟S11、最后一個是數(shù)字2,直接輸出至中間式,從而得到最終的中間式為:9 3 1-3 * + 10 2 / +;
      步驟S12、初始化另一個空棧;
      步驟S13、因?yàn)橹虚g式中前三個均為數(shù)字,所以都入棧,執(zhí)行完本步驟后棧中元素按時間由早到晚為9 3 I;
      步驟S14、接下來是符號一,故將棧頂兩元素出棧運(yùn)算為3 — I,得2,將2再入棧;執(zhí)行完本步驟后棧中元素按時間由早到晚為9 2;
      步驟S15、接著是數(shù)字3,將其入棧,執(zhí)行完本步驟后棧中元素按時間由早到晚為9 2 3;步驟S16、接著是*,故棧頂兩元素3和2出棧運(yùn)算,2*3得6,將6入棧;執(zhí)行完本步驟后棧中元素按時間由早到晚為9 6;
      步驟S17、接著是+,故棧頂兩元素6和9出棧運(yùn)算,9 + 6得15,將15入棧;執(zhí)行完本步驟后棧中元素按時間由早到晚為15;
      步驟S18、接著是數(shù)字10和2,均入棧,執(zhí)行完本步驟后棧中元素按時間由早到晚為1510 2;
      步驟S19、接著是/,故棧頂兩元素2和10出棧運(yùn)算,10/2得5,將5入棧;執(zhí)行完本步驟后棧中元素按時間由早到晚為15 5;
      步驟S20、最后是+,故找頂兩兀素5和15出找運(yùn)算,15+ 5得20,20為最終運(yùn)算結(jié)果。
      [0029]另外,需要說明的是,以上具體實(shí)施例中,為了方便觀看和表現(xiàn)清楚,在中間式相鄰的數(shù)字或符號之間加了空格。
      [0030]因此,本發(fā)明提出了一種移動終端的計(jì)算器數(shù)據(jù)計(jì)算處理方法,使移動終端的計(jì)算器能夠輸入復(fù)雜運(yùn)算式并直接算出結(jié)果,給用戶提供了方便,提升了用戶體驗(yàn)。
      [0031]本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述方法實(shí)施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成,前述的程序可以存儲與一計(jì)算機(jī)可讀取存儲介質(zhì)中,該程序在執(zhí)行時,可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲介質(zhì)可為磁盤、光盤、只讀存儲記憶體(Read-Only,R0M)或隨機(jī)存儲記憶體(Random Access Memory,RAM)等。
      [0032]基于上述方法實(shí)施例,本發(fā)明實(shí)施例還提供了一種移動終端的計(jì)算器數(shù)據(jù)計(jì)算處理系統(tǒng),如圖2所示,所述系統(tǒng)包括:運(yùn)算式獲取模塊700、中間式生成模塊800、計(jì)算模塊900,其中,
      運(yùn)算式獲取模塊700,用于獲取用戶輸入的以數(shù)字和運(yùn)算符號為組成元素的運(yùn)算式;具體如上所述。
      [0033]中間式生成模塊800,用于設(shè)置空的第一棧,從左至右遍歷所述運(yùn)算式的每個元素,將所述運(yùn)算式中的數(shù)字直接輸出,同時將所述運(yùn)算式中的運(yùn)算符號入棧,并根據(jù)運(yùn)算優(yōu)先級,控制運(yùn)算符號依次出棧輸出,生成一由輸出的數(shù)字和運(yùn)算符號組成的用于進(jìn)行進(jìn)一步運(yùn)算的中間式;具體如上所述。
      [0034]計(jì)算模塊900,用于設(shè)置空的第二棧,從左至右遍歷所述中間式的每個元素,將所述中間式中的數(shù)字入棧,并按照所述中間式中的運(yùn)算符號,依次將處于第二棧棧頂?shù)膬蓚€數(shù)字出棧進(jìn)行運(yùn)算,并將運(yùn)算結(jié)果再入棧,直至得到最終運(yùn)算結(jié)果;具體如上所述。
      [0035]進(jìn)一步的,所述中間式生成模塊800還包括:
      第一判斷單元,用于設(shè)置空的第一棧,然后從左至右遍歷所述運(yùn)算式的每個元素,判斷元素是數(shù)字還是運(yùn)算符號;具體如上所述;
      數(shù)字輸出單元,用于當(dāng)元素為數(shù)字,則直接輸出為所述中間式的一部分;具體如上所述;
      運(yùn)算符號輸出單元,用于當(dāng)元素為運(yùn)算符號,則判斷此時第一棧是否為空;若為空,則將所述運(yùn)算符號入棧,若不為空,則根據(jù)所述運(yùn)算符號和處于第一棧棧頂?shù)脑氐倪\(yùn)算優(yōu)先級的高低,相應(yīng)控制所述運(yùn)算符號入棧和第一棧棧內(nèi)元素出棧輸出,直至遍歷到所述運(yùn)算式的最后一個數(shù)字時,將此時第一棧內(nèi)剩余的元素全部輸出,得到所述中間式;具體如上所述。
      [0036]進(jìn)一步的,所述計(jì)算模塊900還包括:
      第二判斷單元,用于設(shè)置空的第二棧,然后從左至右遍歷所述中間式的每個元素,判斷元素是數(shù)字還是運(yùn)算符號;具體如上所述;
      數(shù)字入棧單元,用于當(dāng)元素是數(shù)字,則將數(shù)字直接入棧;具體如上所述;
      計(jì)算單元,用于當(dāng)元素是運(yùn)算符號,就將此時處于第二棧棧頂?shù)膬蓚€數(shù)字出棧進(jìn)行運(yùn)算,并將運(yùn)算結(jié)果再入棧,直到得到最終運(yùn)算結(jié)果;具體如上所述。
      [0037]進(jìn)一步的,本發(fā)明還提供了一種移動終端,包括以上所述移動終端的計(jì)算器數(shù)據(jù)計(jì)算處理系統(tǒng)。
      [0038]綜上所述,本發(fā)明公開了一種移動終端及其計(jì)算器數(shù)據(jù)計(jì)算處理方法、系統(tǒng),所述移動終端的計(jì)算器數(shù)據(jù)計(jì)算處理方法包括:獲取用戶輸入的以數(shù)字和運(yùn)算符號為組成元素的運(yùn)算式;設(shè)置空的第一棧,從左至右遍歷所述運(yùn)算式的每個元素,將所述運(yùn)算式中的數(shù)字直接輸出,同時將所述運(yùn)算式中的運(yùn)算符號入棧,并根據(jù)運(yùn)算優(yōu)先級,控制運(yùn)算符號依次出棧輸出,生成一中間式;設(shè)置空的第二棧,從左至右遍歷所述中間式的每個元素,將所述中間式中的數(shù)字入棧,并按照所述中間式中的運(yùn)算符號,依次將處于第二棧棧頂?shù)膬蓚€數(shù)字出棧進(jìn)行運(yùn)算,并將運(yùn)算結(jié)果再入棧,直至得到最終運(yùn)算結(jié)果;使移動終端增加了計(jì)算器能夠輸入復(fù)雜運(yùn)算式并直接算出結(jié)果的功能。所述移動終端的計(jì)算器數(shù)據(jù)計(jì)算處理方法,能夠直接輸入復(fù)雜運(yùn)算式由計(jì)算器直接算出結(jié)果,而不需要用戶根據(jù)基本的加、減、乘、除運(yùn)算法則,計(jì)算多個式子來得出最終的運(yùn)算結(jié)果,給用戶提供了方便。
      [0039]應(yīng)當(dāng)理解的是,本發(fā)明的應(yīng)用不限于上述的舉例,對本領(lǐng)域普通技術(shù)人員來說,可以根據(jù)上述說明加以改進(jìn)或變換,所有這些改進(jìn)和變換都應(yīng)屬于本發(fā)明所附權(quán)利要求的保護(hù)范圍。
      【主權(quán)項(xiàng)】
      1.一種移動終端的計(jì)算器數(shù)據(jù)計(jì)算處理方法,其特征在于,包括: A、獲取用戶輸入的以數(shù)字和運(yùn)算符號為組成元素的運(yùn)算式; B、設(shè)置空的第一棧,從左至右遍歷所述運(yùn)算式的每個元素,將所述運(yùn)算式中的數(shù)字直接輸出,同時將所述運(yùn)算式中的運(yùn)算符號入棧,并根據(jù)運(yùn)算優(yōu)先級,控制運(yùn)算符號依次出棧輸出,生成一由輸出的數(shù)字和運(yùn)算符號組成的用于進(jìn)行進(jìn)一步運(yùn)算的中間式; C、設(shè)置空的第二棧,從左至右遍歷所述中間式的每個元素,將所述中間式中的數(shù)字入棧,并按照所述中間式中的運(yùn)算符號,依次將處于第二棧棧頂?shù)膬蓚€數(shù)字出棧進(jìn)行運(yùn)算,并將運(yùn)算結(jié)果再入棧,直至得到最終運(yùn)算結(jié)果。2.根據(jù)權(quán)利要求1所述的移動終端的計(jì)算器數(shù)據(jù)計(jì)算處理方法,其特征在于,所述步驟B具體包括: B1、設(shè)置空的第一棧,然后從左至右遍歷所述運(yùn)算式的每個元素,判斷元素是數(shù)字還是運(yùn)算符號; B2、當(dāng)元素為數(shù)字,則直接輸出為所述中間式的一部分; B3、當(dāng)元素為運(yùn)算符號,則判斷此時第一棧是否為空;若為空,則將所述運(yùn)算符號入棧,若不為空,則根據(jù)所述運(yùn)算符號和處于第一棧棧頂?shù)脑氐倪\(yùn)算優(yōu)先級的高低,相應(yīng)控制所述運(yùn)算符號入棧和第一棧棧內(nèi)元素出棧輸出,直至遍歷到所述運(yùn)算式的最后一個數(shù)字時,將此時第一棧內(nèi)剩余的元素全部輸出,得到所述中間式。3.根據(jù)權(quán)利要求2所述的移動終端的計(jì)算器數(shù)據(jù)計(jì)算處理方法,其特征在于,所述步驟B3具體包括: B31、若此時第一棧不為空,則判斷所述運(yùn)算符號的運(yùn)算優(yōu)先級是否高于處于第一棧棧頂?shù)脑氐倪\(yùn)算優(yōu)先級; B32、若所述運(yùn)算符號的運(yùn)算優(yōu)先級高于處于第一棧棧頂?shù)脑氐倪\(yùn)算優(yōu)先級,則將所述運(yùn)算符號入棧;若所述運(yùn)算符號的運(yùn)算優(yōu)先級不高于處于第一棧棧頂?shù)脑氐倪\(yùn)算優(yōu)先級,則將此時處于第一棧棧頂?shù)脑爻鰲]敵?,之后繼續(xù)進(jìn)行判斷,直至所述運(yùn)算符號的運(yùn)算優(yōu)先級高于處于第一棧棧頂?shù)脑氐倪\(yùn)算優(yōu)先級或者第一棧中的元素全部出棧,再將所述運(yùn)算符號入棧; B33、當(dāng)遍歷到所述運(yùn)算式的最后一個數(shù)字時,將此時第一棧內(nèi)剩余的元素全部輸出,最終得到所述中間式。4.根據(jù)權(quán)利要求1所述的移動終端的計(jì)算器數(shù)據(jù)計(jì)算處理方法,其特征在于,所述步驟C具體包括: Cl、設(shè)置空的第二棧,然后從左至右遍歷所述中間式的每個元素,判斷元素是數(shù)字還是運(yùn)算符號; C2、當(dāng)元素是數(shù)字,則將數(shù)字直接入棧; C3、當(dāng)元素是運(yùn)算符號,就將此時處于第二棧棧頂?shù)膬蓚€數(shù)字出棧進(jìn)行運(yùn)算,并將運(yùn)算結(jié)果再入棧,直到得到最終運(yùn)算結(jié)果。5.根據(jù)權(quán)利要求3所述的移動終端的計(jì)算器數(shù)據(jù)計(jì)算處理方法,其特征在于,所述數(shù)字為十進(jìn)制數(shù)字,所述運(yùn)算符號為加、減、乘、除及括號;所述運(yùn)算符號的運(yùn)算優(yōu)先級為括號最尚,乘、除次之,加、減最低。6.根據(jù)權(quán)利要求5所述的移動終端的計(jì)算器數(shù)據(jù)計(jì)算處理方法,其特征在于,所述步驟B32具體還包括: B321、若元素為運(yùn)算符號,且此時第一棧不為空,則判斷所述運(yùn)算符號是否為左括號或右括號; B322、若所述運(yùn)算符號為左括號,則將左括號直接入棧;若所述運(yùn)算符號為右括號,則將第一棧內(nèi)的元素按照由棧頂?shù)綏5椎捻樞蛞来纬鰲]敵鲋了鲋虚g式,直至左括號為止; B323、若所述運(yùn)算符號既不是左括號也不是右括號,則根據(jù)所述運(yùn)算符號和處于第一棧棧頂?shù)脑氐倪\(yùn)算優(yōu)先級的高低,相應(yīng)控制所述運(yùn)算符號入棧和第一棧棧內(nèi)元素出棧輸出至所述中間式。7.一種移動終端的計(jì)算器數(shù)據(jù)計(jì)算處理系統(tǒng),其特征在于,包括: 運(yùn)算式獲取模塊,用于獲取用戶輸入的以數(shù)字和運(yùn)算符號為組成元素的運(yùn)算式; 中間式生成模塊,用于設(shè)置空的第一棧,從左至右遍歷所述運(yùn)算式的每個元素,將所述運(yùn)算式中的數(shù)字直接輸出,同時將所述運(yùn)算式中的運(yùn)算符號入棧,并根據(jù)運(yùn)算優(yōu)先級,控制運(yùn)算符號依次出棧輸出,生成一由輸出的數(shù)字和運(yùn)算符號組成的用于進(jìn)行進(jìn)一步運(yùn)算的中間式; 計(jì)算模塊,用于設(shè)置空的第二棧,從左至右遍歷所述中間式的每個元素,將所述中間式中的數(shù)字入棧,并按照所述中間式中的運(yùn)算符號,依次將處于第二棧棧頂?shù)膬蓚€數(shù)字出棧進(jìn)行運(yùn)算,并將運(yùn)算結(jié)果再入棧,直至得到最終運(yùn)算結(jié)果。8.根據(jù)權(quán)利要求7所述的移動終端的計(jì)算器數(shù)據(jù)計(jì)算處理系統(tǒng),其特征在于,所述中間式生成模塊包括: 第一判斷單元,用于設(shè)置空的第一棧,然后從左至右遍歷所述運(yùn)算式的每個元素,判斷元素是數(shù)字還是運(yùn)算符號; 數(shù)字輸出單元,用于當(dāng)元素為數(shù)字,則直接輸出為所述中間式的一部分; 運(yùn)算符號輸出單元,用于當(dāng)元素為運(yùn)算符號,則判斷此時第一棧是否為空;若為空,則將所述運(yùn)算符號入棧,若不為空,則根據(jù)所述運(yùn)算符號和處于第一棧棧頂?shù)脑氐倪\(yùn)算優(yōu)先級的高低,相應(yīng)控制所述運(yùn)算符號入棧和第一棧棧內(nèi)元素出棧輸出,直至遍歷到所述運(yùn)算式的最后一個數(shù)字時,將此時第一棧內(nèi)剩余的元素全部輸出,得到所述中間式。9.根據(jù)權(quán)利要求7所述的移動終端的計(jì)算器數(shù)據(jù)計(jì)算處理系統(tǒng),其特征在于,所述計(jì)算模塊包括: 第二判斷單元,用于設(shè)置空的第二棧,然后從左至右遍歷所述中間式的每個元素,判斷元素是數(shù)字還是運(yùn)算符號; 數(shù)字入棧單元,用于當(dāng)元素是數(shù)字,則將數(shù)字直接入棧; 計(jì)算單元,用于當(dāng)元素是運(yùn)算符號,就將此時處于第二棧棧頂?shù)膬蓚€數(shù)字出棧進(jìn)行運(yùn)算,并將運(yùn)算結(jié)果再入棧,直到得到最終運(yùn)算結(jié)果。10.一種移動終端,其特征在于,包括如權(quán)利要求7-9任一項(xiàng)所述的計(jì)算器數(shù)據(jù)計(jì)算處理系統(tǒng)。
      【文檔編號】G06F15/02GK105930297SQ201610309913
      【公開日】2016年9月7日
      【申請日】2016年5月11日
      【發(fā)明人】俞斌, 楊維琴
      【申請人】Tcl移動通信科技(寧波)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1