大二(上)離散數學 主析取正規化與主合取正規化

2021-09-09 09:25:39 字數 4757 閱讀 7370

#include

#include

#include

#include

#include

#define n 50

void

panduan

(int b[n]

,int f)

;//賦值函式

inttkh

(char sz[n]

,char ccu[n]

,int icu[n]

,int h0)

;//分級運算函式

intfkh

(char sz[n]

,char ccu[n]

,int icu[n]

,int h0)

;//主運算函式

intmain()

if(d ==1)

d =1;

}}printf

("\n該式子中的變數個數為:%d\n"

, j)

;//輸出變數個數

h0 = j;

printf

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

//輸出真值表表頭

for(i1 =

0; i1 < h0; i1++

)printf

(" %c "

, ccu[i1]);

printf

(" ");

puts

(sz)

;printf

("\n");

for(i1 =

0; i1 < j; i1++

)//先將所有的變數賦值為1。

icu[i1]=1

;for

(i2 =

0; i2 < j; 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 <

pow(

2, j)-1

; i1++)if

(hq[0]

==-1)

//不存在合取正規化時

printf

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

else}if

(xq[0]

==-1)

printf

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

else

}//結束

getch()

;}void

panduan

(int b[n]

,int f)

// 二進位制賦值。

}int

tkh(

char sz[n]

,char ccu[n]

,int icu[n]

,int h0)

//分級運算函式

if(kh ==0)

return

fkh(sz, ccu, icu, h0)

;//如果無括號,直接執行

else

}int

fkh(

char sz[n]

,char ccu[n]

,int icu[n]

,int h0)

//主運算函式

//1 就是sz[0]的值

else

if(sz[i +1]

==-2)

//如果是前運算結果的0,則p1等於0

p1 =0;

if(p1 ==-1

)//如果是數字,直接給p1

p1 = sz[i +1]

; sz[i]

=!p1;

j++; p1 =-1

;for

(i1 = i +

1; i1 < s - j; i1++

) sz[i1]

= sz[i1 +1]

;//將後續式子前移一項

} p1 =-1

; j1 = j;

for(i =

0; i < s - j1 -

2* j2; i++

)// 處理與

if(sz[i]

=='&')if

(sz[i -1]

==-2)

//如果是前運算結果的0,則p1等於0

p1 =0;

if(sz[i +1]

==-2)

p2 =0;

if(p1 ==-1

)//如果是數字,直接給p1

p1 = sz[i -1]

;if(p2 ==-1

) p2 = sz[i +1]

; sz[i -1]

= p1 && p2;

j2++

; p1 =-1

; p2 =-1

;for

(i1 = i; i1 < s - j1 -

2* j2; i1++

)//將後續式子前移兩項

sz[i1]

= sz[i1 +2]

; i = i -1;

}for

(i =

0; i < s - j1 -

2* j2 -

2* j3; i++

)// 處理或。

if(sz[i]

=='|')if

(sz[i -1]

==-2)

//如果是前運算結果的0,則p1等於0

p1 =0;

if(sz[i +1]

==-2)

p2 =0;

if(p1 ==-1

)//如果是數字,直接給p1

p1 = sz[i -1]

;if(p2 ==-1

) p2 = sz[i +1]

; sz[i -1]

= p1 || p2;

j3++

; p1 =-1

; p2 =-1

;for

(i1 = i; i1 < s - j1 -

2* j2 -

2* j3; i1++

)//將後續式子前移兩項

sz[i1]

= sz[i1 +2]

; i--;}

for(i =

0; i < s - j1 -

2* j2 -

2* j3 -

2* j4; i++

)// 處理條件

if(sz[i]

=='^')if

(sz[i -1]

==-2)

//如果是前運算結果的0,則p1等於0

p1 =0;

if(sz[i +1]

==-2)

p2 =0;

if(p1 ==-1

)//如果是數字,直接給p1

p1 = sz[i -1]

;if(p2 ==-1

) p2 = sz[i +1]

; sz[i -1]

=!p1 || p2;

j4++

; p1 =-1

; p2 =-1

;for

(i1 = i; i1 < s - j1 -

2* j2 -

2* j3 -

2* j4; i1++

)//將後續式子前移兩項

sz[i1]

= sz[i1 +2]

; i--;}

for(i =

0; i < s - j1 -

2* j2 -

2* j3 -

2* j4 -

2* j5; i++

)// 處理雙條件

if(sz[i]

=='~')if

(sz[i -1]

==-2)

//如果是前運算結果的0,則p1等於0

p1 =0;

if(sz[i +1]

==-2)

p2 =0;

if(p1 ==-1

)//如果是數字,直接給p1

p1 = sz[i -1]

;if(p2 ==-1

) p2 = sz[i +1]

; sz[i -1]

=(!p1 || p2)&&(

!p2 || p1)

; j5++

; p1 =-1

; p2 =-1

;for

(i1 = i; i1 < s - j1 -

2* j2 -

2* j3 -

2* j4 -

2* j5; i1++

)//將後續式子前移兩項

sz[i1]

= sz[i1 +2]

; i--;}

return sz[0]

;}}

大二(上)離散數學 集合的二元關係

include include using namespace std const int max 100 int num int rnum int r max max int a max max void warshall warshall演算法 for int i 1 i num i 對所有j如...

離散數學 求主正規化

輸入 命題公式的合式公式 輸出 公式的主析取正規化和主析取正規化,輸出形式為 mi mj mi mj 極小項和 符號之間有乙個空格,極大項和 符號之間有乙個空格 主析取正規化和主合取正規化之間用 隔開,前後各有乙個空格。永真式的主合取正規化為 1 永假式的主析取正規化為 0 輸入公式的符號說明 非,...

周總結 大二上

只爭朝夕,不負韶華 本來這一周的週日是到我講課的,所以大部分時間花在了備課上面。但這可難到我了,不敢講太難的,因為怕講著講著就翻車了,也不能講太簡單的,因為這是我第一次講課,總不能讓大家感覺我什麼也沒學。最終我決定講講關於遞迴和動態規劃這方面的知識,雖然這方面我掌握的不太好,但是我感覺在備課和講課的...