版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、一、實(shí)驗(yàn)設(shè)計(jì)方案1、實(shí)驗(yàn)內(nèi)容與目的(簡單介紹實(shí)驗(yàn)內(nèi)容,說明實(shí)驗(yàn)?zāi)康模?shí)驗(yàn)?zāi)康模簩?shí)現(xiàn)撲克牌游戲:對于任意的四個1到13的整數(shù)(四張撲克牌),求能算出24的表達(dá)式;運(yùn)算符有()+-*/;若無解則輸出相應(yīng)的信息。實(shí)驗(yàn)內(nèi)容:你的具體選擇(要詳細(xì))文件輸入(input.txt)輸出(output.txt),輸出全部結(jié)果;2、實(shí)驗(yàn)準(zhǔn)備工作(闡述解決問題所涉及的算法思想,至少要畫一個算法流程圖來說明)本次實(shí)驗(yàn)相當(dāng)于,給出四個數(shù)字,要求,在其間添加運(yùn)算符和括號,使得計(jì)算結(jié)果等于24。括號的放置即為決定哪幾個數(shù)先進(jìn)行計(jì)算。所以,我們先確定首先進(jìn)行計(jì)算的兩個相鄰的數(shù),計(jì)算完成后,就相當(dāng)于剩下三個數(shù)字,仍需要在它們
2、之間添加符號;然后再決定在這三個數(shù)中哪兩個相鄰的數(shù)先計(jì)算。由此,我們就成功解決了數(shù)字的運(yùn)算次序問題,此時不需要再考慮不同運(yùn)算符號的優(yōu)先級問題,因?yàn)槔ㄌ柕膬?yōu)先級高于加減乘除。通過循環(huán),我們可以得到第一第二第三次計(jì)算的運(yùn)算符,再通過計(jì)算,就可以得出和,若和等于24,即為所求解。在輸出格式中,由于括號的放置共六種情況,故根據(jù)計(jì)算先后順序的不同,輸出時在不同地方放置括號;以下為循環(huán)計(jì)算的流程圖:先算個擇計(jì)兩澈選行的郴先算個擇計(jì)兩澈選行的郴第一個數(shù)字第一個數(shù)字第二個數(shù)字AVr*第三個數(shù)字第四個數(shù)字第一個數(shù)字第二個數(shù)字AVr*第三個數(shù)字第三個符號表示循環(huán)獲??;II表示十算數(shù)值以下為計(jì)算函數(shù)的流程圖:二、實(shí)
3、驗(yàn)步驟、測試與結(jié)果分析1、源程序的設(shè)計(jì)(在此附上源程序(cpp文件)清單)#include#include#includeusingnamespacestd;charsign4=+,-,*,/;/定義一個全局變量,用于儲存加減乘除符號,方便下面符號判斷classgame24point/24點(diǎn)紙牌游戲類private:doublea4;/為實(shí)現(xiàn)精確計(jì)算,防止計(jì)算結(jié)果為小數(shù)卻被強(qiáng)制轉(zhuǎn)換為整數(shù),采用double變量public:game24point();/構(gòu)造函數(shù)doublecalcute(double,double,char);/計(jì)算函數(shù),給出一個符號兩個有順序的數(shù),計(jì)算結(jié)果voidsearch
4、();/搜索函數(shù),用于尋找合適的解voidprint();/打印得到的四張紙牌的數(shù)值;game24point:game24point()charch4;/由于紙牌中除了數(shù)字還有AJQK等字符,故使用字符數(shù)組ifstreaminfile(input.txt);if(!infile)/若打開失敗cout打開文件input.txt失??!endl;exit(1);for(inti=0;ichi;/在input文件中讀取數(shù)據(jù)cout#endl;cout#cout#cout#正在從input.txt中讀取數(shù)據(jù)#endl;#endl;#endl;cout#endl;for(i=0;i4;i+)if(chi=
5、A)ai=10;elseif(chi=J)ai=11;elseif(chi=Q)ai=12;elseif(chi=K)ai=13;elseif(chi=1)ai=1;elseif(chi=2)ai=2;elseif(chi=3)ai=3;elseif(chi=4)ai=4;elseif(chi=5)ai=5;elseif(chi=6)ai=6;elseif(chi=7)ai=7;elseif(chi=8)ai=8;elseif(chi=9)ai=9;elsecout第i+l個數(shù)據(jù)輸入有誤!endl;exit(1);/紙牌字符轉(zhuǎn)換為數(shù)值infile.close();doublegame24poi
6、nt:calcute(doublea,doubleb,charindex)if(index=+)returna+b;/若為+,則返回相應(yīng)結(jié)果elseif(index=-)returna-b;elseif(index=*)returna*b;elseif(index=/)if(b!=0)returna/b;/只有當(dāng)分母不為0時,返回結(jié)果voidgame24point:search()doubletemp3,tem2;/第一個符號放置后,經(jīng)過計(jì)算后相當(dāng)于剩下三個數(shù),這個數(shù)組用于存儲這三個數(shù)doublesum;/求得的和intjudge=0;/判斷是否找到一個合理的解ofstreamoutfile(
7、output.txt,ios:app);/以輸出的方式打開文件if(!outfile)/若文件打開失敗cout打開文件output.txt失敗endl;exit(1);cout#endl;cout#endl;cout#正在計(jì)算結(jié)果,請等待#endl;cout#endl;cout#endl;outfile=endl;outfile#endl;outfile#endl;outfile#本次24點(diǎn)游戲求得結(jié)果如下#endl;outfile#endl;outfile#endl;for(inti=0;i4;i+)/第一次放置的符號for(intj=0;j4;j+)/第二次放置的符號for(intk=0;
8、k4;k+)/第三次放置的符號for(intm=0;m3;m+)/首先計(jì)算的兩個相鄰數(shù)字,共有3種情況,相當(dāng)于括號的作用if(am+1=0&signi=/)break;tempm=calcute(am,am+1,signi);temp(m+1)%3=a(m+2)%4;temp(m+2)%3=a(m+3)%4;/先確定首先計(jì)算的兩個數(shù)字,計(jì)算完成相當(dāng)于剩下三個數(shù),按順序儲存在temp數(shù)組中for(intn=0;n2;n+)/三個數(shù)字選出先計(jì)算的兩個相鄰數(shù)字,兩種情況,相當(dāng)于第二個括號if(tempn+1=0&signj=/)break;temn=calcute(tempn,tempn+1,sig
9、nj);tem(n+1)%2=temp(n+2)%3;/先確定首先計(jì)算的兩個數(shù)字,計(jì)算完成相當(dāng)于剩下兩個數(shù),按順序儲存在temp數(shù)組中if(tem1=0&signk=/)break;sum=calcute(tem0,tem1,signk);/計(jì)算和if(sum=24)/若和為24judge=1;/判斷符為1,表示已求得解if(m=0&n=0)outfile(a0signia1)signja2)signka3=sumendl;elseif(m=0&n=1)outfile(a0signia1)signk(a2signja3)=sumendl;elseif(m=1&n=0)outfile(a0sig
10、nj(a1signia2)signka3=sumendl;elseif(m=1&n=1)outfilea0signk(a1signia2)signja3)=sumendl;elseif(m=2&n=0)outfile(a0signja1)signk(a2signia3)=sumendl;elseif(m=2&n=0)outfilea0signk(a1signj(a2signia3)=sumendl;/m=0,l,2n=0,1表示六種括號放置可能,并按照這六種可能輸出相應(yīng)的格式的計(jì)算式if(judge=O)outfile這四張撲克牌無法找到一個合理的解endl;/如果沒有找到結(jié)果,符號位為0ou
11、tfile=endl;outfileendlendl;outfile.close();cout計(jì)算完成,結(jié)果已保存在output.txt文件中!endl;voidgame24point:print()cout讀取成功!endl;for(inti=0;i4;i+)cout第i+l張牌aiendl;intmain(void)game24pointobj;obj.print();coutendl;obj.search();coutFilesCYuYaiibiiiwTtep.ezettnnttItit正在從input.txt中讀取數(shù)據(jù)#tt鞏壬壬W壬51234讀nnnn10878正在計(jì)算結(jié)杲,請等待林
12、卄tttt#正在計(jì)算結(jié)杲,請等待#Ittt#:十算完成,結(jié)果巨葆存在otU;卩皿上set文件申辛倩按任意犍繼續(xù)Output.txt輸出截圖如下:3、實(shí)驗(yàn)總結(jié)(是否成功解決問題,總結(jié)實(shí)驗(yàn)中最有價(jià)值的內(nèi)容,程序能夠在哪些方面進(jìn)一步改善,自我評價(jià)成敗得失)試驗(yàn)中,我們按照從簡單到復(fù)雜的方法,一步一個腳印編寫代碼,使得程序不易發(fā)生錯誤,并且容易更正,編寫出來的程序代碼簡潔明朗,效率較高;通過對例題的學(xué)習(xí),我們最終將正確的代碼編寫出,并在不斷地修改之下做到方便用戶使用的要求;編碼的速度有一個從慢到快的過程,在本次試驗(yàn)中,我們的速度依然比較慢,這看出我們平時編碼比較少,缺乏熟練度,并對算法了解不深入;但是
13、我們的代碼看起來仍然有些凌亂,效率還沒有帶到真正的高效,每次運(yùn)行都需要等待幾秒鐘。再以后我們將通過練習(xí)基礎(chǔ)功,簡化程序代碼,實(shí)現(xiàn)簡單代碼完善功能的理想。編碼要盡量使程序簡單,采用最切實(shí)可靠的算法,實(shí)現(xiàn)封裝,不同部分的代碼應(yīng)分工明確,最后由主函數(shù)統(tǒng)一調(diào)用;編寫完成后先自己檢查一遍代碼,然后由機(jī)器檢測,找出錯誤的根源,從不同角度思考如何解決問題;測試時應(yīng)盡可能輸入各種可能情況的數(shù)據(jù)以確保程序準(zhǔn)確無誤。應(yīng)避免任何可能的漏洞,使代碼的可用性和可靠性增強(qiáng)。試驗(yàn)中,我按照從簡單到復(fù)雜的方法,一步一個腳印編寫代碼,使得程序不易發(fā)生錯誤,并且容易更正,編寫出來的程序代碼簡潔明朗,效率較高;通過對例題的學(xué)習(xí),我最終將正確的代碼編寫出,并在不斷地修改之下做到方便用戶使用的要求;編碼的速度有一個從慢到快的過程,在本次試驗(yàn)中,我的速度依然比較慢,這看出我平時編碼比較少,缺乏熟練度,并對算法了解不深入;但是我的代碼看起來仍然有些凌亂,效率還沒有帶到真正的高效,每次運(yùn)行都需要等
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年二手房買賣居間協(xié)議典范
- 國粹京劇課件教學(xué)課件
- 籃球?qū)m?xiàng)課第一學(xué)期教案(本科)
- 2024安徽蕪湖市灣沚區(qū)數(shù)據(jù)資源管理局招聘見習(xí)生3人管理單位遴選500模擬題附帶答案詳解
- 倉庫安全管理制度安全文化
- 臨沂體育賽事行業(yè)勞動合同范本
- 個人汽車抵押借款協(xié)議書范本
- 企業(yè)定制人才培養(yǎng)合同
- 交通設(shè)計(jì)師勞動合同
- 產(chǎn)業(yè)升級物業(yè)管理:思路與目標(biāo)
- 2024年山東省濟(jì)南市中考數(shù)學(xué)真題(含答案)
- 山東省青島市黃島區(qū)2023-2024學(xué)年六年級上學(xué)期期中語文試卷
- 二手門市銷售合同范本
- 新能源發(fā)電技術(shù) 課件 第一章-新能源發(fā)電概述
- 2025屆高考語文一輪復(fù)習(xí):文言文概括和分析 課件
- 《大學(xué)美育》 課件 4.模塊五 第二十四章 時空綜合的影視藝術(shù)之美
- 浙江省溫州市蒼南縣2023-2024學(xué)年八年級上學(xué)期期中考試英語試題
- 2024-2030年中國汽摩配行業(yè)運(yùn)營態(tài)勢及重點(diǎn)企業(yè)發(fā)展分析報(bào)告
- 2021年11月廣州市增城區(qū)(衛(wèi)生類)招聘考試《護(hù)理學(xué)》試卷
- 2024中國海油應(yīng)屆畢業(yè)生招聘筆試歷年典型考題及考點(diǎn)剖析附帶答案詳解
- 失智失能老年人的飲食照護(hù)(失智失能老人健康照護(hù)課件)
評論
0/150
提交評論