Search This Blog

Tuesday, 10 October 2017

Inter conversion of decimal,binary,hexadecimal : C Program

/* Inter conversion of decimal,binary,hexadecimal */
/* Use "Turbo c" compiler (which comes with dosbox) to execute, other compiler may not have conio.h, math.h, delay() inbuilt */

#include<stdio.h>
#include<conio.h>
#include<math.h>

void Decimal2Binary();
void Decimal2Hexa();
void Binary2Decimal();
void Binary2Hexa();
void Hexa2Decimal();
void Hexa2Binary();

void main()
{
 int choice;
 clrscr();
 printf("\n 1. Decimal to Binary \n 2. Decimal to Hexadecimal");
 printf("\n 3. Binary to Decimal \n 4. Binary to Hexadecimal");
 printf("\n 5. Hexadecimal to Decimal \n 6. Hexadecimal to Binary");
 printf("\n 7. Exit \n\nEnter Your Choice : ");
 scanf("%d",&choice);
 clrscr();

 switch(choice)
 {
  case 1 :
   Decimal2Binary();
   break;
  case 2 :
   Decimal2Hexa();
   break;
  case 3 :
   Binary2Decimal();
   break;
  case 4 :
   Binary2Hexa();
   break;
  case 5 :
   Hexa2Decimal();
   break;
  case 6 :
   Hexa2Binary();
   break;
  case 7 :
    {
     clrscr();
     printf("\t\t Exiting in 3 seconds");
     delay(3000);
     exit(0);
    }
  default :
   printf("\n Invalid Choice \n");
 }
 getch();
}

void Decimal2Binary()
{
int n,bin[100],i,j;
printf("\nEnter Decimal Number To Find It's Binary : ");
scanf("%d",&n);
printf("The Binary of %d is ",n);
for(i=0;n!=0;i++)
{
bin[i]=n%2;
n=n/2;
}
for(j=i-1;j>=0;j--)
{
printf("%d",bin[j]);
}
printf("\n");
}

void Decimal2Hexa()
{
int n,r[10],i;
printf("Enter Decimal Number to get its hexadecimal : ");
scanf("%d",&n);
for(i=0;n!=0;i++)
{
r[i]=n%16;
n=n/16;
}
i--;
for(;i>=0;i--)
{
if(r[i]==10)
printf("A");
else if(r[i]==11)
printf("B");
else if(r[i]==12)
printf("C");
else if(r[i]==13)
printf("D");
else if(r[i]==14)
printf("E");
else if(r[i]==15)
printf("F");
else
printf("%d",r[i]);
}
printf("\n");
}

void Binary2Decimal()
{
int bin,n,r,sum=0,i;
printf("Enter a Binary Number : ");
scanf("%d",&bin);
n=bin;
for(i=0;n!=0;i++)
{
r=n%10;
sum=sum+r*pow(2,i);
n=n/10;
}
printf("The equivalent number of %d is %d\n",bin,sum);
}

void Binary2Hexa()
{
 /* here we will existing code of binary to decimal
    and then decimal to hexa */
    /* Binary to Decimal */
int bin,n,rem,r[10],sum=0,i;
printf("Enter a Binary Number : ");
scanf("%d",&bin);
n=bin;
for(i=0;n!=0;i++)
{
rem=n%10;
sum=sum+rem*pow(2,i);
n=n/10;
}
     /* Decimal to Hexa */
     n=sum;
for(i=0;n!=0;i++)
{
r[i]=n%16;
n=n/16;
}
i--;
printf("\nHexadecimal Equivalent : ");
for(;i>=0;i--)
{
if(r[i]==10)
printf("A");
else if(r[i]==11)
printf("B");
else if(r[i]==12)
printf("C");
else if(r[i]==13)
printf("D");
else if(r[i]==14)
printf("E");
else if(r[i]==15)
printf("F");
else
printf("%d",r[i]);
}
printf("\n");
}

void Hexa2Binary()
{
char hexa[20],i;
printf("\nEnter a Hexadecimal No : ");
scanf("%s",&hexa);
printf("\n Equivalent Binary : ");
for(i=0;hexa[i]!='\0';i++)
{
switch(hexa[i])
{
  case '0':
   printf("0000");
   break;
  case '1':
   printf("0001");
   break;
  case '2':
   printf("0010");
   break;
  case '3':
   printf("0011");
   break;
  case '4':
   printf("0100");
   break;
  case '5':
   printf("0101");
   break;
  case '6':
   printf("0110");
   break;
  case '7':
   printf("0111");
   break;
  case '8':
   printf("1000");
   break;
  case '9':
   printf("1001");
   break;
  case 'A':
   printf("1010");
   break;
  case 'B':
   printf("1011");
   break;
  case 'C':
   printf("1100");
   break;
  case 'D':
   printf("1101");
   break;
  case 'E':
   printf("1110");
   break;
  case 'F':
   printf("1111");
   break;
}
}
}


void Hexa2Decimal()
{

char hexa[20]="";
int i=0,j=0,len=0;
long int sum=0;
clrscr();
printf("\nEnter Hexadecimal number : ");
scanf("%s",&hexa);

len=strlen(hexa);

for(i=0,j=len-1;hexa[i]!='\0';i++,j--)
{
  switch(hexa[i])
  {
   case '0' : {sum=sum+0; break;}
   case '1' : {sum=sum+(1*(pow(16,j))); break;}
   case '2' : {sum=sum+(2*(pow(16,j))); break;}
   case '3' : {sum=sum+(3*(pow(16,j))); break;}
   case '4' : {sum=sum+(4*(pow(16,j))); break;}
   case '5' : {sum=sum+(5*(pow(16,j))); break;}
   case '6' : {sum=sum+(6*(pow(16,j))); break;}
   case '7' : {sum=sum+(7*(pow(16,j))); break;}
   case '8' : {sum=sum+(8*(pow(16,j))); break;}
   case '9' : {sum=sum+(9*(pow(16,j))); break;}
   case 'A' : {sum=sum+(10*(pow(16,j))); break;}
   case 'B' : {sum=sum+(11*(pow(16,j))); break;}
   case 'C' : {sum=sum+(12*(pow(16,j))); break;}
   case 'D' : {sum=sum+(13*(pow(16,j))); break;}
   case 'E' : {sum=sum+(14*(pow(16,j))); break;}
   case 'F' : {sum=sum+(15*(pow(16,j))); break;}
   default : { printf("Error occured !!!\n Exiting in 3 sec");delay(3000);exit(0);}
  }
}
printf("\nEquivalent Decimal : %ld",sum);
}

Output screens :

1 comment: