《利用真值表法求取主析取范式以及主合取范式的实现---》由会员分享,可在线阅读,更多相关《利用真值表法求取主析取范式以及主合取范式的实现---(12页珍藏版)》请在金锄头文库上搜索。
1、#incu stdio.h#include stdlhilud tring.hilu mat.h#define N 50vo d(int b,it );nt 1 (char T1N,charT2N,int T3, int y);it H2 (char T1N, chr TN,it T3N, int y);it main() int i1,i,d=1,3N,kh=,jg,=0,; intw=0,euN,h=0,x=0,iqN; chrTN,TN,T1N,; qu0-1; qu0=1; pitf(#n); nf(# 用!表达否认 #n); pitf( 用表达合取 #n); pritf(# 用|表达
2、析取 #n); intf(# 用表达条件 #n); pnf( 用表达双条件 #n); prinf(#nn); int(请输入一种合法的命题公式:n); gts(T1); tpy(0,T1); fo(1=;i1=a & T1i=A& T1i1=Z) r(i=;i2j;i2+) if(T2i=T1i1) 0; if(d=1) T2j=Ti1; j; =; rintf(n输出真值表如下:nn); or(i1=;1y;i1+) prntf( c ,2i1); printf(); uts(T1); printf(); for(i1=0;ij;1+) T31=; or(2=;i2j;i2+) prntf(
3、 % ,T3i2); gH1(T1,T2,T3,y); if(j=) hqu+; else ux+=w; pt( %dn,g); sry(T1,T10); for(i1=0;i1(int)pow(2,j)-;i+) +w; p(T3,j-1); g=(T1,2,T3,y); if(jg=0) hqu+=w; else xiqu+=w; trpy(T,0); or(0;i20) pitf(/); prntf(M(%),qui1); f(iqu=-) prntf(该命题公式不存在主析取范式。n); ele prin(nn主析取范式:nt); f(=0;i10) pritf(); prf((%d),
4、xiui1); pntf(n); getch();voi p(int bN,t f) i i; i=f; if(bf=0) bf1; els f=0; pd(b,-i); int H1 (cha TN,car TN,n T3N,int y) int ,h,s,kh=0,z,a; char xN,khN; strlen(T); or(i0;i+) f(T1i=(| T1i=)) wzkh; ckhkhT1i; h+; i(kh=0) eu 2(T1,T2,y); els for(=;ikh;i+) i(ci=) brea; for(wi1,h=;jwzi;j+,h+) xs1h=T1; xs1=
5、0; a=H2(xs1,T,T3,); if(a=) T1wi-11; ele T1z-1=-2; r(j=wi-1+;zi-1-wzi;j+) T1jT1jwzi-z-1; T1j=0; return 1(T,T2,T3,y); int H(car1N,car T2N,int T3,int y) nt i,h=0,j,1=0,j2=0,=0,4=,j5=0,i1,2,p1-,21,; hr dtN; s=trlen(T1); if(s=1) if(10=-2) return 0; ee eurn 1; le fr(=0;is-j;i+) if(T1i=!) fr(i1=;y;+) if(T=
6、T2i1) p=T3i1; if(T1=-2) 1=0; if(p1=-1) 1=T1i+1; dj+2=!p; Ti=+2; j+; p1=0; fo(1=i+1;i1s-j;i1+) T11=T11+1; =-1; j1=j; for(i=0;is-j1-2*j2;i+) if(T1i) f(=0;i1y;i+) f(1-1=2i1) 1=Ti1; if(1i+1=2i1) 2T3i1; for(i2=2;ij+2;+) if(1-1=i2) p1=dti2; i(Ti+1=i2) p2ti2; if(T1i-1=-2) 1=; i(T1i1=-2) p2=; f(p1=1) p=(int)(1i-1); if(p2=1) 2=(int)(i+); +2=p1 & p2; T1i1=+2; j; j2+; -1; p2=-; for(i1=i;