離散數學實驗報告

2022-06-01 22:33:06 字數 2556 閱讀 4119

南京工程學院

實驗報告

課程名稱離散數學

實驗專案名稱命題邏輯

實驗學生班級 k多**111

實驗學生姓名朱在吉

學號 240111338

同組學生姓名

實驗時間 2012.10.25

實驗地點

實驗成績評定

指導教師簽字年月日

一、實驗目的和要求

真值表是命題邏輯中的乙個十分重要的概念,利用它幾乎可以解決命題邏輯中的所有問題。例如,利用命題公式的真值表,可以判斷命題公式的型別、求命題公式的主正規化、判斷兩命題公式是否等價,還可以進行推理等。

本實驗通過編寫乙個程式,讓計算機給出命題公式的真值表,並在此基礎上進行命題公式型別的判定、求命題公式的主正規化等。目的是讓學生更加深刻地理解真值表的概念,並掌握真值表的求解方法及其在解決命題邏輯中其他問題中的應用。

二、實驗主要儀器和裝置

計算機使用visual c++6.0為程式設計軟體,採用c語言為程式語言實現。

. 求任意乙個命題公式的真值表(b,並根據真值表求主正規化(c))

詳細說明:

本實驗要求大家利用c/c++語言,實現二元合取、析取、條件和雙條件表示式的計算。充分利用聯接詞和邏輯運算子之間的相似性實現程式功能。

本實驗要求大家利用c/c++語言,實現任意輸入公式的真值表計算。一般我們將公式中的命題變元放在真值表的左邊,將公式的結果放在真值表的右邊。命題變元可用數值變數表示,合適公式的表示及求真值表轉化為邏輯運算結果;可用一維數表示合式公式中所出現的n個命題變元,同時它也是乙個二進位制加法器的模擬器,每當在這個模擬器中產生乙個二進位制數時,就相當於給各個命題變元產生了一組真值指派。

演算法邏輯如下:

(1)將二進位制加法模擬器賦初值0

(2)計算模擬器中所對應的一組真值指派下合式公式的真值。

(3)輸出真值表中對應於模擬器所給出的一組真值指派及這組真值指派所對應的一行真值。

(4)產生下乙個二進位制數值,若該數值等於2n-1,則結束,否則轉(2)。

b,c題部分,首先是輸入乙個合理的式子,然後從式子中查詢出變數的個數,開闢乙個二進位制函式,用來生成真值表,然後用函式運算,輸出結果,並根據結果歸類給正規化,最後輸出正規化。

函式部分,主要是3個函式,乙個為真值表遞加函式,通過二進位制的加法原理遞進產生,乙個為分級運算函式,這個函式是通過判斷括號,選出最內級括號的內容執行運算函式,這樣一級一級向外運算,最後得出最終結果,剩下乙個為主運算函式,按照運算符號的優先順序按順序進行運算,如先將所有非運算運算完,再執行與運算。如此運算。

四、實驗原始紀錄(源程式、資料結構等)

#include ""

#include ""

#include ""

#include ""

#include ""

#define n 50

void panduan(int b[n],int f);//賦值函式

int tkh (char sz[n], char ccu[n], int icu[n], int h0);//分級運算函式

int fkh (char sz[n], char ccu[n], int icu[n], int h0);//主運算函式

main()

d=1;

}} printf("\nd該式子中的變數個數為:%d\n",j);//輸出變數個數

h0=j;

printf("\n輸出真值表如下:\n \n"); //輸出真值表表頭

for(i1=0;i1 printf(" %c ",ccu[i1]);

printf(" ");

puts(sz);

printf("\n");

for(i1=0;i1 icu[i1]=0;

for(i2=0;i2 printf(" %d ",icu[i2]);

jg=tkh(sz,ccu,icu,h0); //用函式求結果

if(jg==0)//結果為0,合取加1

hq[h++]=bj;

else //否則,析取加1

xq[x++]=bj;

printf(" %d\n",jg);//輸出運算結果

strcpy(sz,sz0);

for(i1=0;i1<(int)pow(2,j)-1;i1++)

if(hq[0]==-1)//不存在合取正規化時

printf("\n該命題公式不存在主合取正規化。\n");

else

}if(xq[0]==-1)//不存在析取正規化時

printf("\n該命題公式不存在主析取正規化。\n");

else

}printf("\n");

printf("\n歡迎下次再次使用!\n ");//結束

getch();

}void panduan(int b[n],int f) // 二進位制賦值。 }

int tkh (char sz[n],char ccu[n],int icu[n],int h0)//分級運算函式

{ int i,j,h,s,kh=0,wz[n],a;

char xs1[n],ckh[n]; //xs1用來儲存括號內的字元 ckh用來儲存括號。

離散數學實驗報告

1.掌握離散數學中涉及的相關概念。2.培養學生的邏輯思維能力和演算法設計的思想。3.熟練掌握c c 語言程式設計的基本方法和各種除錯手段。4.熟練掌握包括陣列 鍊錶以及鄰接表或鄰接矩陣等資料結構的建立和運用。1.求有限集上給定關係的自反 對稱和傳遞閉包。有兩種求解方法,只做一種為a,兩種都做為b 2...

離散數學實驗1報告

實驗abc 專業 自動化 班級 學號 姓名 日期 2011年12月05日 1.掌握離散數學中涉及的相關概念。2.培養學生的邏輯思維能力和演算法設計的思想。3.熟練掌握c c 語言程式設計的基本方法和各種除錯手段。4.熟練掌握包括陣列 鍊錶以及鄰接表或鄰接矩陣等資料結構的建立和運用。1.從鍵盤輸入兩個...

離散數學實驗指導書

通常人們對離散數學教學的認識就是概念 定理 公式和解題。但是,離散數學不僅僅是這些,還有實驗。在理論教學過程中,學生的活動只是 智力活動 或更為直接地說是解題活動,教師在上面講離散數學,而學生則每天在課堂上聽課並在紙上做題目。這樣,對多數學生而言,離散數學的發現探索活動沒有能夠真正開展起來。離散數學...