Advertisement
Guest User

Untitled

a guest
Mar 31st, 2020
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.34 KB | None | 0 0
  1. #include <unistd.h>
  2. #include <stdio.h>
  3. void ptc(char c)
  4. {
  5. write(1, &c, 1);
  6. }
  7.  
  8. void inter(void)
  9. {
  10. ptc(',');
  11. ptc(' ');
  12. }
  13.  
  14. void ft_putnbr(int nb)
  15. {
  16. if (nb < 0)
  17. {
  18. nb = -nb;
  19. }
  20. if (nb >= 10)
  21. {
  22. ft_putnbr(nb / 10);
  23. ft_putnbr(nb % 10);
  24. }
  25. else
  26. ptc(nb + '0');
  27. }
  28.  
  29. int is_finish(int n, int *tab)
  30. {
  31. if (tab[0] == 10-n)
  32. {
  33. return -1;
  34. }
  35. else
  36. return 1;
  37. }
  38.  
  39. void ft_print_combn(int n)
  40. {
  41. int tab[10] = {0};
  42. int i;
  43. int pos;
  44. int len;
  45. int copy;
  46. int l;
  47. int m;
  48. int nombre = 0;
  49.  
  50. m = 0;
  51. len = 0;
  52. pos = 1;
  53. i = 0;
  54. n--;
  55. copy = n;
  56. //printf("i : %d - n : %d\n", i, n);
  57. while (i <= n)
  58. {
  59. tab[i] = i;
  60. i++;
  61. }
  62. int j = 0;
  63. while (j <= n)
  64. j++;
  65. while (len <= copy)
  66. {
  67. ft_putnbr(tab[len]);
  68. len++;
  69. }
  70. inter();
  71. while (is_finish(n, tab) != -1)
  72. {
  73. l = 1;
  74. m = 0;
  75. pos = 1;
  76. len = 0;
  77. if (tab[n] != 9)
  78. tab[n] = tab[n] + 1;
  79. else if (tab[n] == 9)
  80. {
  81. while (tab[n - pos] + 1 == tab[n - m])
  82. {
  83. pos++;
  84. m++;
  85. }
  86. tab[ n - pos] += 1;
  87. j = n - pos + 1;
  88. l = 1;
  89. while (j <= n)
  90. {
  91. tab[j] = tab[ n - pos] + l;
  92. j++;
  93. l++;
  94. }
  95. }
  96. while (len <= copy)
  97. {
  98. ft_putnbr(tab[len]);
  99. len++;
  100. }
  101. nombre++;
  102. inter();
  103. }
  104. // printf("|%d|\n", nombre);
  105. }
  106.  
  107. int main(void)
  108. {
  109. ft_print_combn(5);
  110. return 0;
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement