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