fork(2) download
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4.  
  5. int main(int argc, char *argv[]) {
  6. // Stack
  7. int decimal, q, r;
  8. int counter, i;
  9. char *binary = NULL;
  10. char *aux;
  11.  
  12. printf("Digite um número em base decimal: ");
  13. scanf("%d", &decimal);
  14.  
  15. counter = 1;
  16. while (decimal >= 1) {
  17. q = decimal / 2;
  18. r = decimal - (q * 2);
  19.  
  20. // Heap
  21. aux = (char *) malloc(counter * sizeof(char));
  22. if (binary != NULL) {
  23. memcpy(aux, binary, counter-1);
  24. free(binary);
  25. }
  26. binary = aux;
  27.  
  28. if (r == 0) {
  29. binary[counter-1] = 48; //'0';
  30. } else {
  31. binary[counter-1] = 49; //'1';
  32. }
  33.  
  34. //printf("resto %d = %d\n", counter, r);
  35. counter++;
  36. decimal = q;
  37. }
  38. //printf("ultimo quociente = %d\n", q);
  39.  
  40. printf("Resultado em binário = ");
  41. for (i = counter-1; i >= 0; i--) {
  42. printf("%c", binary[i]);
  43. }
  44. printf("\n");
  45.  
  46. free(binary);
  47.  
  48. return 0;
  49. }
Success #stdin #stdout 0s 2144KB
stdin
14
stdout
Digite um número em base decimal: Resultado em binário = 1110