Advertisement
Guest User

Numbering System conversion

a guest
Feb 22nd, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.66 KB | None | 0 0
  1. /**
  2.  ** Coded By: Joeseph Makram
  3.  ** @20/2/2018
  4. */
  5.  
  6. #include <stdio.h>
  7. #include <string.h>
  8. #include <ctype.h>
  9. #include "cs50.h"
  10.  
  11.  
  12. int anyToDec(char*, int);
  13. int isHexa(char);
  14. char isHexa2();
  15. int decToAny();
  16.  
  17. int main()
  18. {
  19.     printf("=======================================================================================\n");
  20.     printf("\t 1. Decimal To Binary | 2. Decimal To Octal | 3. Decimal To Hexa\n");
  21.     printf("\t 4. Binary To Decimal | 5. Binary To Octal  | 6. Binary To Hexa\n");
  22.     printf("\t 7. Octal To Decimal  | 8. Octal To Binary  | 9. Octal To Hexa\n");
  23.     printf("\t 10. Hexa To Decimal  | 11. Hexa To Binary  | 12. Hexa To Octal \n");
  24.     printf("=======================================================================================\n");
  25.  
  26.     printf("Enter Your Conversion type: ");
  27.     int op = get_int();
  28.     char *number2 = 0;
  29.     int number = 0;
  30.  
  31.     switch(op)
  32.     {
  33.         /* Start First Case */
  34.         case 1:
  35.             printf("Enter Your Decimal Number: ");
  36.             number = get_int();
  37.  
  38.             printf("Your Binary Number Is: ");
  39.             decToAny(number, 2);
  40.         break;
  41.         /* End First Case */
  42.  
  43.         /* Start Second Case */
  44.         case 2:
  45.             printf("Enter Your Decimal Number: ");
  46.             number = get_int();
  47.  
  48.             printf("Your Octal Number Is: ");
  49.             decToAny(number, 8);
  50.         break;
  51.         /* End Second Case */
  52.  
  53.         /* Start Third Case */
  54.         case 3:
  55.             printf("Enter Your Decimal Number: ");
  56.             number = get_int();
  57.  
  58.             printf("Your Hexa Number Is: ");
  59.             decToAny(number, 16);
  60.         break;
  61.         /* End Third Case */
  62.  
  63.         /* Start 4th Case */
  64.         case 4:
  65.             printf("Enter Your Binary Number: ");
  66.             number2 = get_string();
  67.  
  68.             printf("Your Decimal Number Is: %i\n", anyToDec(number2, 2));
  69.         break;
  70.         /* End 4th Case */
  71.  
  72.         /* Start 5th Case */
  73.         case 5:
  74.             printf("Enter Your Binary Number: ");
  75.             number2 = get_string();
  76.  
  77.             printf("Your Octal Number Is: ");
  78.             number = anyToDec(number2, 2);
  79.             decToAny(number, 8);
  80.         break;
  81.         /* End 5th Case */
  82.  
  83.         /* Start 6th Case */
  84.         case 6:
  85.             printf("Enter Your Binary Number: ");
  86.             number2 = get_string();
  87.  
  88.             printf("Your Hexa Number Is: ");
  89.             number = anyToDec(number2, 2);
  90.             decToAny(number, 16);
  91.         break;
  92.         /* End 6th Case */
  93.  
  94.         /* Start 7th Case */
  95.         case 7:
  96.             printf("Enter Your Octal Number: ");
  97.             number2 = get_string();
  98.  
  99.             printf("Your Decimal Number Is: %i\n", anyToDec(number2, 8));
  100.         break;
  101.         /* End 7th Case */
  102.  
  103.         /* Start 8th Case */
  104.         case 8:
  105.             printf("Enter Your Octal Number: ");
  106.             number2 = get_string();
  107.  
  108.             printf("Your Binary Number Is: ");
  109.             number = anyToDec(number2, 8);
  110.             decToAny(number, 2);
  111.         break;
  112.         /* End 8th Case */
  113.  
  114.         /* Start 9th Case */
  115.         case 9:
  116.             printf("Enter Your Octal Number: ");
  117.             number2 = get_string();
  118.  
  119.             printf("Your Hexa Number Is: ");
  120.             number = anyToDec(number2, 8);
  121.             decToAny(number, 16);
  122.         break;
  123.         /* End 9th Case */
  124.  
  125.         /* Start 10th Case */
  126.         case 10:
  127.             printf("Enter Your Hexa Number: ");
  128.             number2 = get_string();
  129.  
  130.             printf("Your Decimal Number Is: %d\n", anyToDec(number2, 16));
  131.         break;
  132.         /* End 10th Case */
  133.  
  134.         /* Start 11th Case */
  135.         case 11:
  136.             printf("Enter Your Hexa Number: ");
  137.             number2 = get_string();
  138.  
  139.              printf("Your Binary Number Is: ");
  140.              number = anyToDec(number2, 16);
  141.              decToAny(number, 2);
  142.         break;
  143.         /* End 11th Case */
  144.  
  145.         /* Start 12th Case */
  146.         case 12:
  147.             printf("Enter Your Hexa Number: ");
  148.             number2 = get_string();
  149.  
  150.              printf("Your Octal Number Is: ");
  151.              number = anyToDec(number2, 16);
  152.              decToAny(number, 8);
  153.         break;
  154.         /* End 12th Case */
  155.  
  156.     }
  157.  
  158.  
  159.  
  160.     return 0;
  161. }
  162.  
  163.  
  164. int decToAny(dec_num, base){
  165.     int counter = 0;
  166.  
  167.     int result[1000];
  168.  
  169.     while(dec_num >= base)
  170.     {
  171.         result[counter] = (dec_num % base);
  172.         counter ++;
  173.  
  174.         if((dec_num % base) == 0){
  175.             dec_num = dec_num / base;
  176.         } else {
  177.             dec_num = (dec_num - (dec_num % base)) / base;
  178.         }
  179.  
  180.     }
  181.     result[counter] = (dec_num % base);
  182.     counter ++;
  183.  
  184.     int j;
  185.     for (j = counter - 1; j >= 0; j--){
  186.         if(result[j] > 9){
  187.             printf("%c", isHexa2(result[j]));
  188.         }else{
  189.             printf("%i", result[j]);
  190.         }
  191.     }
  192.     printf("\n");
  193.     return 0;
  194. }
  195.  
  196.  
  197. int anyToDec(char *hex, int base){
  198.     const int len = strlen(hex) - 1;
  199.     int power = 1;
  200.     int dec = 0;
  201.  
  202.     int i;
  203.     for(i = len; i >= 0; i--){
  204.         dec += isHexa(hex[i]) * power;
  205.         power *= base;
  206.     }
  207.     return dec;
  208. }
  209.  
  210. int isHexa(char c){
  211.     if(isalpha(c)){
  212.         return toupper(c) - 'A' + 10;
  213.     }
  214.     return c - '0';
  215. }
  216.  
  217. char isHexa2(int num){
  218.  
  219.     char result = 0;
  220.  
  221.     if(num == 10){
  222.         result = 'A';
  223.     } else if(num == 11){
  224.         result = 'B';
  225.     } else if(num == 12){
  226.         result = 'C';
  227.     } else if (num == 13){
  228.         result = 'D';
  229.     } else if(num == 14){
  230.         result = 'E';
  231.     } else if(num == 15){
  232.         result = 'F';
  233.     }
  234.  
  235.     return result;
  236. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement