• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于單鏈表的顯示全計算過程計算器的設計

      2016-03-07 12:49:27張慧寧
      電腦知識與技術 2015年34期
      關鍵詞:計算器算法

      張慧寧

      摘要:該文對過程全顯示計算器的算法進行分析和探討,采用單鏈表實現(xiàn)顯示計算全過程的計算器。該計算器通過詞法和語法分析,對數(shù)據(jù)和運算符分別進行拆分并存儲于單鏈表中,采用遞歸運算,得到計算過程,運算后遍歷輸出,直至得到最終結果。支持的運算功能有:四則運算、括號運算、冪運算等。過程全顯示計算器解決了常見計算器只能顯示計算結果的問題。

      關鍵詞:全計算過程顯示;計算器;單鏈表;算法;遞歸

      中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2015)34-0097-02

      Abstract: In this paper ,we analyzed and discussed the calculators algorithm, using single table show the whole process of calculator to calculate. The calculator, the data and operator split respectively and stored in a single table by lexical and syntax analysis, using recursive algorithm, get the calculation process, then operation after traversal output, until get the final result. Support operation function are: arithmetic, bracket operation, power operation, etc. Process all the calculator have solved the problem of common calculator can only display results.

      Key words: show the whole calculate process; calculator; single table; algorithm; recursive

      1概述

      計算器是生活和辦公中最常用的工具之一,有著強大的計算功能以及便攜等特性,使用場所非常廣泛。目前市面上流通的計算器絕大部分都只能顯示計算結果,對于計算過程的描述不做顯示,對使用造成很多不便。為此,本文基于單鏈表對現(xiàn)有計算器進行改進,使其能顯示每一步的計算過程,解決了計算器只能顯示計算結果問題。

      2 設計思想

      系統(tǒng)首先對輸入的計算過程進行詞法分析,其任務是從左到右逐步掃描計算過程,并將其獨立拆分為一個個具有完整意義的數(shù)據(jù)(1、2、3……等)、運算符(+、-、*、/、()、[]等)。

      其次,系統(tǒng)對拆分出來的數(shù)據(jù)進行語法分析。在這一步,系統(tǒng)在詞法分析的基礎上,對拆分出來的數(shù)據(jù)和運算符進行語法分析,主要功能是,判斷輸入數(shù)據(jù)是否合法(是否包含字母、中文等非法數(shù)據(jù)),判斷運算符運用是否合理,是否有出現(xiàn)類似++、--、[+]等錯誤使用運算符情況,如無誤,將數(shù)據(jù)和運算符依次存出單鏈表中。

      最后,在保證語法無誤后,遍歷鏈表,判斷運算符優(yōu)先級,根據(jù)運算符優(yōu)先級進行計算,并將結果存放回鏈表,單步遍歷運算后得到的鏈表并輸出單步計算結果,顯示單步計算后的表達式信息,通過遞歸這一操作,直至運算符數(shù)目為0,則此步驟為最終結果,同時得到所有運算過程。

      3 系統(tǒng)具體實現(xiàn)

      3.1系統(tǒng)主要功能

      計算器的主要功能如下:

      運算表達式語法錯誤與否判斷:如1+1、3*8、(20+10)^2等為正確表達式,可正常往下運行;而對于(*1)、^2+3、1+++5等則為錯誤表達式,計算器會提示用戶輸入運算表達式錯誤,要求用戶重新輸入。

      基本四則運算:如+、-、*、/ 等。

      指數(shù)冪運算等:主要是次方(^)、二次方根($)等。

      括號運算:()。

      3.2詞法分析設計

      詞法分析從左到右依次掃描運算表達式,將表達式切割為數(shù)據(jù)和運算符,主要步驟如下:讀取第一位字符,判斷數(shù)據(jù)還是表達式;接著讀取第二位,判斷數(shù)據(jù)還是表達式,如果跟前一位類型相同,則繼續(xù)讀取下一位字符,直至后一位同前一位不同為數(shù)據(jù)或表達式,切割,存入單鏈表,然后繼續(xù)從下一位字符開始進行遞歸操作,直至結束。流程圖如下:

      3.3語法分析設計

      語法分析遍歷單鏈表,依次判斷表達式是否符合語法,若不符合,反饋錯誤信息。具體步驟如下:

      1)判斷第一位是否為符號,若是,則錯誤,反饋錯誤信息,否則,繼續(xù);

      2)判斷是否出現(xiàn)雙符號或者多符號,若出現(xiàn),則錯誤,返回錯誤信息,否則,繼續(xù);

      3)判斷最后一位是否為符號位,所是,則錯誤,反饋錯誤信息,否則,結束。

      流程圖如圖3。

      3.4運算符優(yōu)先級判定及計算輸出設計

      運算符優(yōu)先級判定主要是根據(jù)數(shù)學運算規(guī)則對運算符優(yōu)先級進行判定,并根據(jù)高優(yōu)先級先運算原則進行運算。運算符優(yōu)先級定義如下:

      ^、$為第一級運算符;

      ()、[]為二級運算符;

      *、/為三級運算符;

      +、-為四級運算符;

      運算時,先判定是否有上一級運算符,如有,則先計算上一級運算符,并將上一級運算符計算所得結果存回單鏈表中,然后遍歷輸出,遞歸執(zhí)行,直至運算符數(shù)目為0,所得結果即為最終結果。具體如下:

      遍歷整個單鏈表,判斷是否有第一級運算符,如有,則進行第一級運算符運算,得到運算結果,假設運算符所在位置為N,則將結果保存到N-1節(jié)點中,接著刪除N、N+1節(jié)點,遍歷鏈表并輸出,得到一級運算符計算過程。

      重復步驟,依次判斷是否有第二級運算符,第三級運算符,第四級運算符直至運算符數(shù)目為空,所得結果即為最終結果,運算結束。具體流程圖如下:

      5 結論

      本文基于常用的數(shù)據(jù)結構單鏈表,拓展生活中最常用的計算器的功能,使其能顯示計算過程,雖然其目前功能較為簡單,但由于其基于詞法分析,較容易拓展。由于使用單鏈表結構,沒有運算字符上限,較為實用。

      參考文獻:

      [1] Cormen T H,Leiserson C E,Rivest R L,ed al.算法導論[M].3版.北京:機械工業(yè)出版社,2012.

      [2] 嚴蔚敏.數(shù)據(jù)結構[M].2版.北京:清華大學出版社,2008.

      [3] 戴建國.遞歸算法應用分析[J].軟件設計開發(fā),2008(28).

      [4] 張耀民.遞歸法在程序設計中的應用與分析[J].設計研發(fā),2013(13).

      [5] 黎遠松.基于樹的遞歸算法分析技術[J]. 四川理工學院學報:自然科學版, 2012(4).

      猜你喜歡
      計算器算法
      基于MapReduce的改進Eclat算法
      [計算器不是萬能的]
      Travellng thg World Full—time for Rree
      進位加法的兩種算法
      算法初步兩點追蹤
      高中數(shù)學教學中應用圖形計算器的實踐探索
      基于增強隨機搜索的OECI-ELM算法
      一種改進的整周模糊度去相關算法
      一個損壞的計算器
      讀寫算(中)(2015年10期)2015-11-07 07:24:10
      一個損壞的計算器
      任丘市| 陆河县| 岳普湖县| 达日县| 龙州县| 连江县| 仙居县| 准格尔旗| 和顺县| 桐柏县| 太仆寺旗| 璧山县| 云霄县| 绥中县| 保靖县| 沂水县| 北流市| 泾川县| 绵竹市| 泰兴市| 五台县| 博罗县| 信阳市| 柘城县| 台江县| 崇礼县| 清河县| 大厂| 太谷县| 定远县| 黄陵县| 得荣县| 昌邑市| 航空| 商水县| 固安县| 武安市| 城固县| 福鼎市| 金寨县| 黎川县|