計算命題演算公式的真值_第1頁
計算命題演算公式的真值_第2頁
計算命題演算公式的真值_第3頁
計算命題演算公式的真值_第4頁
計算命題演算公式的真值_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、四計算命題演算公式的真值一. 實驗題目所謂命題演算公式是指由邏輯變量(其值為 TRUE 或 FALSE)和邏借運算符 A (AND)、 V(OR)和(NOT)按一立規(guī)則所組成的公式(蘊含之類的運算可以用 A、V 和來表示)。 公式運算的先后順序為、/、V,而括號()可以改變優(yōu)先次序。已知一個命題演算公式 及各變疑的值,要求設計一個程序來計算公式的真值。要求:(1)利用二叉樹來訃算公式的真值。首先利用堆棧將中綴形式的公式變?yōu)楹缶Y形式;然后根據(jù)后綴形式,從葉結點開始構造相應的二叉樹:最后按后序遍歷該樹,求各子樹之值, 即每到達一個結點,英子樹之值已經(jīng)計算出來,當?shù)竭_根結點時,求得的值就是公式之真值

2、。(2)邏輯變元的標識符不限于單字母,而可以是任意長的字母數(shù)字串。(3)根據(jù)用戶的要求顯示表達式的真值表。二. 實驗設計1.設計思想(1)數(shù)據(jù)結構設計a 建立一個鏈式堆棧,實現(xiàn)括號的匹配問題。b 建立一個順序堆棧,來實現(xiàn)中綴轉(zhuǎn)后綴并實現(xiàn)二叉樹的打印。(2)算法設計a.括號匹配 b 中綴轉(zhuǎn)后綴 c 打印二叉樹和真值表2.設計表示自泄義和調(diào)用的函數(shù)如下所示:#include,n,#include,M#include#include#in cludeo#in cludeo# includeo函數(shù)說明如下SeqStackl;void Stacklnitiatel(SeqStackl *S)void S

3、tackPushl(SeqStackl *SzDataType x)void StackPopl(SeqStackl *SzDataType *x) intStackTopl(SeqStackl S,DataType *d)SeqStack2;void Stacklnitiate2(SeqStack2 *S)/*左義一個堆棧 SeqStackl*/*初始化堆棧 i,棧底為# */*將元素壓入堆棧 1*/*彈出堆棧 1 的棧頂元素*/廠取堆棧 1 的棧頂元素*/*左義一個順序堆棧 SeqStack2*/*初始化堆棧 2*/BiTreeNode * StackPop2(SeqStack2 *S)B

4、iTreeNode;void lnitiate(BiTreeNode *root)void print(BiTreeNode *bt,int n)void StackPush2(SeqStack2 *SzBiTreeNode *x)int Convert(char a500,char b500100,SeqStaclnext=N U LL;廠初始化堆棧p/int StackNotEmpty(LSNode* head)if(head-next=NULL)return 0;else return 1;廠檢測堆棧是否為空的函數(shù).若為空,返回0,否則返回 L/typedef struct snodeD

5、ataType data;struct snode* next; LSNode;廠從堆棧 2 中彈出棧頂元素車/*定義二叉樹的結點*/ 廠初始化樹的根結點/ 廠逆時針打印二叉樹槪/嚴將二叉樹結點壓入堆棧 2*/廠定義了鏈表的結點用干下而檢測表達式的括號匹配/int StackPop(LSNode* head,DataType* d) LSNode* p=head-next;if(p=NULL)coutvv”堆棧已空出錯 tvendl;return 0;headn ext=p-n ext;*d=p-data;free(p);return 1;廠彈出棧頂元素*7int StackPush(LSNo

6、de* headataType x)LSNode* p;if(p=(LSNode*)malloc(sizeof(LSNode)=NULL) coutH內(nèi)存空間不足無法插入!Hendl; return 0;p-data=x;p-next=head-n ext;headn ext=p; return 1;廠將元素入棧*/int StackTop(LSNode* headzDataType *d)LSNode* p=head-next;if(p=NULL)coutH堆棧已空出錯Hendl;return 0;*d=p-data;return 1;廠取棧頂元素*/void Destroy(LSNode*

7、 head)LSNode* p,*pl;p=head;while(p!=NULL)pl=p;p=p-n ext;free(pl);嚴撤消/三. 調(diào)試分析在運行程序的過程中,碰到了一些錯誤,英中有很多是括號和分號的問題,看來以后寫 程序要更加細心才行。四. 用戶手冊此程序中&T“分別代表代表,與,或,非,運算首先輸入一個包含變量,運算符表達式,再按 Enter 執(zhí)行。再依次輸入各變量的值。如 果不繼續(xù)輸入,按 0 退出。再按 y 繼續(xù)或者 n 退出。五. 測試數(shù)據(jù)及測試結果輸入 a&b&cr C;User3zhaohengweiDe5ktop4Debugcalculatc

8、.exe一一&-a請為變量賦值該表達式的最后結果為:0(0退岀真佰計算 1 重新輸人各變量的 41)=1請為變量賦值falso or 1:true請輸入上述表達式中的支量“a”的真值 5 or 1?):W 輸入上述表達式中的支量的真值 Wor1?):1請輸入上述表達式中的變重b-的真值:0請輸入上述表達式中的變量的貢值 5OP1?, 1C:UserszhaohengweiDesktop4Debugcalculate.exe”該表達式的最后結果為:(0退岀真值計算 1.董新輸入各支量的值 1 =1請為變量賦值請輸入上述表達式中的變量“a”的真值:0”請輸入上述表達式中的變量 W 的真值: 1請輸入上述表達式中的變量“c”的真值:1該表達式的最后結果為,03-退出貢值計算-重新輸入各變量的値):。,切:繼續(xù)下個裘達式的計算,*:退出程序u or W?_六源程序清單typedef structDataType stack1000;int top;SeqStackl;出真值計算 1.重新輸入各變量的值):;cini;if(i=0) break;int /100,p;printf(真值表如 F: n);End=O;long count=(int)pow(2,num

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論