Don't like ads? PRO users don't see any ads ;-)

Base Converter

By: tariq007 on Jun 17th, 2012  |  syntax: C++  |  size: 4.88 KB  |  hits: 47  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #include<stdio.h>
  2.  
  3. int baseto10_converter(int num, int x);
  4. int hextodec(char *hexStr);
  5. void dectoupto9converter(int num,int x);
  6. void dectohex(int num);
  7.  
  8. int main()
  9. {
  10.     int inputbase, num, targetbase, temp=0, in;
  11.     char str[1000];
  12.     printf("                               Welcome to Base Converter                    \n\n\n\n");
  13.     printf("Type 1 to proceed or 0 to exit...");
  14.     while(scanf("%d", &in) && in)
  15.     {
  16.         printf("Enter inputbase : ");
  17.         scanf("%d", &inputbase);
  18.         printf("\nEnter targetbase : ");
  19.         scanf("%d", &targetbase);
  20.         if(inputbase!=10)
  21.         {
  22.             if(inputbase<=9 && targetbase==10)
  23.             {
  24.                 printf("\nEnter  number of base %d to Convert to %d base: ", inputbase,targetbase);
  25.                 scanf("%d", &num);
  26.                 temp=baseto10_converter(num, inputbase);
  27.                 printf("\nThe number in %d base is : %d", temp);
  28.             }
  29.             else if(inputbase<=9 && targetbase<=9)
  30.             {
  31.                 printf("\nEnter  number of base %d to Convert to %d base: ", inputbase, targetbase);
  32.                 scanf("%d", &num);
  33.                 temp=baseto10_converter(num, inputbase);
  34.                 printf("\nThe number in %d base is : ");
  35.                 dectoupto9converter(temp, targetbase);
  36.             }
  37.             else if(inputbase<=9 && targetbase==16)
  38.             {
  39.                 printf("\nEnter  number of base %d to Convert to %d base: ", inputbase, targetbase);
  40.                 scanf("%d", &num);
  41.                 temp=baseto10_converter(num, inputbase);
  42.                 printf("\nThe number in %d base is : ");
  43.                 dectohex(temp);
  44.             }
  45.             else if(inputbase==16 && targetbase==10)
  46.             {
  47.                 printf("\nEnter  number of base 16 to Convert to %d base: ", targetbase);
  48.                 getchar();
  49.                 gets(str);
  50.                 temp=hextodec(str);
  51.                 printf("\nThe hexadecimal number in %d base is : %d", targetbase, temp);
  52.             }
  53.             else if(inputbase==16 && targetbase<=9)
  54.             {
  55.                 printf("\nEnter  number of base 16 to Convert to %d base: ", targetbase);
  56.                 getchar();
  57.                 gets(str);
  58.                 printf("\nThe hexadecilam number in %d base is : ", targetbase);
  59.                 temp=hextodec(str);
  60.                 dectoupto9converter(temp, targetbase);
  61.             }
  62.         }
  63.         else
  64.         {
  65.             if(targetbase>=2 && targetbase<=9)
  66.             {
  67.                 printf("\nEnter a decimal number to covert to %d base : ", targetbase);
  68.                 scanf("%d", &num);
  69.                 printf("\nThe number in %d base is : ", targetbase);
  70.                 dectoupto9converter(num,targetbase);
  71.             }
  72.             else if(targetbase==16)
  73.             {
  74.                 printf("\nEnter a decimal number to covert to %d base : ", targetbase);
  75.                 scanf("%d", &num);
  76.                 printf("\nThe number in %d base is : ", targetbase);
  77.                 dectohex(num);
  78.             }
  79.         }
  80.         printf("\n");
  81.     }
  82.     printf("\n\n\n\nThanx for using my converter, greetings from Anjan\n\n\n");
  83.     return 0;
  84. }
  85.  
  86.  
  87. int baseto10_converter(int num, int x)
  88. {
  89.     int n, i=1, d=0, m=0, l=0;
  90.     n=num;
  91.     while(n>0)
  92.     {
  93.         m=(n%10);
  94.         n=(n/10);
  95.         l=m*i;
  96.         d+=l;
  97.         i*=x;
  98.     }
  99.     return d;
  100. }
  101. int hextodec(char *hexStr)
  102. {
  103.     int dec;
  104.     sscanf( hexStr, "%x", &dec);
  105.     return dec;
  106. }
  107.  
  108.  
  109. void dectoupto9converter(int num,int x)
  110. {
  111.     if(num)
  112.     {
  113.         dectoupto9converter(num/x, x);
  114.         putchar(num%x+'0');
  115.     }
  116.     return;
  117. }
  118.  
  119. void dectohex(int num)
  120. {
  121.     int mod;
  122.     if(num)
  123.     {
  124.         dectohex(num/16);
  125.         mod=num%16;
  126.  
  127.         switch(mod)
  128.         {
  129.         case 1 :
  130.             putchar('1');
  131.             break;
  132.         case 2 :
  133.             putchar('2');
  134.             break;
  135.         case 3 :
  136.             putchar('3');
  137.             break;
  138.         case 4 :
  139.             putchar('4');
  140.             break;
  141.         case 5 :
  142.             putchar('5');
  143.             break;
  144.         case 6 :
  145.             putchar('6');
  146.             break;
  147.         case 7 :
  148.             putchar('7');
  149.             break;
  150.         case 8 :
  151.             putchar('8');
  152.             break;
  153.         case 9 :
  154.             putchar('9');
  155.             break;
  156.         case 10 :
  157.             putchar('A');
  158.             break;
  159.         case 11 :
  160.             putchar('B');
  161.             break;
  162.         case 12 :
  163.             putchar('C');
  164.             break;
  165.         case 13 :
  166.             putchar('D');
  167.             break;
  168.         case 14 :
  169.             putchar('E');
  170.             break;
  171.         case 15 :
  172.             putchar('F');
  173.             break;
  174.         case 0 :
  175.             putchar('0');
  176.             break;
  177.         }
  178.     }
  179.     return;
  180. }