當前位置:首頁 » 編程軟體 » 真值表編程

真值表編程

發布時間: 2022-05-13 21:47:10

『壹』 怎麼用C語言寫一個程序,判斷真值表的

//---------------------------------------------------------------------------

#include <stdio.h>

int main(void)
{
int p,q;
printf("%9c!P\t!Q\tP&Q\tP|Q\tP^Q\n");
for (p=0; p<2; p++) {
for (q=0; q<2; q++) {
printf("P=%d,Q=%d\t%3d\t%2d\t%2d\t%2d\t%2d\n",p,q,!p?1:0,!q?1:0,p&&q?1:0,p||q?1:0,p^q?1:0);
}
}
return 0;
}
//---------------------------------------------------------------------------

『貳』 用C語言編程:輸入命題公式的合式公式,求出公式的真值表,並輸出該公式的主合取範式和主析取範式

A-Z + is OR * is AND _ is → # is⊕(圓圈裡加個+) @ is ⊙

$ is ↑ 命題的"與非" 運算( "與非門" )

% is ↓ 命題的"或非"運算( "或非門" )

Input the source formula:

A*!S+R

NORMALc: (!A*!B*!R)+(A*!B*!R)+(!A*B*!R)+(A*B*!R)+(!A*!B*R)+(!A*B*R)+(A*B*R)

NORMALd (!A+B+!R)

Error!

Input the source formula:

A#B

Here!

4countTerms

NORMALc: (A*!B)+(!A*B)

NORMALd (A+B)*(!A+!B)

Error!

Input the source formula:

stack<char> stk;

bool isVar(char ch)const;

void addMin(int minterm);

void addMax(int maxterm);

bool compute(int minterm);

void getInversePoland();

int countTerms(int n);

void assign(int minterm);

stack<bool> boolStk;

public:

formulaBase();

formulaBase(const formulaBase& rhs);

~formulaBase();

void getSource();

cout<<"Invalid input !"

"Operate again:"<<endl;

cin>>sourceFormula;*/

}

void formulaBase::getInversePoland()

{

char temp,temp1;

for(int i=0;sourceFormula[i]!='';i++)

stk.pop();

}

else break;

}

stk.push(temp);

break;

case '*':

while (!stk.empty())

//從鍵盤上任意輸入一個主析取範式,輸出與之等值的主合取範式。┐∧∨

# include <iostream>

# include <cmath>

# include <windows.h>

using namespace std ;

(2)真值表編程擴展閱讀:

(1)命題變項是命題公式。

(2)如果A是命題公式,則¬A是命題公式。

(3)如果A和B是命題公式,那麼(A∧B)、(A∨B)、(A→B)和(A↔B)都是命題公式。

(4)當且僅當有限次地應用(1),(2),(3)所得到的包含命題變項,聯結詞和圓括弧的符號串是命題公式。

命題公式的定義是一個遞歸定義形式。命題公式本身不是命題,沒有真值,只有對其命題變項進行賦值後,它才有真值。

5個聯結詞運算兒有不同的優先順序。當它們同時出現在一個命題公式里時,聯結間運算的優先次序為、∧、∨、→、,如果有括弧,則括弧內的運算優先進行。

『叄』 什麼是異或操作寫出一或的運算真值表並且是其物理意義

操作寫出以後的預算指標,這個就是說在進行編程的過程當中,物理意義的一個調試。
它對於我們在真正的判斷具體范圍的時候值域有關。

『肆』 要求輸入任意一公式,程序自動生成其真值表。

去搜個計算器的實現,把加減乘除改成 與 或 非這種邏輯運算。

保證計算結果正確性之後,給每個變數賦0和1,得出的結果畫真值表,相當於用到運算結果,但是要調用n次,n就是2的運算數次冪,你自己再補個畫表的功能就行了。

既然不讓用鏈表,就用數組,#define出運算符。

『伍』 如何用C語言做出「構造命題公式的真值表」的程序~

有3種
1.
#include <stdio.h>
#include <string.h>

