はじめに
どうも! みなため(@MinatameT)です。
この記事では、C言語でユーザーが入力した論理回路名に対応する「真理値表」を表示させるためのプログラムを紹介しています。
今回は、これまでの論理回路シリーズの総仕上げになっておりますので、不安のある方は以下の記事を見てください。全部で6種類あり、これらの知識を今回はすべて活用します。
また、これらに加えて「文字配列」の知識も必要ですが、ここでは詳しく説明しません。
それでは、ソースコード(例)と実行結果(例)を確認していきましょう。
入力した回路の真理値表を表示するプログラムの例
ソースコード
#include<stdio.h>
int main(void)
{
int a,b,x;
char table[5] = {0}; //配列の要素全体を0で初期化。
printf("真理値表を表示します。回路名を入力してください\n");
printf("(AND、OR、NAND、NOR、XOR、XNORの6種類です。)。>");
scanf("%s",&table);
printf("%s回路の真理値表(入力:A、B 出力:X)\n",table);
printf("A B X\n");
printf("------\n");
if(table[0]=='A' && table[1]=='N' && table[2]=='D' && table[3]==0 && table[4]==0) //AND回路
{
for(a=0; a<=1; a=a+1)
{
for(b=0; b<=1; b=b+1)
{
x = a & b; //AND演算
printf("%d %d %d\n",a,b,x);
}
}
}
else if(table[0]=='O' && table[1]=='R' && table[2]==0 && table[3]==0 && table[4]==0) //OR回路
{
for(a=0; a<=1; a=a+1)
{
for(b=0; b<=1; b=b+1)
{
x = a | b; //OR演算
printf("%d %d %d\n",a,b,x);
}
}
}
else if(table[0]=='N' && table[1]=='A' && table[2]=='N' && table[3]=='D' && table[4]==0) //NAND回路
{
for(a=0; a<=1; a=a+1)
{
for(b=0; b<=1; b=b+1)
{
x = !(a & b); //NAND演算
printf("%d %d %d\n",a,b,x);
}
}
}
else if(table[0]=='N' && table[1]=='O' && table[2]=='R' && table[3]==0 && table[4]==0) //NOR回路
{
for(a=0; a<=1; a=a+1)
{
for(b=0; b<=1; b=b+1)
{
x = !(a | b); //NOR演算
printf("%d %d %d\n",a,b,x);
}
}
}
else if(table[0]=='X' && table[1]=='O' && table[2]=='R' && table[3]==0 && table[4]==0) //XOR回路
{
for(a=0; a<=1; a=a+1)
{
for(b=0; b<=1; b=b+1)
{
x = a ^ b; //XOR演算
printf("%d %d %d\n",a,b,x);
}
}
}
else if(table[0]=='X' && table[1]=='N' && table[2]=='O' && table[3]=='R' && table[4]==0) //XNOR回路
{
for(a=0; a<=1; a=a+1)
{
for(b=0; b<=1; b=b+1)
{
x = !(a ^ b); //XNOR演算
printf("%d %d %d\n",a,b,x);
}
}
}
else
{
printf("入力した回路の真理値表はありません。別の名称で試してください。\n");
}
return(0);
}
ここで、table[0]が(table配列の)1文字め、table[1]が2文字め、table[2]が3文字め、table[3]が4文字め、table[4]が5文字めに該当します。
それでは、実行結果を確認していきます。
実行結果の例
真理値表を表示します。回路名を入力してください
(AND、OR、NAND、NOR、XOR、XNORの6種類です。)。>XOR
XOR回路の真理値表(入力:A、B 出力:X)
A B X
------
0 0 0
0 1 1
1 0 1
1 1 0
今回は「XOR」を入力しました。すると、真理値表が正しく表示されました!
それでは、ifやelse ifの条件に該当しない回路名を入力してみます。
真理値表を表示します。回路名を入力してください
(AND、OR、NAND、NOR、XOR、XNORの6種類です。)。>HOT
HOT回路の真理値表(入力:A、B 出力:X)
A B X
------
入力した回路の真理値表はありません。別の名称で試してください。
このように、HOT回路という名前の論理回路は存在せず、条件に該当しませんので、「入力した回路の真理値表はありません。別の名称で試してください。」と表示されました。
今回で、論理回路の真理値表シリーズはおそらく最後です。ここまでの内容はあまり難しいものではないのですが、まずはお疲れ様でした。
他にも(プログラミングに限らず)さまざまな記事を上げておりますので、よろしければ見ていってください。
これで、C言語での論理演算の基本はバッチリです。なお、シフト演算などの方法は別の機会に説明しようと思います。