重言式判別源碼及課程設(shè)計-c語言版

上傳人:494895****12427 文檔編號:59371488 上傳時間:2022-03-02 格式:DOCX 頁數(shù):14 大?。?4.32KB
收藏 版權(quán)申訴 舉報 下載
重言式判別源碼及課程設(shè)計-c語言版_第1頁
第1頁 / 共14頁
重言式判別源碼及課程設(shè)計-c語言版_第2頁
第2頁 / 共14頁
重言式判別源碼及課程設(shè)計-c語言版_第3頁
第3頁 / 共14頁

下載文檔到電腦,查找使用更方便

0 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《重言式判別源碼及課程設(shè)計-c語言版》由會員分享,可在線閱讀,更多相關(guān)《重言式判別源碼及課程設(shè)計-c語言版(14頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、精選優(yōu)質(zhì)文檔-傾情為你奉上重言式的判別題目:一個邏輯表達(dá)式如果對于其変元的任一種取值都為真,則稱為重言式;反之,如果對于其變元的任一種取值都為假,則稱為矛盾式;然而,更多的情況下,既非重言式,也非矛盾式。試寫一程序,通過真值表判別一個邏輯表達(dá)式屬于上述哪一類。一、需求分析1、邏輯表達(dá)式從終端輸入,長度不超過一行。2、邏輯運算符包括“|”“&”“”表示或 與 非。運算符優(yōu)先程度遞增,但是可由括號改變。3、邏輯變元為大寫字母表達(dá)式中任何地方都可以含有多個空格符。4、運用自底向上的算符優(yōu)先法5、重言式顯示“true forever”;矛盾式顯示“false forever”;否則顯示“satisfa

2、ctible”。二、概要設(shè)計為實現(xiàn)上述需求需要用到自底向上的算符優(yōu)先法,和自頂向下分割,先序遍歷建立二叉樹的方法。自底向上的算符優(yōu)先法:char OPTRCHART77= ,|,&,(,),#, |, &, ,(,),#,data,*p)case :break;/*switch*/建立二叉樹:typedef struct BiTNodestruct BiTNode * Lchild;struct BiTNode * Rchild;ElemType data;BiTNode , *BiTree;棧中的操作:typedef struct NodeBiTree * base;BiTree *top;

3、int stacksize;SqStack;入棧操作及出棧銷毀棧的操作:int InitStack(SqStack * stack)stack-base=(BiTree*)malloc(STACK_INIT_SIZE*sizeof(BiTree);if(!stack-base)exit(OVERFLOW);stack-top=stack-base;stack-stacksize=STACK_INIT_SIZE;return OK;BiTree GetTop(SqStack * stack)if(stack-top=stack-base)return NULL;return *(stack-to

4、p-1);int Push(SqStack * stack,BiTree Bitnode)if(stack-top-stack-base=stack-stacksize)stack-base=(BiTree*)realloc(stack-base,(stack-stacksize+STACKINCREAMENT)*sizeof(BiTree);if(!stack-base)exit(OVERFLOW);stack-top=stack-base+stack-stacksize;stack-stacksize+=STACKINCREAMENT;*(stack-top)=Bitnode;stack-

5、top+;return OK;BiTree Pop(SqStack * stack)if(stack-top=stack-base)return ERROR;return *(-stack-top);int DestroyStack (SqStack * stack)free(stack-base);return OK;三、詳細(xì)設(shè)計詳細(xì)程序如下:#include#include#include#include#define OK 1#define ERROR 0#define VARIMAXNUM 20 #define STARMAXLEN 100 #define STACK_INIT_SIZ

6、E 100 /棧的最大長度#define STACKINCREAMENT 10 /每次增加的棧的長度#define ElemType char 將elemtype定義為char型typedef struct BiTNode /創(chuàng)建樹節(jié)點 按照書上原樣創(chuàng)建struct BiTNode * Lchild;struct BiTNode * Rchild;ElemType data; /字符型BiTNode , *BiTree;typedef struct Node /棧BiTree * base;BiTree *top;int stacksize;SqStack;char OPTRCHART77=

7、/此舉是為了后面的優(yōu)先級考慮 ,|,&,(,),#,|,&,(,),#,base=(BiTree*)malloc(STACK_INIT_SIZE*sizeof(BiTree);if(!stack-base)exit(OVERFLOW);stack-top=stack-base;stack-stacksize=STACK_INIT_SIZE;return OK;BiTree GetTop(SqStack * stack) /返回值為BiTree類型的 取棧頭if(stack-top=stack-base)return NULL;return *(stack-top-1);int Push(SqS

8、tack * stack,BiTree Bitnode) /將樹的節(jié)點放進(jìn)棧的操作,入棧if(stack-top-stack-base=stack-stacksize)stack-base=(BiTree*)realloc(stack-base,(stack-stacksize+STACKINCREAMENT)*sizeof(BiTree);if(!stack-base)exit(OVERFLOW);stack-top=stack-base+stack-stacksize;stack-stacksize+=STACKINCREAMENT;*(stack-top)=Bitnode;stack-t

9、op+;return OK;BiTree Pop(SqStack * stack) /取值指針后移if(stack-top=stack-base)return ERROR;return *(-stack-top);int DestroyStack (SqStack * stack) /毀棧 free(stack-base);return OK;char strSTARMAXLEN;int varitabVARIMAXNUM+1;int sum;BiTree root;SqStack OPTR,OPND;char cmp(char a,char b) /取左右交叉的符號即“”“=”int i,j

10、;for(i=0;i=6;i+)if(OPTRCHARTi0=a)break;for(j=0;jdata=#;Push(&OPTR,temp);while(*p!=#)|(GetTop(&OPTR)-data!=#)if(*p=65)&(*p=97)&(*pdata=*p;temp-Lchild=NULL;temp-Rchild=NULL;Push(&OPND,temp);p+;elseswitch(cmp(GetTop(&OPTR)-data,*p) /開始判斷優(yōu)先級case data=*p;temp-Lchild=NULL;temp-Rchild=NULL;Push(&OPTR,temp)

11、; p+;break;case =:temp=Pop(&OPTR);free(temp);p+;break;case :temp=Pop(&OPTR);b=Pop(&OPND);temp-Rchild=b;if(temp-data!=)a=Pop(&OPND);temp-Lchild=a;Push(&OPND,temp);break;/*switch*/*else*/*while*/root=Pop(&OPND);temp=Pop(&OPTR);free(temp);void DestroyBiTree(BiTree tree) /銷毀樹并取出需要的值if(!tree)return;else

12、if(tree-Lchild=NULL)&(tree-Rchild=NULL)free(tree);return;elseDestroyBiTree(tree-Lchild);DestroyBiTree(tree-Rchild);free(tree);int GetValue(BiTree tree) if(!tree)return 0;else if(tree-data=65)&(tree-datadata-64;else if(tree-data=97)&(tree-datadata-96;elseswitch(tree-data)case |:return (GetValue(tree-

13、Lchild)|GetValue(tree-Rchild);case &:return (GetValue(tree-Lchild)&GetValue(tree-Rchild); case :return (!GetValue(tree-Rchild);void destroy() /銷毀棧DestroyStack (&OPTR);DestroyStack (&OPND);void init()InitStack(&OPTR);InitStack(&OPND);*varitab=0;sum=(int)pow(2.0,*varitab);root=NULL;str0=#;void input()

14、 / 為了能繼續(xù)輸入需要判別的式子char *p,*q;printf(請輸入要判斷的式子中變量的數(shù)目n);scanf(%d,varitab);while(*varitab0)printf(錯誤,請重新輸入數(shù)字!n); printf(請輸入要判斷的式子中變量的數(shù)目:n);scanf(%d,varitab);getchar();sum=(int)pow(2.0,*varitab);printf(輸入要判別的式子:n);gets(str);for(p=q=str;*p;p+)if(*p!= )*q+=*p;*q=#;void Varitab(int n)int i;for(i=0;ii)%2;voi

15、d table()int i,j,value;printf(真值表為:n);for(i=1;i=*varitab;i+)printf( %c,64+i);printf(n);for(i=0;isum;i+)Varitab(i);for(j=1;j=*varitab;j+)printf(%d,varitabj);value=GetValue(root);if(value)printf(真n);elseprintf(假n);void mutualcm()int i,value,truenum=0,falsenum=0,cmd;for(i=0;isum;i+)Varitab(i);value=Get

16、Value(root);if(value)truenum+;elsefalsenum+;if(truenum=sum)printf(true forever!n);else if(falsenum=sum)printf(false forever!n);elseprintf(請進(jìn)行選擇1:進(jìn)行用戶輸入驗證 其它:進(jìn)行計算機(jī)列舉n);scanf(%d,&cmd);if(cmd=1)printf(輸入變量值:n);for(i=1;ibase=(BiTree*)realloc(stack-base,(stack-stacksize+STACKINCREAMENT)*sizeof(BiTree);此句

17、原來寫的事stack-base=(BiTree *)malloc(stack-stacksize+STACKINCREAMENT)*sizeof(BiTree);程序無法執(zhí)行,不知為什么。6、stack-base=(BiTree )malloc(stack-stacksize*(sizeof(BiTree) 此句本來在(BiTree *)結(jié)果報多* 去掉沒問題,但是不明白五、用戶手冊本程序采用需要用戶輸入或者判別的時候步步都有提示如圖所示六、測試結(jié)果需要測試的數(shù)據(jù)為:(1)(A|A)&(B|B)(2)(A&A)&C(3)A|B|C|D|E|A(4)A&B&C&B(5)(A|B)&(A|B)(6)A&B|A&B;0,0;0,1;1,0;1,1。測試結(jié)果如圖所示:七、用戶手冊#include #include#include#include專心-專注-專業(yè)

展開閱讀全文
溫馨提示:
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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!