int main(void)
{
int nNum1,nNum2;

printf("請輸入第一個整數:");
scanf("%d",&nNum1);
printf("\n請輸入第二個整數:\n");
scanf("%d",&nNum2);
printf("\n輸入的兩個數為:%d,%d,其大小關系為:",nNum1,nNum2)
if(nNum1 < nNum2){
printf("%d < %d",nNum1,nNum2);
}else
printf("%d > %d",nNum1,nNum2);

return 0;
}

2.
#include <stdio.h>
#include <string.h>

int main(void)
{
int i,nNum,nSum=0;
int a[10]={0};
for(i=0;i<10;i++){
printf("請輸入第%d個整數:\n",i+1);
scanf("%d",&a[i]);
}
for(i=0;i<10;i++){
if(a[i]>0){
nSum+=a[i];
nNum++;
}
}
printf("輸入的正整數有%d個,其平均值為:%f",nNum,(float)nSum/nNum);

return 0;
}

3.
#include <stdio.h>
#include <string.h>

int main(void)
{
int a[3],nMin,nMax;
int i;
for(i=0;i<3;i++){
printf("請輸入第%d個整數:\n",i+1);
scanf("%d",&a[i]);
}
nMin=nMax=a[0];
if(nMin<a[1]){
nMin=a[1];
}
if(nMin<a[2]){
nMin=a[2];
}
if(nMax>a[1]){
nMax=a[1];
}
if(nMax>a[2]){
nMax=a[2];
}

printf("輸入的三個數為:%d,%d,%d,最大值為:%d,最小值為:%d",a[0],a[1],a[2],nMax,nMin);

return 0;
}
追分哦!!!!!!!!!!!

『陸』 如何用C或C+編程序實現:從鍵盤任意輸入一個命題公式,用真值表法判斷其類型

#include<iostream>
#include<string>
using namespace std;
string calcValue(string value1);
string calcValueNop(string value1);
string caclAnd(string x,string y);
string caclOr(string x,string y);
string caclNot(string x);
int main()
{ string in,varList="";//="!a+b^c"
cout<<"請輸入命題公式: 注意: !,^,+,(,),字母為合法,不要有數字、空格,括弧也要匹配!"<<endl;
cin>>in;
cout<<"輸入命題公式"<<in<<"的真值表如下:"<<endl;
int length=in.length();
for(int i=0;i<length;i++)
{
char code=in[i];
if( ((code>=97)&&(code<123)||((code>=65))&&(code<81))&&varList.find(code,0)==-1 )
varList+=code;
}
int n=varList.length();
for(i=0;i<n;i++)
cout<<varList[i]<<"\t";
cout<<in<<"\t\t"<<"值"<<endl;

int m=1;
int flag;
char *trow=new char[n];
for(i=0;i<n;i++){m*=2;trow[i]='0';}
for(i=0;i<m;i++)
{
for(int j=0;j<n;j++)
cout<<trow[j]<<"\t";
string value1=in;
for(j=0;j<n;j++)
{
char x=varList[j];
for(int k=0;k<length;k++)
if(value1[k]==x)
value1[k]=trow[j];
}
cout<<value1<<"\t\t"<<calcValue(value1)<<endl;
flag=1;
for(j=n-1;j>-1;j--)
{ int temp;
temp=int(trow[j])-48;
flag=flag+temp;
if(flag==2)
{
trow[j]='0';
flag=1;
}
else
{
trow[j]='1';
flag=0;
break;
}
}
}

delete trow;
return 0;
}

string calcValue(string value1)
{
int nlp=value1.find('(',0);
int nrp=value1.length();
string x="",v="";
int i=nlp+1;
while(nlp>=0)
{
x=value1.substr(i,1);
if(x=="(")
{
nlp=i;
i++;
}
else
{
if(x==")")
{
nrp=i;
v=calcValueNop(value1.substr(nlp+1,nrp-nlp-1));
value1=(nlp>0?value1.substr(0,nlp):"")+v+((nrp+1)<=value1.length()?value1.substr(nrp+1):"");
nlp=value1.find('(',0);
i=nlp+1;
}
else
{
i=i+1;
}
}
if(i>=value1.length())
{
nlp=value1.find('(',0);
i=nlp+1;
}
}
return calcValueNop(value1);
}

string calcValueNop(string value1)
{
int nnot=value1.find('!',0);
while(nnot>=0)
{
value1=(nnot>0?value1.substr(0,nnot):"")+caclNot(value1.substr(nnot+1,1))+((nnot+2)<=value1.length()?value1.substr(nnot+2):"");
nnot=value1.find('!',0);
}
int nand=value1.find('^',0);
while (nand>0)
{
value1=((nand-1)>0?value1.substr(0,nand-1):"")+caclAnd(value1.substr(nand-1,1),value1.substr(nand+1,1))+((nand+2)<=value1.length()?value1.substr(nand+2):"");
nand=value1.find('^',0);
}
int nOr=value1.find('+',0);
while (nOr>0)
{
value1=((nOr-1)>0?value1.substr(0,nOr-1):"")+
caclOr(value1.substr(nOr-1,1),value1.substr(nOr+1,1))+
((nOr+2)<=value1.length()?value1.substr(nOr+2):"");
nOr=value1.find('+',0);
}
return value1;
}

string caclAnd(string x,string y)
{
if ((x=="1") && (y=="1"))
{
return "1";
}
else
{
return "0";
}

}

string caclOr(string x,string y)
{
if ((x=="0") && (y=="0"))
{
return "0";
}
else
{
return "1";
}
}
string caclNot(string x)
{ if (x=="1")
{
return "0";
}
else
{
return "1";
}
}

『柒』 用C++編程構造(P∧(P→Q))→Q的真值表

(P∧(P->Q))->Q
p->Q等價於(┐P)∨Q寫成C/C++語言就是(!P)||Q
P∧(P->Q)等價於P∧((┐p)∨Q)寫成C/C++就是P&&((!P)||Q))
(P∧(P->Q))->Q等價於(┐(P∧((┐p)∨Q)))∨Q寫成C/C++語言就是(!(P&&((!P)||Q))))||Q
Programe Code:
#include <iostream>
using namespace std;
int main()
{
int Q,P;
cout<<"P Q (P∧(P->Q))->Q\n";
for(P=0;P<=1;P++)
for(Q=0;Q<=1;Q++)
cout<<P<<" "<<Q<<" "
<<((!(P&&((!P)||Q)))||Q)<<endl;
}
//運行結果
P Q (P∧(P->Q))->Q
0 0 1
0 1 1
1 0 1
1 1 1

其實你可以將表達式化簡:
┐(P∧((┐p)∨Q))∨Q
<=> ┐((P∧┐p)∨(P∧Q)))∨Q
<=> ┐(0∨(P∨Q)))∨Q
<=> 1 ∨((┐(P∨Q))∨Q)
<=> 1

『捌』 用編程方法實現任意一個表達式的真值表

這個,不能有

熱點內容
app什麼情況下找不到伺服器 發布:2025-05-12 15:46:25 瀏覽:713
php跳過if 發布:2025-05-12 15:34:29 瀏覽:466
不定時演算法 發布:2025-05-12 15:30:16 瀏覽:129
c語言延時1ms程序 發布:2025-05-12 15:01:30 瀏覽:163
動物園靈長類動物配置什麼植物 發布:2025-05-12 14:49:59 瀏覽:732
wifi密碼設置什麼好 發布:2025-05-12 14:49:17 瀏覽:147
三位數乘兩位數速演算法 發布:2025-05-12 13:05:48 瀏覽:396
暴風影音緩存在哪裡 發布:2025-05-12 12:42:03 瀏覽:539
access資料庫exe 發布:2025-05-12 12:39:04 瀏覽:627
五開的配置是什麼 發布:2025-05-12 12:36:37 瀏覽:363