![計算器C++實(shí)驗(yàn)報告附源代碼_第1頁](http://file4.renrendoc.com/view/dd3ee4efe31caf699770e3366d151c50/dd3ee4efe31caf699770e3366d151c501.gif)
![計算器C++實(shí)驗(yàn)報告附源代碼_第2頁](http://file4.renrendoc.com/view/dd3ee4efe31caf699770e3366d151c50/dd3ee4efe31caf699770e3366d151c502.gif)
![計算器C++實(shí)驗(yàn)報告附源代碼_第3頁](http://file4.renrendoc.com/view/dd3ee4efe31caf699770e3366d151c50/dd3ee4efe31caf699770e3366d151c503.gif)
![計算器C++實(shí)驗(yàn)報告附源代碼_第4頁](http://file4.renrendoc.com/view/dd3ee4efe31caf699770e3366d151c50/dd3ee4efe31caf699770e3366d151c504.gif)
![計算器C++實(shí)驗(yàn)報告附源代碼_第5頁](http://file4.renrendoc.com/view/dd3ee4efe31caf699770e3366d151c50/dd3ee4efe31caf699770e3366d151c505.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
四川大學(xué)軟件學(xué)院實(shí)驗(yàn)報告學(xué)號:1043111051姓名:王金科專業(yè):軟件工程班級:2010級5班課程名稱數(shù)據(jù)結(jié)構(gòu)
實(shí)驗(yàn)課時8實(shí)驗(yàn)項(xiàng)目計算器實(shí)驗(yàn)時間8到10周實(shí)驗(yàn)?zāi)康牧私鈉++類的封裝和KMP算法。實(shí)驗(yàn)環(huán)境Windows平臺VC6.0++
實(shí)驗(yàn)內(nèi)容(算法、程序、步驟和方法)部分函數(shù)創(chuàng)建思想創(chuàng)建過程如下:實(shí)驗(yàn)流程圖程序清單文件名:main.cpp#include<iostream>usingnamespacestd;#include<stdio.h>#include<malloc.h>#include"DefNit.h"#include"Compare.h"#include<windows.h>intmain(){LinkOptrT;LinkOpndN;InitStack(&T);PushOptr(T,'#');InitStack(&N);charch,key;inti=0,j=0,num2=0,op1,op2;while(1){ system("cls");cout<<"\n\n\t\t\t*********計算器*********”;cout<<"\n\n\t\t):請輸入算數(shù)表達(dá)式(數(shù)入#號結(jié)束輸入)";ch=getchar();while(ch!='#'||GetTop1(T)!='#'){if(!IsOptr(ch)) { i++; if(i<=j)num2=(int(ch)-48); if(i>j) { num2=num2*10+(int(ch)-48); i=j=0; } if(!IsOptr(ch=getchar())) i++; if(i==j) PushOpnd(N,num2);//用getchar()函數(shù)讀進(jìn)來的字符肯定只能是一個字符,比如,12是先讀‘1’,然后讀‘2’,這里的i和j是用來判斷個位數(shù)還是十位數(shù)的,num2是把運(yùn)算數(shù)棧前零散的字符統(tǒng)計出來} else switch(Precede(GetTop1(T),ch)) { case'<': PushOptr(T,ch); if(ch!='('&&ch!=')') j++; ch=getchar(); break; case'=': PopOptr(T); ch=getchar(); break; case'>': op1=PopOpnd(N); op2=PopOpnd(N); PushOpnd(N,Operate(op2,PopOptr(T),op1));break; }}cout<<"\n\n\t\t表達(dá)式的最終結(jié)果為:";printf("%5d\n",GetTop2(N));cout<<"\n\n\t\t是否繼續(xù)(Y/N)";cin>>key;if(key=='n'||key=='N'){ break;}}cout<<"\n\n\t\t";return0;}文件名:Compare.hintIsOptr(charch){ charptr[10]={'+','-','*','/','(',')','#'}; for(inti=0;i<7;i++) { if(ch==ptr[i]) returntrue; } returnfalse;}charPrecede(charch1,charch2){if((ch1=='+'||ch1=='-'||ch1=='*'||ch1=='/'||ch1==')')&&(ch2=='+'||ch2=='-'||ch2==')'||ch2=='#')) return'>'; elseif((ch1=='('||ch1=='#')&&(ch2=='+'||ch2=='-'||ch2=='*'||ch2=='/'||ch2=='(')) return'<'; elseif((ch1=='+'||ch1=='-'||ch1=='*'||ch1=='/')&&ch2=='(') return'<'; elseif((ch1=='+'||ch1=='-')&&(ch2=='*'||ch2=='/')) return'<'; elseif((ch1=='*'||ch1=='/'||ch1==')')&&(ch2=='*'||ch2=='/')) return'>'; elseif(ch1=='('&&ch2==')') return'='; elseif(ch1=='#'&&ch2=='#') return'='; else returnfalse;}intOperate(intx,charch,inty){if(ch=='+') returnx+y; elseif(ch=='-') returnx-y; elseif(ch=='*') returnx*y; elseif(ch=='/') returnx/y; else returnfalse;}文件名:DefNit.htypedefstructNode1{charch;structNode1*Next;}Optr,*LinkOptr;//運(yùn)算符棧typedefstructNode{intnum; structNode*Next;}Opnd,*LinkOpnd;//運(yùn)算數(shù)棧voidInitStack(LinkOptr*S){(*S)=(LinkOptr)malloc(sizeof(Optr)); (*S)->Next=NULL;}voidInitStack(LinkOpnd*S){(*S)=(LinkOpnd)malloc(sizeof(Opnd)); (*S)->Next=NULL;}intPushOptr(LinkOptrpr,charch1){LinkOptrtemp;temp=(LinkOptr)malloc(sizeof(Optr));temp->ch=ch1;temp->Next=pr->Next;pr->Next=temp;returntrue;}intPushOpnd(LinkOpndpn,intnum1){LinkOpndtemp;temp=(LinkOpnd)malloc(sizeof(Opnd));temp->num=num1;temp->Next=pn->Next;pn->Next=temp;returntrue;}charPopOptr(LinkOptrS){if(S->Next==NULL) returntrue;LinkOptrtemp;temp=S->Next;S->Next=temp->Next;returntemp->ch;free(temp);}intPopOpnd(LinkOpndS){if(S->Next==NULL) returntrue;LinkOpndtemp;temp=S->Next;S->Next=temp->Next;returntemp->num;free(temp);}charGetTop1(LinkOptrS){returnS->Next->ch;}intGetTop2(LinkOpndS){returnS->Next->num;}實(shí)驗(yàn)內(nèi)容(算法、程序、步驟和方法)數(shù)據(jù)記錄和計算
結(jié)論(結(jié)果)
這個程序達(dá)到了實(shí)驗(yàn)的要求,可以實(shí)現(xiàn)運(yùn)算表達(dá)式的輸入、運(yùn)算和輸出,而且可以進(jìn)行輸入驗(yàn)錯,可以正常運(yùn)行。小結(jié)
自己在整個課程設(shè)計過
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 校園文化建設(shè)與學(xué)校發(fā)展戰(zhàn)略
- 行為習(xí)慣與孩子未來家庭教育的長遠(yuǎn)影響
- DB6103T 80-2025獼猴桃園覆土栽培香菇技術(shù)規(guī)范
- 不可撤銷物業(yè)服務(wù)合同范例
- 中保人壽幸福家園保險合同范本(A)
- 臨街旺鋪?zhàn)赓U合同樣本
- 二手車買賣合同(權(quán)威版)
- 業(yè)務(wù)拓展與培訓(xùn)合作合同
- 上海市物流運(yùn)輸合同范本
- 個人信用擔(dān)保貸款合同范文
- 橋梁建設(shè)施工組織設(shè)計方案
- (新版)中國動態(tài)血壓監(jiān)測基層應(yīng)用指南(2024年)
- 礦物加工工程基礎(chǔ)知識單選題100道及答案解析
- 2024年同等學(xué)力申碩英語考試真題
- 浙江省杭州市2024年中考語文試卷(含答案)
- 世說新語原文及翻譯-副本
- 電力通信光纜檢修標(biāo)準(zhǔn)化作業(yè)指導(dǎo)書
- 安全隱患舉報獎勵制度
- 工貿(mào)行業(yè)企業(yè)安全生產(chǎn)標(biāo)準(zhǔn)化建設(shè)實(shí)施指南
- T-CACM 1560.6-2023 中醫(yī)養(yǎng)生保健服務(wù)(非醫(yī)療)技術(shù)操作規(guī)范穴位貼敷
- 2024年全國統(tǒng)一考試高考新課標(biāo)Ⅱ卷數(shù)學(xué)試題(真題+答案)
評論
0/150
提交評論