Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.44 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. int decimal_to_binary(int decimal);
  5. int binary_to_decimal(int binary);
  6. int decimal_to_octal(int decimal);
  7. int octal_to_decimal(int octal);
  8. char* decimal_to_hexadecimal(int number);
  9. int hexadecimal_to_decimal( char hexadecimal[20] );
  10.  
  11. int main()
  12. {
  13. int result, option, number;
  14. char hexa[20];
  15.  
  16. printf("What do you want?\n");
  17.  
  18. printf("Input a choice - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10:\n1. Decimal to Binary\n2. Decimal to Octal\n3. Decimal to Hexadecimal\n4. Binary to decimal\n5. Binary to Octal\n6. Binary to Hexadecimal\n7. Octal to Decimal\n8. Octal to Binary\n9. Octal to Hexadecimal\n10. Hexadecimal to Decimal\n11. Hexadecimal to Binary\n12. Hexadecimal to Octal\n");
  19. scanf("%d", &option);
  20.  
  21. switch ( option )
  22. {
  23. // Decimal to Binary
  24. case 1:
  25. printf("Please enter your number: ");
  26. scanf("%d", &number);
  27. result = decimal_to_binary(number);
  28. printf("Here is your binary result: %d\n", result);
  29. break;
  30.  
  31. // Decimal to Octal
  32. case 2:
  33. printf("Please enter your number: ");
  34. scanf("%d", &number);
  35. result = decimal_to_octal(number);
  36. printf("Here is your octal result: %d\n", result);
  37. break;
  38.  
  39. // Decimal to Hexa
  40. case 3:
  41. printf("Please enter your number: ");
  42. scanf("%d", &number);
  43. char *hexaResult = decimal_to_hexadecimal(number);
  44. printf( "Here is your hexadecimal result: %s\n", hexaResult );
  45. break;
  46.  
  47. // Binary to Decimal
  48. case 4:
  49. printf("Please enter your number: ");
  50. scanf("%d", &number);
  51. result = binary_to_decimal(number);
  52. printf("Here is your decimal result: %d\n", result);
  53. break;
  54.  
  55. // Binary to Octal
  56. case 5:
  57. printf("Please enter your number: ");
  58. scanf("%d", &number);
  59. result = binary_to_decimal(number);
  60. result = decimal_to_octal(result);
  61. printf("Here is your octal result: %d\n", result);
  62. break;
  63.  
  64. // Binary to Hexa
  65. case 6:
  66. printf("Please enter your number: ");
  67. scanf("%d", &number);
  68. result = binary_to_decimal(number);
  69. char *hexaResult3 = decimal_to_hexadecimal(result);
  70. printf("Here is your hexadecimal number: %s\n", hexaResult3);
  71. break;
  72.  
  73. // Octal to Decimal
  74. case 7:
  75. printf("Please enter your number: ");
  76. scanf("%d", &number);
  77. result = octal_to_decimal(number);
  78. printf("Here is your decimal result: %d\n", result);
  79. break;
  80.  
  81. // Octal to Binary
  82. case 8:
  83. printf("Please enter your number: ");
  84. scanf("%d", &number);
  85. result = octal_to_decimal(number);
  86. result = decimal_to_binary(result);
  87. printf("Here is your binary result: %d\n", result);
  88. break;
  89.  
  90. // Octal to Hexa
  91. case 9:
  92. printf("Please enter your number: ");
  93. scanf("%d", &number);
  94. result = octal_to_decimal(number);
  95. char *hexaResult5 = decimal_to_hexadecimal(result);
  96. printf("Here is your hexadecimal result: %s\n", hexaResult5);
  97. break;
  98.  
  99. // Hexa to Decimal
  100. case 10:
  101. printf("Please enter your number: ");
  102. fseek( stdin, 0, SEEK_END );
  103. fgets( hexa, sizeof hexa, stdin );
  104. result = hexadecimal_to_decimal( hexa );
  105. printf("Here is your decimal result: %d\n", result);
  106. break;
  107.  
  108. // Hexa to Binary
  109. case 11:
  110. printf("Please enter your number: ");
  111. fseek( stdin, 0, SEEK_END );
  112. fgets( hexa, sizeof hexa, stdin );
  113. result = hexadecimal_to_decimal( hexa );
  114. result = decimal_to_binary(result);
  115. printf("Here is your binary result: %d\n", result);
  116. break;
  117.  
  118. // Hexa to Octal
  119. case 12:
  120. printf("Please enter your number: ");
  121. fseek( stdin, 0, SEEK_END );
  122. fgets( hexa, sizeof hexa, stdin );
  123. result = hexadecimal_to_decimal( hexa );
  124. result = decimal_to_octal(result);
  125. printf("Here is your octal result: %d\n", result);
  126. break;
  127.  
  128. default:
  129. printf("Invalid Number.");
  130. }
  131.  
  132. return 0;
  133. }
  134.  
  135. int decimal_to_binary(int decimal)
  136. {
  137. int remainder, binaryResult = 0, i = 1;
  138.  
  139. while (decimal != 0){
  140. remainder = decimal % 2;
  141. decimal /= 2;
  142. binaryResult += (remainder * i);
  143.  
  144. i *= 10;
  145. }
  146.  
  147. return binaryResult;
  148. }
  149.  
  150. int decimal_to_octal(int decimal)
  151. {
  152. int remainder, octalResult = 0, i = 1;
  153.  
  154. while (decimal != 0){
  155. remainder = decimal % 8;
  156. decimal /= 8;
  157. octalResult += (remainder * i);
  158.  
  159. i *= 10;
  160. }
  161.  
  162. return octalResult;
  163. }
  164.  
  165. int binary_to_decimal(int binary)
  166. {
  167. int decimalResult = 0, remainder, i = 0;
  168.  
  169. while(binary != 0){
  170. remainder = binary % 10;
  171. binary /= 10;
  172.  
  173. if ( remainder != 0){
  174. decimalResult = decimalResult + pow (2, i);
  175. }
  176.  
  177. i++;
  178. }
  179.  
  180. return decimalResult;
  181. }
  182.  
  183. int octal_to_decimal(int octal)
  184. {
  185. int octalResult = 0, remainder , i = 0;
  186.  
  187. while ( octal != 0){
  188. remainder = octal % 10;
  189. octal /= 10;
  190.  
  191. if ( remainder != 10){
  192. octalResult = octalResult + ( remainder * pow( 8, i));
  193. }
  194.  
  195. i++;
  196. }
  197.  
  198. return octalResult;
  199. }
  200.  
  201. char * decimal_to_hexadecimal(int decimal)
  202. {
  203. int remainder, hexadecimalNumber[30], i = 0, t, j;
  204.  
  205. char *str = (char *) malloc(30);
  206.  
  207. t = decimal;
  208.  
  209. while ( t != 0){
  210. remainder = t % 16;
  211.  
  212. if ( remainder < 10){
  213. remainder = remainder + 48;
  214. }
  215. else {
  216. remainder = remainder + 55;
  217. }
  218.  
  219. hexadecimalNumber[i++] = remainder;
  220. t /= 16;
  221. }
  222.  
  223. int k = 0;
  224. for( j = i - 1; j >= 0; j-- )v
  225. {
  226. str[k++] = hexadecimalNumber[j];
  227. }
  228. str[k] = '\0';
  229.  
  230. return str;
  231. }
  232.  
  233. int hexadecimal_to_decimal( char hexadecimal[20] )
  234. {
  235. int decimal = 0, i = 0, j, ch, p = 0;
  236.  
  237. i = strlen( hexadecimal );
  238.  
  239. for ( j = i - 2; j >= 0; j--){
  240. if ( hexadecimal[j] > 57){
  241. decimal += (hexadecimal[j] - 55) * pow(16, p);
  242. }
  243. else{
  244. decimal += (hexadecimal[j] - 48) * pow(16, p);
  245. }
  246.  
  247. p++;
  248. }
  249.  
  250. return decimal;
  251. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement