Friday, May 17, 2013

C CODE FOR K-MAP SOLVER

Hey Guys i had created c program for solving K-map(Karnaugh map) go through it!!


K-MAP SOLVER



#include<stdio.h>
#include<conio.h>
void main()
{
 int i,j,a[4],m[4]={0,0,0,0},n,c=0,d,k[8]={0,0,0,0,0,0,0,0},e,f=0,g,l[8]={0,0,0,0,0,0,0,0},
y[13]={0,0,0,0,0,0,0,0,0,0,0,0,0},o[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
p[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},b=0,h[64];
 int s,t,u,v,q,z;
 clrscr();
 for(i=0;i<64;i++)
 {
 h[i]=0;
 }
 printf("how many variable kmap you want to solve (2,3,4):");
 scanf("%d",&d);
 if(d==2)
 {
printf("enter how many minterms you want to enter:");
scanf("%d",&n);

if(n>4)
{
   printf("you have entered wrong minterms because maximum minterm in 2 variable k-map is 4:");
   goto l;
}

z:

for(i=0;i<n;i++)
{
       printf("%d""th minterm:",i);
       scanf("%d",&a[i]);
}
printf("\nEntered minterms are : ");

for(i=0;i<=3;i++)
{
printf("%d",a[i]);
}
printf("\n if emtered minterms are correct press 1 or press 0 to go back:");
scanf("%d",&q);
if(q==0)
{
goto z;
}
if(q==1)
{


printf("\n The matrix is");
for(i=0;i<=3;i++)
{
for(j=0;j<=3;j++)
{
     if(a[i]-j==0)
     {
 m[j]=1;

     }
}
}
printf("\n");
for(i=0;i<=3;i++)
{
printf("%d",m[i]);
}
printf("\n");
printf("the ans is:");
for(i=0;i<=3;i++)
{              if(m[i]==1)
      {
    c++;
      }
}
if(c==4)
{
printf("y=1");
}

else
{
printf("y=");
if(m[0]==1&&m[1]==1)
{
printf("!A+");
}
if(m[0]==1&&m[2]==1)
{
printf("!B+");
}
if(m[1]==1&&m[3]==1)
{
printf("B+");
}
if(m[2]==1&&m[3]==1)
{
printf("A+");
}
if(m[1]==0&&m[2]==0&&m[0]==1)
{
    printf("!A!B+");
}
if(m[1]==1&&m[3]==0&&m[0]==0)
{
    printf("!AB+");
}
if(m[0]==0&&m[2]==1&&m[3]==0)
{
printf("A!B+");
}
if(m[1]==0&&m[2]==0&&m[3]==1)
{
    printf("AB");
}

}
getch();
}
}
if(d==3)
{
printf("enter how many minterms you want to enter:");
scanf("%d",&e);

if(e>8)
{
   printf("you have entered wrong minterms because maximum minterm in 3 variable is 8:");
   goto l;
}

t:
for(i=0;i<e;i++)
{
       printf("%d""th minterm:",i);
       scanf("%d",&k[i]);
}

printf("\n entered minterms are");
for(i=0;i<=7;i++)
{
printf("%d",k[i]);
}

printf("\n if entered minterms are correct press 1 or press 0 to go back:");
scanf("%d",&s);
if(s==0)
{
goto t;
}
if(s==1)
{
printf("\n Final matrix");
for(i=0;i<=7;i++)
{
for(j=0;j<=7;j++)
{
     if(k[i]-j==0)
     {
 l[j]=1;

     }
}
}
printf("\n");
for(i=0;i<=7;i++)
{
printf("%d",l[i]);
}
printf("\n");
printf("the ans is:");
for(i=0;i<=7;i++)
{              if(l[i]==1)
      {
    f++;
      }
}
if(f==8)
{
printf("x=1");
}
else
{
printf("x=");

       if(l[0]==1&&l[1]==1&&l[4]==1&&l[5]==1)
       {
y[0]=1;
printf("!B+");
       }
       if(l[2]==1&&l[3]==1&&l[6]==1&&l[7]==1)
       {
y[1]=2;

printf("B+");
       }

       if(l[0]==1&&l[1]==1&&l[2]==1&&l[3]==1)
       {
y[2]=3;

printf("!A+");
       }
       if(l[4]==1&&l[5]==1&&l[6]==1&&l[7]==1)
       {
y[3]=4;

printf("A+");
       }
       if(l[0]==1&&l[2]==1&&l[4]==1&&l[6]==1)
       {
y[4]=5;
printf("!C+");
       }
       if(l[1]==1&&l[3]==1&&l[7]==1&&l[5]==1)
       {
y[5]=6;

printf("C+");
       }
       if(y[4]!=5&&y[0]!=1&&l[0]==1&&l[4]==1)
       {
y[6]=7;
printf("!B!C+");
       }
       if(y[0]!=1&&l[1]==1&&l[5]==1&&y[5]!=6)
       {
y[7]=8;
printf("!BC+");
       }
       if(y[5]!=6&&y[1]!=2&&l[3]==1&&l[7]==1)
       {
y[8]=9;
printf("BC+");
       }

       if(y[4]!=5&&y[1]!=2&&l[2]==1&&l[6]==1)
       {
y[9]=10;
printf("B!C+");
       }


       if(y[0]!=1&&l[0]==1&&l[1]==1&&y[2]!=3)
       {
y[10]=11;
printf("!B!A+");
       }
       if(y[1]!=2&&l[3]==1&&l[2]==1&&y[2]!=3)
       {
y[11]=12;
printf("!AB+");
       }
       if(y[1]!=2&&l[7]==1&&l[6]==1&&y[3]!=4)
       {
y[12]=13;
printf("AB+");
       }
       if(y[0]!=1&&l[4]==1&&l[5]==1&&y[3]!=4)
       {
y[13]=14;
printf("!BA+");
       }


       if(y[5]!=6&&l[3]==1&&l[1]==1&&y[2]!=3)
       {

printf("!AC+");
       }
       if(y[5]!=6&&l[5]==1&&l[7]==1&&y[3]!=4)
       {

printf("AC+");
       }
       if(y[2]!=3&&y[4]!=5&&l[0]==1&&l[2]==1)
       {
printf("!A!C+");
       }
       if(y[4]!=5&&l[4]==1&&l[6]==1&&y[3]!=4)
       {

printf("A!C+");
       }
       if(l[1]==0&&l[4]==0&&l[0]==1&&l[2]==0)
       {

printf("!A!B!C+");
       }
       if(l[0]==0&&l[5]==0&&l[1]==1&&l[3]==0)
       {
printf("!A!BC+");
       }
       if(l[1]==0&&l[2]==0&&l[3]==1&&l[7]==0)
       {
printf("!ABC+");
       }
       if(l[3]==0&&l[6]==0&&l[0]==0&&l[2]==1)
       {
printf("!AB!C+");
       }
       if(l[0]==0&&l[4]==1&&l[6]==0&&l[5]==0)
       {
printf("A!B!C+");
       }
       if(l[1]==0&&l[4]==0&&l[5]==1&&l[7]==0)
       {
printf("A!BC+");
       }
       if(l[3]==0&&l[5]==0&&l[6]==0&&l[7]==1)
       {
printf("ABC+");
       }
       if(l[2]==0&&l[4]==0&&l[6]==1&&l[7]==0)
       {
printf("AB!C+");
       }



}
getch();
}
}

if(d==4)
{
printf("enter how many minterms you want to enter:");
scanf("%d",&g);

if(g>16)
{
   printf("you have entered wrong minterms because maximum minterm in 4 variable is 16:");
   goto l;
}
v:
for(i=0;i<g;i++)
{
       printf("%d""th minterm:",i);
       scanf("%d",&o[i]);
}

printf("\n entered minterms are");
for(i=0;i<g;i++)
{
printf("%d",o[i]);
}

printf("\n if minterms are  correct press 1 or press 0 to go back:");
scanf("%d",&u);
if(u==0)
{
goto v;
}
if(u==1)
{
printf("\n Final matrix is:");
for(i=0;i<g;i++)
{
for(j=0;j<=15;j++)
{
     if(o[i]-j==0)
     {
 p[j]=1;

     }
}
}
printf("\n");
for(i=0;i<=15;i++)
{
printf("%d",p[i]);
}
printf("\n");
printf("the ans is:");
for(i=0;i<=15;i++)
{              if(p[i]==1)
      {
    b++;
      }
}
if(b==16)
{
printf("x=1");
}
else
{
printf("x=");

       if(p[0]==1&&p[1]==1&&p[2]==1&&p[3]==1&&p[4]==1&&p[5]==1&&p[6]==1&&p[7]==1)
       {
h[0]=1;
printf("!A+");
       }
       if(p[8]==1&&p[9]==1&&p[10]==1&&p[11]==1&&p[12]==1&&p[13]==1&&p[14]==1&&p[15]==1)
       {
h[1]=1;
printf("A+");
       }
       if(p[0]==1&&p[1]==1&&p[2]==1&&p[3]==1&&p[8]==1&&p[9]==1&&p[10]==1&&p[11]==1)
       {
h[2]=1;
printf("!B+");
       }
       if(p[4]==1&&p[5]==1&&p[6]==1&&p[7]==1&&p[12]==1&&p[13]==1&&p[14]==1&&p[15]==1)
       {
h[3]=1;
printf("B+");
       }
       if(p[0]==1&&p[1]==1&&p[4]==1&&p[5]==1&&p[12]==1&&p[13]==1&&p[8]==1&&p[9]==1)
       {
h[4]=1;
printf("!C+");
       }
       if(p[2]==1&&p[3]==1&&p[6]==1&&p[7]==1&&p[10]==1&&p[11]==1&&p[14]==1&&p[15]==1)
       {
h[5]=1;
printf("C+");
       }
       if(p[0]==1&&p[2]==1&&p[4]==1&&p[6]==1&&p[8]==1&&p[10]==1&&p[12]==1&&p[14]==1)
       {
h[6]=1;
printf("!D+");
       }
       if(p[1]==1&&p[3]==1&&p[5]==1&&p[7]==1&&p[9]==1&&p[11]==1&&p[13]==1&&p[15]==1)
       {
h[7]=1;
printf("D+");
       }


       if(p[0]==1&&p[1]==1&&p[2]==1&&p[3]==1&&h[0]!=1&&h[2]!=1)
       {
h[8]=1;
printf("!A!B+");
       }
       if(p[4]==1&&p[5]==1&&p[6]==1&&p[7]==1&&h[0]!=1&&h[3]!=1)
       {
h[9]=1;
printf("!AB+");
       }
       if(p[12]==1&&p[13]==1&&p[14]==1&&p[15]==1&&h[1]!=1&&h[3]!=1)
       {
h[10]=1;
printf("AB+");
       }
       if(p[8]==1&&p[9]==1&&p[10]==1&&p[11]==1&&h[1]!=1&&h[2]!=1)
       {
h[11]=1;
printf("A!B+");
       }
       if(p[0]==1&&p[4]==1&&p[8]==1&&p[12]==1&&h[4]!=1&&h[6]!=1)
       {
h[12]=1;
printf("!C!D+");
       }
       if(p[1]==1&&p[5]==1&&p[9]==1&&p[13]==1&&h[4]!=1&&h[7]!=1)
       {
h[13]=1;
printf("!CD+");
       }
       if(p[3]==1&&p[7]==1&&p[11]==1&&p[15]==1&&h[7]!=1&&h[5]!=1)
       {
h[14]=1;
printf("CD+");
       }
       if(p[2]==1&&p[6]==1&&p[10]==1&&p[14]==1&&h[5]!=1&&h[6]!=1)
       {
h[15]=1;
printf("C!D+");
       }
       if(p[0]==1&&p[1]==1&&p[4]==1&&p[5]==1&&h[0]!=1&&h[4]!=1)
       {
h[16]=1;
printf("!A!C+");
       }
       if(p[1]==1&&p[3]==1&&p[5]==1&&p[7]==1&&h[0]!=1&&h[7]!=1)
       {
h[17]=1;
printf("!AD+");
       }
       if(p[2]==1&&p[3]==1&&p[6]==1&&p[7]==1&&h[0]!=1&&h[5]!=1)
       {
h[18]=1;
printf("!AC+");
       }
       if(p[0]==1&&p[2]==1&&p[4]==1&&p[6]==1&&h[0]!=1&&h[6]!=1)
       {
h[19]=1;
printf("!A!D+");
       }
       if(p[4]==1&&p[5]==1&&p[12]==1&&p[13]==1&&h[3]!=1&&h[4]!=1)
       {
h[20]=1;
printf("B!C+");
       }
       if(p[5]==1&&p[7]==1&&p[13]==1&&p[15]==1&&h[3]!=1&&h[7]!=1)
       {
h[21]=1;
printf("BD+");
       }
       if(p[6]==1&&p[7]==1&&p[14]==1&&p[15]==1&&h[3]!=1&&h[5]!=1)
       {
h[22]=1;
printf("BC+");
       }
       if(p[4]==1&&p[6]==1&&p[12]==1&&p[14]==1&&h[3]!=1&&h[6]!=1)
       {
h[23]=1;
printf("B!D+");
       }
       if(p[8]==1&&p[9]==1&&p[12]==1&&p[13]==1&&h[1]!=1&&h[4]!=1)
       {
h[24]=1;
printf("A!C+");
       }
       if(p[9]==1&&p[11]==1&&p[13]==1&&p[15]==1&&h[1]!=1&&h[7]!=1)
       {
h[25]=1;
printf("AD+");
       }
       if(p[10]==1&&p[11]==1&&p[14]==1&&p[15]==1&&h[1]!=1&&h[5]!=1)
       {
h[26]=1;
printf("AC+");
       }
       if(p[8]==1&&p[10]==1&&p[12]==1&&p[14]==1&&h[1]!=1&&h[6]!=1)
       {
h[27]=1;
printf("A!D+");
       }
       if(p[0]==1&&p[1]==1&&p[8]==1&&p[9]==1&&h[2]!=1&&h[4]!=1)
       {
h[28]=1;
printf("!B!C+");
       }
       if(p[1]==1&&p[3]==1&&p[9]==1&&p[11]==1&&h[2]!=1&&h[7]!=1)
       {
h[29]=1;
printf("!BD+");
       }
       if(p[2]==1&&p[3]==1&&p[10]==1&&p[11]==1&&h[2]!=1&&h[5]!=1)
       {
h[30]=1;
printf("!BC+");
       }
       if(p[0]==1&&p[2]==1&&p[8]==1&&p[10]==1&&h[2]!=1&&h[6]!=1)
       {
h[31]=1;
printf("!B!D+");
       }
       if(p[0]==1&&p[1]==1&&h[8]!=1&&h[16]!=1&&h[28]!=1&&h[0]!=1&&h[2]!=1&&h[4]!=1)
       {
h[32]=1;
printf("!A!B!C+");
       }
       if(p[1]==1&&p[3]==1&&h[8]!=1&&h[17]!=1&&h[29]!=1&&h[0]!=1&&h[2]!=1&&h[7]!=1)
       {
h[33]=1;
printf("!A!BD+");
       }
       if(p[2]==1&&p[3]==1&&h[8]!=1&&h[18]!=1&&h[30]!=1&&h[0]!=1&&h[2]!=1&&h[5]!=1)
       {
h[34]=1;
printf("!A!BC+");
       }
       if(p[0]==1&&p[2]==1&&h[8]!=1&&h[19]!=1&&h[31]!=1&&h[0]!=1&&h[2]!=1&&h[6]!=1)
       {
h[35]=1;
printf("!A!B!D+");
       }
       if(p[4]==1&&p[5]==1&&h[9]!=1&&h[16]!=1&&h[20]!=1&&h[0]!=1&&h[3]!=1&&h[4]!=1)
       {
h[36]=1;
printf("!AB!C+");
       }
       if(p[5]==1&&p[7]==1&&h[9]!=1&&h[17]!=1&&h[21]!=1&&h[0]!=1&&h[3]!=1&&h[7]!=1)
       {
h[37]=1;
printf("!ABD+");
       }
       if(p[6]==1&&p[7]==1&&h[9]!=1&&h[18]!=1&&h[22]!=1&&h[0]!=1&&h[3]!=1&&h[5]!=1)
       {
h[38]=1;
printf("!ABC+");
       }
       if(p[4]==1&&p[6]==1&&h[9]!=1&&h[19]!=1&&h[23]!=1&&h[0]!=1&&h[3]!=1&&h[6]!=1)
       {
h[39]=1;
printf("!AB!D+");
       }
       if(p[12]==1&&p[13]==1&&h[10]!=1&&h[20]!=1&&h[24]!=1&&h[1]!=1&&h[3]!=1&&h[4]!=1)
       {
h[40]=1;
printf("AB!C+");
       }
       if(p[13]==1&&p[15]==1&&h[10]!=1&&h[21]!=1&&h[25]!=1&&h[1]!=1&&h[3]!=1&&h[7]!=1)
       {
h[41]=1;
printf("!A!BD+");
       }
       if(p[14]==1&&p[15]==1&&h[10]!=1&&h[22]!=1&&h[26]!=1&&h[5]!=1&&h[3]!=1&&h[1]!=1)
       {
h[42]=1;
printf("!A!BC+");
       }
       if(p[12]==1&&p[14]==1&&h[10]!=1&&h[23]!=1&&h[27]!=1&&h[1]!=1&&h[6]!=1&&h[3]!=1)
       {
h[43]=1;
printf("!A!B!D+");
       }
       if(p[8]==1&&p[9]==1&&h[11]!=1&&h[24]!=1&&h[28]!=1&&h[1]!=1&&h[2]!=1&&h[4]!=1)
       {
h[44]=1;
printf("A!B!C+");
       }
       if(p[9]==1&&p[11]==1&&h[11]!=1&&h[25]!=1&&h[29]!=1&&h[7]!=1&&h[2]!=1&&h[1]!=1)
       {
h[45]=1;
printf("A!BD+");
       }
       if(p[10]==1&&p[11]==1&&h[11]!=1&&h[26]!=1&&h[30]!=1&&h[1]!=1&&h[2]!=1&&h[5]!=1)
       {
h[46]=1;
printf("A!BC+");
       }
       if(p[8]==1&&p[10]==1&&h[11]!=1&&h[27]!=1&&h[31]!=1&&h[6]!=1&&h[2]!=1&&h[1]!=1)
       {
h[47]=1;
printf("A!B!D+");
       }
       if(p[0]==1&&p[4]==1&&h[12]!=1&&h[16]!=1&&h[19]!=1&&h[0]!=1&&h[6]!=1&&h[4]!=1)
       {
h[48]=1;
printf("!A!C!D+");
       }
       if(p[4]==1&&p[12]==1&&h[12]!=1&&h[20]!=1&&h[23]!=1&&h[3]!=1&&h[6]!=1&&h[4]!=1)
       {
h[49]=1;
printf("B!C!D+");
       }
       if(p[8]==1&&p[12]==1&&h[12]!=1&&h[24]!=1&&h[27]!=1&&h[1]!=1&&h[6]!=1&&h[4]!=1)
       {
h[50]=1;
printf("A!C!D+");
       }
       if(p[0]==1&&p[8]==1&&h[12]!=1&&h[28]!=1&&h[31]!=1&&h[6]!=1&&h[2]!=1&&h[4]!=1)
       {
h[51]=1;
printf("!B!C!D+");
       }
       if(p[1]==1&&p[5]==1&&h[13]!=1&&h[16]!=1&&h[17]!=1&&h[0]!=1&&h[7]!=1&&h[4]!=1)
       {
h[52]=1;
printf("!A!CD+");
       }
       if(p[5]==1&&p[13]==1&&h[13]!=1&&h[20]!=1&&h[21]!=1&&h[3]!=1&&h[7]!=1&&h[4]!=1)
       {
h[53]=1;
printf("B!CD+");
       }
       if(p[9]==1&&p[13]==1&&h[13]!=1&&h[24]!=1&&h[25]!=1&&h[1]!=1&&h[7]!=1&&h[4]!=1)
       {
h[54]=1;
printf("A!CD+");
       }
       if(p[1]==1&&p[9]==1&&h[13]!=1&&h[28]!=1&&h[29]!=1&&h[7]!=1&&h[2]!=1&&h[4]!=1)
       {
h[55]=1;
printf("!B!CD+");
       }
       if(p[3]==1&&p[7]==1&&h[14]!=1&&h[17]!=1&&h[18]!=1&&h[5]!=1&&h[7]!=1&&h[0]!=1)
       {
h[56]=1;
printf("!ACD+");
       }
       if(p[7]==1&&p[15]==1&&h[14]!=1&&h[21]!=1&&h[22]!=1&&h[5]!=1&&h[7]!=1&&h[3]!=1)
       {
h[57]=1;
printf("BCD+");
       }
       if(p[11]==1&&p[15]==1&&h[14]!=1&&h[25]!=1&&h[26]!=1&&h[5]!=1&&h[7]!=1&&h[1]!=1)
       {
h[58]=1;
printf("ACD+");
       }
       if(p[3]==1&&p[11]==1&&h[14]!=1&&h[29]!=1&&h[30]!=1&&h[5]!=1&&h[2]!=1&&h[7]!=1)
       {
h[59]=1;
printf("!BCD+");
       }
       if(p[2]==1&&p[6]==1&&h[15]!=1&&h[18]!=1&&h[19]!=1&&h[0]!=1&&h[6]!=1&&h[5]!=1)
       {
h[60]=1;
printf("!AC!D+");
       }
       if(p[6]==1&&p[14]==1&&h[15]!=1&&h[22]!=1&&h[23]!=1&&h[5]!=1&&h[6]!=1&&h[3]!=1)
       {
h[61]=1;
printf("BC!D+");
       }
       if(p[10]==1&&p[14]==1&&h[15]!=1&&h[26]!=1&&h[27]!=1&&h[1]!=1&&h[6]!=1&&h[5]!=1)
       {
h[62]=1;
printf("AC!D+");
       }
       if(p[2]==1&&p[10]==1&&h[15]!=1&&h[30]!=1&&h[31]!=1&&h[5]!=1&&h[2]!=1&&h[6]!=1)
       {
h[63]=1;
printf("!BC!D+");
       }
       if(p[0]==1&&p[1]==0&&p[2]==0&&p[4]==0&&p[8]==0)
       {
printf("!A!B!C!D+");
       }
       if(p[1]==1&&p[0]==0&&p[3]==0&&p[5]==0&&p[9]==0)
       {
printf("!A!B!CD+");
       }
       if(p[2]==1&&p[0]==0&&p[3]==0&&p[6]==0&&p[10]==0)
       {
printf("!A!BC!D+");
       }
       if(p[3]==1&&p[1]==0&&p[2]==0&&p[7]==0&&p[11]==0)
       {
printf("!A!BCD+");
       }
       if(p[4]==1&&p[0]==0&&p[5]==0&&p[6]==0&&p[12]==0)
       {
printf("!AB!C!D+");
       }
       if(p[5]==1&&p[1]==0&&p[4]==0&&p[7]==0&&p[13]==0)
       {
printf("!AB!CD+");
       }
       if(p[6]==1&&p[2]==0&&p[4]==0&&p[7]==0&&p[14]==0)
       {
printf("!ABC!D+");
       }
       if(p[7]==1&&p[3]==0&&p[5]==0&&p[6]==0&&p[15]==0)
       {
printf("!ABCD+");
       }
       if(p[8]==1&&p[0]==0&&p[9]==0&&p[10]==0&&p[12]==0)
       {
printf("A!B!C!D+");
       }
       if(p[9]==1&&p[1]==0&&p[8]==0&&p[11]==0&&p[13]==0)
       {
printf("A!B!CD+");
       }
       if(p[10]==1&&p[2]==0&&p[8]==0&&p[11]==0&&p[14]==0)
       {
printf("A!BC!D+");
       }
       if(p[11]==1&&p[3]==0&&p[9]==0&&p[10]==0&&p[15]==0)
       {
printf("A!BCD+");
       }
       if(p[12]==1&&p[4]==0&&p[8]==0&&p[13]==0&&p[14]==0)
       {
printf("AB!C!D+");
       }
       if(p[13]==1&&p[5]==0&&p[9]==0&&p[12]==0&&p[15]==0)
       {
printf("AB!CD+");
       }
       if(p[14]==1&&p[6]==0&&p[10]==0&&p[12]==0&&p[15]==0)
       {
printf("ABC!D+");
       }
       if(p[15]==1&&p[7]==0&&p[11]==0&&p[13]==0&&p[14]==0)
       {
printf("ABCD+");
       }

}
l:

getch();
}
}
}



2 comments:

  1. U hav messed it up!! the code is absolutely un-readable..

    ReplyDelete
  2. Ok, I tried. srinivas sax is right. You messed it up. Messy indentation and the uses of multiple goto statements made your code impossible to read and follow.

    ReplyDelete