版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 合肥學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系課程設(shè)計(jì)報(bào)告20092010學(xué)年第二期課程課程設(shè)計(jì)名稱(chēng)學(xué)生姓名學(xué)號(hào)專(zhuān)業(yè)班級(jí)指導(dǎo)教師 一 課程設(shè)計(jì)題目:模擬計(jì)算器程序設(shè)計(jì)內(nèi)容:設(shè)計(jì)一個(gè)程序來(lái)模擬一個(gè)簡(jiǎn)單的手持計(jì)算器。程序支持算術(shù)運(yùn)算+、-、*、/、=、以及(清除)、A(全清除)操作。程序運(yùn)行時(shí),顯示一個(gè)窗口,等待用戶(hù)輸入,用戶(hù)可以從鍵盤(pán)輸入要計(jì)算的表達(dá)式,輸入的表達(dá)式顯示在窗口中,用戶(hù)鍵入= 符號(hào)后,窗口顯示出結(jié)果。選作內(nèi)容如果用戶(hù)輸入的表達(dá)式不合法,可以判別出來(lái)并給出相應(yīng)的錯(cuò)誤提示。測(cè)試數(shù)據(jù)程序輸入不少于5種不同的表達(dá)式進(jìn)行測(cè)試。二問(wèn)題的分析此程序設(shè)計(jì)主要運(yùn)用了棧,利用棧后進(jìn)先出的原理,建立兩個(gè)棧,操作數(shù)棧和操作
2、符棧,先將數(shù)據(jù)和運(yùn)算符分別壓入這兩個(gè)棧,判斷棧內(nèi)和棧外運(yùn)算符的優(yōu)先級(jí),依據(jù)運(yùn)算符的優(yōu)先級(jí)判斷是應(yīng)再次壓入運(yùn)算符,還是將數(shù)據(jù)和運(yùn)算符彈出棧,在棧外進(jìn)行運(yùn)算,再將所得的結(jié)果壓入棧,繼續(xù)進(jìn)行與計(jì)算,直至運(yùn)算結(jié)束。例如;計(jì)算5/2+1-2*3= 操作數(shù)2入操作數(shù)棧,2運(yùn)算符”/”入運(yùn)算符棧,操作數(shù)5入操作數(shù)棧5/ 數(shù)字棧 運(yùn)算符棧。運(yùn)算符“+”入運(yùn)算符棧頂比較后,將2,5出棧運(yùn)算,并將結(jié)果入數(shù)字棧2.5 數(shù)字棧 字符棧運(yùn)算符“+”入字符棧,操作 1數(shù)1入數(shù)字棧 2.5+ 數(shù)字棧 字符棧 運(yùn)算符“”入運(yùn)算符棧頂比較后,將1, 2.5出棧運(yùn)算,并將結(jié)果壓入操作數(shù)棧3.5 運(yùn)算符“”入運(yùn)算符棧 數(shù)字棧 字符
3、棧操作數(shù)2入操作數(shù)棧,運(yùn)算符“*”入運(yùn)算符棧頂比較后壓入運(yùn)算符棧3將操作數(shù)3壓入操作數(shù)棧 2* 3.5 數(shù)字棧 字符棧當(dāng)掃描到=號(hào)時(shí),操作數(shù)3和2出棧運(yùn)算符*出棧,進(jìn)行運(yùn)算,運(yùn)算結(jié)果入操作數(shù)棧 63.5 數(shù)字棧 字符棧操作數(shù)6和2出棧,運(yùn)算符“”出棧,進(jìn)行運(yùn)算,運(yùn)算結(jié)果入操作數(shù)棧6 3.5 數(shù)字棧 字符棧 運(yùn)算符???,操作數(shù)棧中運(yùn)算為運(yùn)算2.5 結(jié)果 數(shù)字棧 字符棧分析:設(shè)置兩個(gè)棧,運(yùn)算數(shù)棧和運(yùn)算符棧,然后,自左向右掃描表達(dá)式,遇操作數(shù)進(jìn)操作數(shù)棧,遇操作符棧則與操作符棧頂運(yùn)算符比較:若當(dāng)前操作符大于操作符棧頂,則當(dāng)前操作符進(jìn)入操作符棧;若當(dāng)前操作符小于等于運(yùn)算符棧頂,次棧頂出棧,同時(shí)操作數(shù)棧頂
4、也出棧,形成一個(gè)運(yùn)算,并將運(yùn)算的結(jié)果壓入數(shù)字棧。流程圖開(kāi)始 初始化數(shù)字棧和字符棧 讀入字符c 是否為“=”號(hào) Y N N 是否為運(yùn)算符 Y 字符棧是否為空 Y N C入數(shù)字棧 Y 是否比字符棧頂優(yōu)先級(jí)高N C入字符棧 數(shù)字棧頂元素和次棧頂元素 出棧,運(yùn)算符棧頂出棧,運(yùn)算結(jié)果入數(shù)字棧 結(jié)束三算法的設(shè)計(jì)1、 創(chuàng)建一個(gè)calculator類(lèi),將計(jì)算器需要用到的函數(shù)都封裝起來(lái),形成一個(gè)整體。2、 設(shè)計(jì)成員函數(shù)及數(shù)據(jù)。首先定義兩個(gè)私有的結(jié)構(gòu)體save1和save2分別用來(lái)存放數(shù)字和運(yùn)算符,在結(jié)構(gòu)體內(nèi)定義整型的棧頂元素top,和存放數(shù)據(jù)及運(yùn)算符的數(shù)組double nMAX和char nMAX。定義了一個(gè)空
5、的構(gòu)造函數(shù)calculator()。函數(shù)bool stack1empty(save1 s),bool stack2empty(save2 s)分別判斷數(shù)字棧和字符棧是否為空,若棧頂為-1則空則返回1表示真,否則返回0表示假。函數(shù)void push1(save1 &s,double num);,void push2(save2 &s,char op);分別將數(shù)字和字符壓入棧。若所存儲(chǔ)的內(nèi)容已經(jīng)數(shù)組的最大限度,則顯示“棧已滿(mǎn)”,否則將數(shù)字和字符壓入棧頂。函數(shù)void pop1(save1 &s,double &num),void pop2(save2 &s,
6、char &op)分別是將棧內(nèi)的數(shù)字和字符彈棧,存儲(chǔ)在num和op中。首先判斷棧是否為空,若空則顯示“棧為空”,否則將棧頂元素分別賦值給num和op。函數(shù)int in(char op),int out(char op)分別判斷棧內(nèi)和棧外運(yùn)算符的優(yōu)先級(jí)。 在棧內(nèi),“+”“”返回2,“*”“/”返回4,在棧外“+”“”返回1,“*”“/”返回3,當(dāng)遇到“+” 或“”和“*”或“/”同時(shí)存在時(shí),“*”“/”的優(yōu)先級(jí)高于“+”“”,首選“*”“/”運(yùn)算。當(dāng)遇到同級(jí)運(yùn)算符時(shí)在時(shí),先進(jìn)行棧內(nèi)運(yùn)算。通過(guò)返回值的大小選擇進(jìn)行在哪里的哪種運(yùn)算。函數(shù)void count(double a,char op,
7、double b)是用來(lái)進(jìn)行計(jì)算的,并將計(jì)算的結(jié)果壓入棧。以便下一次的運(yùn)算。函數(shù)void cal ()是最主要的操作函數(shù)。首先提示輸入表達(dá)式,并在表達(dá)式之后加上=,然后輸入表達(dá)式。分別清空存放數(shù)字和字符的棧??傮w用一個(gè)while語(yǔ)句,以“=”結(jié)束。由于是用char定義的表達(dá)式expressionMAX,所以要將里面的數(shù)字提取出來(lái),轉(zhuǎn)化成int或float類(lèi)型,利用庫(kù)函數(shù)isdigit()查找,若讀入的字符為數(shù)字,則繼續(xù)判斷下一個(gè)字符,直到下個(gè)字符不是數(shù)字或者不是小數(shù)點(diǎn),即可保證該操作數(shù)是完整的小數(shù),然后將該數(shù)入操作數(shù)棧。庫(kù)函數(shù)atof()將char類(lèi)型進(jìn)行轉(zhuǎn)換。當(dāng)棧內(nèi)和棧外同時(shí)都有運(yùn)算符時(shí),利
8、用int in(char op) 和 int out(char op)函數(shù)根據(jù)其返回值的大小判斷運(yùn)算符的優(yōu)先級(jí),判斷是將棧外的運(yùn)算符壓入棧還是將站內(nèi)的數(shù)據(jù)及運(yùn)算符彈出棧進(jìn)行運(yùn)算。若為后者,運(yùn)算完后再將所得的結(jié)果壓入棧頂,再次進(jìn)行判斷,直至棧頂為空,運(yùn)算結(jié)束。主函數(shù)void main(),首先提示此程序設(shè)計(jì)者的信息。然后進(jìn)行正式的計(jì)算環(huán)節(jié),將整個(gè)主函數(shù)分為part1 和part2兩部分,運(yùn)用goto語(yǔ)句使程序在執(zhí)行的流程可以跳轉(zhuǎn)到part1部分,進(jìn)行多次運(yùn)算。定義calculator mycal,進(jìn)行運(yùn)算。運(yùn)算結(jié)束提示是否繼續(xù)進(jìn)行運(yùn)算,輸入選擇y(是) n(否) A(退出)利用while語(yǔ)句,當(dāng)
9、輸入A時(shí)結(jié)束運(yùn)算。當(dāng)輸入“y”時(shí),運(yùn)用system("cls")對(duì)前面的運(yùn)算進(jìn)行全清除,然后利用goto語(yǔ)句跳轉(zhuǎn)到part1再次進(jìn)行計(jì)算。當(dāng)輸入“n”時(shí)停止運(yùn)算,輸出“謝謝使用!”程序運(yùn)行結(jié)束。類(lèi):calculator數(shù)據(jù):struct save1struct save1函數(shù):calculator();bool stack1empty(save1 s);bool stack2empty(save2 s);void push1(save1 &s,double num);void push2(save2 &s,char op);void pop1(save1 &
10、amp;s,double &num);void pop2(save2 &s,char &op);int in(char op);int out(char op);void count(double a,char op,double b);void cal();系統(tǒng)類(lèi)圖基類(lèi)的數(shù)據(jù)成員和函數(shù)成員描述 屬性和方法定義類(lèi)名成員類(lèi)別類(lèi)型成員名描述calculator屬性structSave1存儲(chǔ)數(shù)字Struct Save2存儲(chǔ)運(yùn)算符Boolstack1empty(save1s)判斷數(shù)字棧是否為空Boolstack2empty(save2s)判斷運(yùn)算符棧是否為空voidpush1(
11、save1&s,doublenum)將數(shù)據(jù)壓入數(shù)字棧voidpush2(save2 &s,char op)將運(yùn)算符壓入運(yùn)算符棧voidpop1(save1&s,double&num)將棧頂?shù)臄?shù)據(jù)元素取出,存放在num中voidintintvoidvoidpop2(save2 &s,char &op)in(char op)out(char op)count(double a,char op,double b)cal()將棧頂?shù)倪\(yùn)算符取出,存放在op中在棧內(nèi)優(yōu)先級(jí)的判斷棧外優(yōu)先級(jí)的判斷進(jìn)行計(jì)算并將所得的結(jié)果壓入棧頂主要進(jìn)行運(yùn)算的函數(shù)用戶(hù)手冊(cè)程序運(yùn)行時(shí)
12、,首先顯示此程序設(shè)計(jì)者的信息。提示歡迎使用計(jì)算機(jī)請(qǐng)輸入表達(dá)式(輸完之后請(qǐng)加=),然后輸入所要進(jìn)行計(jì)算的表達(dá)式,進(jìn)行計(jì)算。計(jì)算結(jié)束后提示:繼續(xù)計(jì)算嗎?,輸入y表示同意繼續(xù)計(jì)算,輸入n表示結(jié)束計(jì)算,并顯示謝謝使用!輸入A時(shí)退出,選擇你所需的形式,進(jìn)行計(jì)算。(四) 上機(jī)調(diào)試過(guò)程 (1) 剛開(kāi)始只能進(jìn)行兩個(gè)數(shù)字的運(yùn)算,不能進(jìn)行多個(gè)數(shù)字的計(jì)算,想到用for循環(huán)解決輸入數(shù)字上的問(wèn)題,但只能進(jìn)行一種運(yùn)算,達(dá)不到多重運(yùn)算的要求。 (2)想到在用for循環(huán)解決次問(wèn)題,但改來(lái)改去都弄不好,最后經(jīng)老師提示,運(yùn)用棧的知識(shí)解決問(wèn)題。 (3)開(kāi)始對(duì)棧一點(diǎn)都不了解,全部程序都需要重新寫(xiě),完全沒(méi)有一點(diǎn)頭緒,把課本關(guān)于棧的部分
13、看了好多遍,和同學(xué)討論,大概知道棧是什么樣的了,開(kāi)始寫(xiě)我的程序了。 (4)本來(lái)只是考慮到建立一個(gè)數(shù)字棧的,但這樣運(yùn)算符的優(yōu)先級(jí)不能進(jìn)行,得不出正確的結(jié)果,經(jīng)同學(xué)提示,建立兩個(gè)棧,一個(gè)存儲(chǔ)數(shù)字,另一個(gè)存放運(yùn)算符,判斷運(yùn)算符的優(yōu)先級(jí)以后,將數(shù)字和運(yùn)算符彈出棧,進(jìn)行計(jì)算,把計(jì)算的結(jié)果壓入棧,以便下一次運(yùn)算。 (5)解決了多個(gè)多個(gè)數(shù)和多個(gè)運(yùn)算符計(jì)算的問(wèn)題,又想到了可不可以進(jìn)行多次運(yùn)算,當(dāng)想結(jié)束時(shí),按指定的鍵,結(jié)束運(yùn)算,想到了用goto語(yǔ)句進(jìn)行跳轉(zhuǎn),達(dá)到循環(huán)計(jì)算的目的。說(shuō)明:此程序清除的功能還不能實(shí)現(xiàn),只能進(jìn)行全清除,修改了好長(zhǎng)時(shí)間也未能找到一個(gè)好方法解決。(五) 運(yùn)行實(shí)例選擇繼續(xù)運(yùn)算,跳轉(zhuǎn)到part1
14、部分。 經(jīng)驗(yàn)與體會(huì)此次c+課程設(shè)計(jì),在指導(dǎo)教師的精心教導(dǎo)下,我們學(xué)會(huì)了如何用C+編寫(xiě)一個(gè)簡(jiǎn)單的應(yīng)用程序。首先要對(duì)程序的設(shè)計(jì)要求有一個(gè)比較明確的認(rèn)識(shí),然后系統(tǒng)分析與系統(tǒng)設(shè)計(jì),最后是代碼設(shè)計(jì)與調(diào)試。程序?qū)崿F(xiàn)上,設(shè)計(jì)了簡(jiǎn)單的查詢(xún)界面,將各個(gè)功能集中出來(lái)按照程序編寫(xiě)原則,便于查詢(xún)。根據(jù)C+課程所學(xué)的概念、理論和方法,按照C+程序設(shè)計(jì)的基本步驟,設(shè)計(jì)出一個(gè)適當(dāng)規(guī)模的程序;進(jìn)一步加深對(duì)C+語(yǔ)言的理解和掌握。理論聯(lián)系實(shí)際,加深和鞏固所學(xué)的理論知識(shí),提高實(shí)踐能力和計(jì)算機(jī)的綜合運(yùn)用能力。我們編寫(xiě)程序的過(guò)程是辛苦與快樂(lè)的,程序的編寫(xiě)原則很重要,只要我們?cè)诰幊蹋捅仨毑粩喔倪M(jìn),才能更好提高編程能力。課程設(shè)計(jì)是培養(yǎng)學(xué)
15、生綜合運(yùn)用所學(xué)知識(shí)、發(fā)現(xiàn)、提出、分析和解決實(shí)際問(wèn)題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對(duì)學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過(guò)程.隨著科學(xué)技術(shù)發(fā)展的日新日異,C+已經(jīng)成為當(dāng)今計(jì)算機(jī)應(yīng)用中空前活躍的領(lǐng)域, 在生活和學(xué)習(xí)中可以說(shuō)得是無(wú)處不在。因此作為二十一世紀(jì)的大學(xué)來(lái)說(shuō)掌握C+軟件開(kāi)發(fā)技術(shù)是十分重要的。此次課程設(shè)計(jì)使我們將理論教學(xué)中涉及到的知識(shí)點(diǎn)貫穿起來(lái),對(duì)不同的數(shù)據(jù)類(lèi)型、程序控制結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)作一比較和總結(jié),結(jié)合設(shè)計(jì)題目進(jìn)行綜合性應(yīng)用,對(duì)所學(xué)知識(shí)達(dá)到融會(huì)貫通的程度。通過(guò)課程設(shè)計(jì),使我們?cè)诟鞣矫娴哪芰?yīng)該得到鍛煉,不僅進(jìn)一步鞏固、加深學(xué)生所學(xué)專(zhuān)業(yè)課程C+語(yǔ)言教程的基本理論知識(shí),理論聯(lián)系實(shí)際,進(jìn)一步培養(yǎng)學(xué)生綜合
16、分析問(wèn)題,解決問(wèn)題的能力。而且全面考核我們所掌握的基本理論知識(shí)及其實(shí)際業(yè)務(wù)能力,從而達(dá)到提高學(xué)生素質(zhì)的最終目的。并且利用所學(xué)知識(shí),開(kāi)發(fā)小型應(yīng)用系統(tǒng),掌握運(yùn)用C+語(yǔ)言編寫(xiě)調(diào)試應(yīng)用系統(tǒng)程序,訓(xùn)練獨(dú)立開(kāi)發(fā)應(yīng)用系統(tǒng),進(jìn)行數(shù)據(jù)處理的綜合能力。還使我們懂得了對(duì)于給定的設(shè)計(jì)題目,如何進(jìn)行分析,理清思路,并給出相應(yīng)的數(shù)學(xué)模型。 同時(shí)也使我們掌握自頂而下的設(shè)計(jì)方法,將大問(wèn)題進(jìn)行模塊化,領(lǐng)會(huì)結(jié)構(gòu)化程序設(shè)計(jì)的方法。熟練掌握C+語(yǔ)言的基本語(yǔ)法,靈活運(yùn)用各種數(shù)據(jù)類(lèi)型。進(jìn)一步掌握在集成環(huán)境下如何調(diào)試程序(單步調(diào)試,設(shè)置斷點(diǎn)、觀(guān)察表達(dá)式,分塊調(diào)試)和修改程序。這次課程設(shè)計(jì)歷時(shí)二周,通過(guò)這次設(shè)計(jì)讓我對(duì)C+有了更新的認(rèn)識(shí),認(rèn)識(shí)
17、到了它的實(shí)際應(yīng)用價(jià)值,可以及大的減少工作量,節(jié)省人力物力,同時(shí)也讓我認(rèn)識(shí)發(fā)現(xiàn)到自己再學(xué)習(xí)上的存在的不足,再以后的生活學(xué)習(xí)中要多加練習(xí)編程,力求改變自己的不足。課程設(shè)計(jì)學(xué)習(xí)讓我學(xué)到了很多,學(xué)會(huì)了用所學(xué)習(xí)的知識(shí)去解決實(shí)際問(wèn)題,一開(kāi)始拿到題目,根本就不知道要從什么地方下手,感覺(jué)寫(xiě)這個(gè)也不行寫(xiě)那個(gè)不行,但經(jīng)過(guò)時(shí)間的磨練以及和同學(xué)之間的交流開(kāi)始有點(diǎn)頭緒,腦海中有個(gè)大概,但還是無(wú)法全部寫(xiě)出來(lái),只能實(shí)現(xiàn)一部分功能,而且在寫(xiě)程序時(shí)遇到了很多問(wèn)題,程序出錯(cuò)自己無(wú)法修改,后來(lái)經(jīng)過(guò)學(xué)長(zhǎng)的指導(dǎo)和同學(xué)以及指導(dǎo)老師的幫助大部分功能都可以實(shí)現(xiàn),自己再慢慢摸索,程序終于寫(xiě)出來(lái)了,這期間感覺(jué)以前好多不懂的,通過(guò)這次的學(xué)習(xí)都可以
18、一一解決,但發(fā)現(xiàn)自己也有很多的不足,很多以前學(xué)過(guò)的知識(shí)點(diǎn)都不記得了,而且無(wú)法將它們聯(lián)系在一起,除了課本上的知識(shí)還有好多跟本課程有關(guān)的知識(shí)點(diǎn)都不懂,所以通過(guò)這次的學(xué)習(xí),我知道自己不僅僅要把課本上的東西學(xué)好,還要了解相關(guān)的東西,讓自己的知識(shí)面更廣,同時(shí)我也更深刻的認(rèn)識(shí)到了任何事都不可能一個(gè)人獨(dú)立完成,同學(xué)和老師的幫助是非常重要的。(六) 參考資料1 鄭莉 等編著C+語(yǔ)言程序設(shè)計(jì)(第三版)北京:清華大學(xué)出版社2 鄭莉 等編著C+語(yǔ)言程序設(shè)計(jì)(第三版)學(xué)生用書(shū)北京: 清華大學(xué)出版社3 劉振安 等編著C+程序設(shè)計(jì)課程設(shè)計(jì) 機(jī)械工業(yè)出版社4 吳乃陵 等編著C+程序設(shè)計(jì)北京:高等教育出版社5 李春葆 等編著
19、C+程序設(shè)計(jì)學(xué)習(xí)與上機(jī)實(shí)驗(yàn)指導(dǎo) 北京:清華大學(xué)出版社6 范輝 等編著Visual C+6.0程序設(shè)計(jì)簡(jiǎn)明教程 高等教育出版社7 李龍澍C+程序設(shè)計(jì)實(shí)訓(xùn)教程北京:清華大學(xué)出版社 8 洪國(guó)勝 等編著 C+ Builder程序設(shè)計(jì)輕松上手北京:清華大學(xué)出版社9 寧正元數(shù)據(jù)結(jié)構(gòu)(c語(yǔ)言) 南京:東南大學(xué)出版社。2000年6月第1版10 嚴(yán)蔚敏等 數(shù)據(jù)結(jié)構(gòu)(c語(yǔ)言版) 北京:清華大學(xué)出版社,1997年4月第1版。11 胡學(xué)鋼等數(shù)據(jù)結(jié)構(gòu)算法設(shè)計(jì)指導(dǎo)北京:清華大學(xué)出版社,1999年 第1版。 源程序:#include <stdlib.h>#include<iostream.h>#in
20、clude<ctype.h> # define MAX 1000class calculatorprivate:struct save1 /存儲(chǔ)數(shù)字double nMAX;int top;stack1;struct save2 /存儲(chǔ)運(yùn)算符char nMAX;int top;stack2;public:calculator(); /空的構(gòu)造函數(shù)bool stack1empty(save1 s);bool stack2empty(save2 s);void push1(save1 &s,double num);void push2(save2 &s,char op);
21、void pop1(save1 &s,double &num);void pop2(save2 &s,char &op);int in(char op);int out(char op);void count(double a,char op,double b);void cal();bool calculator:stack1empty(save1 s) /判斷數(shù)字棧是否為空if(s.top=-1)return 1;else return 0;bool calculator:stack2empty(save2 s)/判斷運(yùn)算符棧是否為空if(s.top=-1)
22、return 1;else return 0;void calculator:push1(save1 &s,double num)/將數(shù)據(jù)壓入數(shù)字棧if(s.top=MAX-1)cout<<"棧已滿(mǎn) "elses.top+;s.ns.top=num;void calculator:push2(save2 &s,char op)/將運(yùn)算符壓入運(yùn)算符棧if(s.top=MAX-1)cout<<"棧已滿(mǎn)"elses.top+;s.ns.top=op;void calculator:pop1(save1 &s,do
23、uble &num)/將棧頂?shù)臄?shù)據(jù)元素取出,存放在num中if(s.top=-1)cout<<"棧為空"<<endl;else num=s.ns.top;s.top-;void calculator:pop2(save2 &s,char &op)/將棧頂?shù)倪\(yùn)算符取出,存放在op中if(s.top=-1)cout<<"棧為空"<<endl;else op=s.ns.top;s.top-;int calculator:in(char op)/在棧內(nèi)優(yōu)先級(jí)的判斷if(op='-
24、39;|op='+')return 2;else if(op='*'|op='/')return 4;else return -1;int calculator:out(char op)/早棧外優(yōu)先級(jí)的判斷if(op='-'|op='+')return 1;else if(op='*'|op='/')return 3;else return -1;void calculator:count(double a,char op,double b)/進(jìn)行計(jì)算并將所得的結(jié)果壓入棧頂doubl
25、e sum;switch(op)case '+':sum=a+b;break;case '-':sum=a-b;break;case '*':sum=a*b;break;case '/':sum=a/b;break;default:break;push1(stack1,sum);void calculator:cal(void)int i=0,j;double a,b,c;char expressionMAX,operate,temp20;cout<<"請(qǐng)輸入表達(dá)式(輸完之后請(qǐng)加=):"cin>
26、;>expression;stack1.top=-1;/清空數(shù)字棧stack2.top=-1;/清空運(yùn)算符棧while(expressioni!='=')/以=號(hào)結(jié)尾if(isdigit(expressioni)/*若讀入的字符為數(shù)字,則繼續(xù)判斷下一個(gè)字符,直到下個(gè)字符不是數(shù)字或者不是小數(shù)點(diǎn),即可保證該操作數(shù)是完整的小數(shù),然后將該數(shù)入操作數(shù)棧*/j=0;while(isdigit(expressioni)|expressioni='.')tempj+=expressioni;i+;tempj='0'c=atof(temp);/char類(lèi)型進(jìn)行轉(zhuǎn)換push1(stack1,c);elseif(expressioni='-'|expressioni='+'|expressioni='*'|expressioni='/')/若讀入的字符為運(yùn)算符的情況if(in(stack2.nstack2.top)<out(expressioni)|stack2empty(stack2)/讀入的運(yùn)算符與運(yùn)算符棧頂元素相比,并進(jìn)行相應(yīng)的操作push2(stack2,expressioni);i+;else pop1(stack1,a);pop1(stack1,b);pop2(
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 課題申報(bào)參考:巨災(zāi)指數(shù)保險(xiǎn)調(diào)節(jié)下政府應(yīng)急物資采儲(chǔ)策略?xún)?yōu)化研究
- 課題申報(bào)參考:教育強(qiáng)國(guó)與新質(zhì)生產(chǎn)力研究
- 2025年度個(gè)人屋頂光伏安裝合同范本3篇
- 2025年塔城b2考貨運(yùn)資格證要多久
- 2025個(gè)人蝦池承包養(yǎng)殖資源整合與開(kāi)發(fā)合同3篇
- 十佳書(shū)香家庭事跡
- 二零二五版智能農(nóng)業(yè)監(jiān)測(cè)系統(tǒng)采購(gòu)合同提升農(nóng)業(yè)效率4篇
- 二零二五學(xué)校與家長(zhǎng)聯(lián)合實(shí)施家校共育行動(dòng)計(jì)劃3篇
- 2025年度北京商品房買(mǎi)賣(mài)合同(含智能家居系統(tǒng)升級(jí)承諾)3篇
- 2025年個(gè)人間信息保密與責(zé)任承擔(dān)協(xié)議書(shū)3篇
- 2024版?zhèn)€人私有房屋購(gòu)買(mǎi)合同
- 2024爆炸物運(yùn)輸安全保障協(xié)議版B版
- 2025年度軍人軍事秘密保護(hù)保密協(xié)議與信息安全風(fēng)險(xiǎn)評(píng)估合同3篇
- 《食品與食品》課件
- 讀書(shū)分享會(huì)《白夜行》
- 光伏工程施工組織設(shè)計(jì)
- DB4101-T 121-2024 類(lèi)家庭社會(huì)工作服務(wù)規(guī)范
- 化學(xué)纖維的鑒別與測(cè)試方法考核試卷
- 2024-2025學(xué)年全國(guó)中學(xué)生天文知識(shí)競(jìng)賽考試題庫(kù)(含答案)
- 自動(dòng)駕駛汽車(chē)道路交通安全性探討研究論文
- 術(shù)后譫妄及護(hù)理
評(píng)論
0/150
提交評(píng)論