program pembuktian logika :D
program pembuktian logika :D
#include "iostream"
#include "math.h"
using namespace std;
// fungsi cek logika
int logic(int var1, char q2, int var2)
{
int x;
switch(q2)
{
case('^'):// konjungsi
x=var1&&var2?1:0;
break;
case('v'):// dijungsi
x=var1||var2?1:0;
break;
case('>'):// implikasi
x=var1&&!var2?0:1;
break;
case('x'):// biimplikasi
x=var1==var2?1:0;
break;
case('+'):// exor
x=var1!=var2?1:0;
break;
case('~'): // negasi
x=var2?0:1;
break;
default:
cout<<"error ";
}
cout<<x;
return x;
}
// fungsi proses
int fun2(int b_var)
{
int no=b_var;
int ulang = pow(2,b_var);
int hasil[ulang], hsl[ulang];
int arr[10*ulang];
// siapkan variabel dasar. berupa array
int num_arr=0;
for (int j = 1; j <= b_var; ++j)
{
for (int i = 1; i <= pow(2, j); ++i)
{
for (int x = 0; x < ulang/pow(2, j); ++x)
{
i%2==0?arr[num_arr]=0:arr[num_arr]=1;num_arr++;
}
}
}
// tampilkan variabel dasar
int re=0;
for (int i = 0; i < b_var; ++i)
{
cout<<"\n |var "<<i<<" = ";
for (int j = 0; j < ulang; ++j)
{
cout<<arr[re];
re++;
}
}
cout<<endl<<endl;
// lakukan hasil input
bool b_op=true;
while (b_op)
{
int q1, q3; char q2;
cin>>q1>>q2>>q3;
cout<<" |var "<<no<<" = ";
for (int j = 0; j < ulang; ++j)
{
if(q2=='h'){// jika minta help
cout<<"keterangan:\n |konjungsi(^), dijungsi(v), implikasi(>), \n |biimplikasi(x), exor(+), negasi(~), input manual(i)\n |untuk penulisan negasi sbb: 0~[var]. cth: 0~2"<<endl;
break;
} else if(q2=='='){ // jika ingin mengakhiri
cout<<"end";
b_op=false;
break;
} else if(q2=='i'){ // masukkan variabel manual
cin>>hasil[j];
} else { // aksi normal
hasil[j] = logic(arr[j+ulang*q1], q2, arr[j+ulang*q3]);
}
}
// tambahkan variabel baru hasil olahan input. masukkan ke array
for (int i = 0; i < ulang; ++i)
{
arr[num_arr]=hasil[i];num_arr++;
}
no++;
cout<<endl;
}
}
int main()
{
int b_var;
input:
cout<<"banyak variabel: ";
cin>>b_var;
// cek jika terlalu banyak variabel
if (b_var>12)
{
cout<<"\n |maksimal 12 variabel, \n |variabel anda terlalu \n |banyak untuk di proses!\n\n";
goto input;
} else {
fun2(b_var);
}
}
Komentar
Posting Komentar
Bingung?, silahkan komen dengan sopan ^_^