fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <limits.h>
  4. typedef struct Node {
  5. int data;
  6. struct Node* next;
  7. } Node;
  8. typedef struct Stack {
  9. Node* top;
  10. } Stack;
  11. void init_stack(Stack* s) {
  12. s->top = NULL;
  13. }
  14. int is_empty(Stack* s) {
  15. return s->top == NULL;
  16. }
  17. void push(Stack* s, int value) {
  18. Node* new_node = (Node*)malloc(sizeof(Node));
  19. new_node->data = value;
  20. new_node->next = s->top;
  21. s->top = new_node;
  22. }
  23. int pop(Stack* s) {
  24. if (is_empty(s)) {
  25. return INT_MIN;
  26. }
  27. Node* temp = s->top;
  28. int value = temp->data;
  29. s->top = temp->next;
  30. free(temp);
  31. return value;
  32. }
  33. void decimal_to_b(int number, int b) {
  34. Stack s;
  35. init_stack(&s);
  36. if (b < 2 || b > 16) {
  37. printf("Base invalide\n");
  38. return;
  39. }
  40. char hex[] = "0123456789ABCDEF";
  41. while (number) {
  42. push(&s, number % b);
  43. number /= b;
  44. }
  45. while (!is_empty(&s)) {
  46. printf("%c\t", hex[pop(&s)]);
  47. }
  48. printf("\n");
  49. }
  50.  
  51. int main() {
  52. int number;
  53. printf("Entrez un entier décimal : ");
  54. scanf("%d", &number);
  55. int base;
  56. printf("Entrez la base : ");
  57. scanf("%d", &base);
  58. decimal_to_b(number,base);
  59. return 0;
  60. }
  61.  
Success #stdin #stdout 0.01s 5288KB
stdin
Standard input is empty
stdout
Entrez un entier décimal : Entrez la base : Base invalide