Advertisement
Guest User

day02, ex07

a guest
Jan 31st, 2019
1,396
1
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.86 KB | None | 1 0
  1. /* ************************************************************************** */
  2. /*                                                                            */
  3. /*                                                        :::      ::::::::   */
  4. /*   ft_print_combn.c                                   :+:      :+:    :+:   */
  5. /*                                                    +:+ +:+         +:+     */
  6. /*   By: oadhesiv <[email protected]>                    +#+  +:+       +#+        */
  7. /*                                                +#+#+#+#+#+   +#+           */
  8. /*   Created: 2019/01/30 21:53:23 by oadhesiv          #+#    #+#             */
  9. /*   Updated: 2019/01/31 02:32:17 by oadhesiv         ###   ########.fr       */
  10. /*                                                                            */
  11. /* ************************************************************************** */
  12.  
  13. int     ft_putchar(char c);
  14. void    ft_print_combn(int n);
  15. void    ft_print_combn_print(int *arr, int max_index);
  16. void    ft_print_combn_reset(int *arr, int max_index, int position);
  17.  
  18. void    ft_print_combn(int n)
  19. {
  20.     int numbers[10];
  21.     int i;
  22.  
  23.     i = 0;
  24.     while (i < n)
  25.     {
  26.         numbers[i] = i;
  27.         i++;
  28.     }
  29.     while (--i >= 0)
  30.     {
  31.         while (numbers[i] != 10 - n + i)
  32.         {
  33.             ft_print_combn_print(numbers, n);
  34.             numbers[i]++;
  35.             if (numbers[i + 1] != 9 - n + i)
  36.             {
  37.                 ft_print_combn_reset(numbers, n, i);
  38.                 i = n - 1;
  39.                 continue;
  40.             }
  41.         }
  42.     }
  43.     ft_print_combn_print(numbers, n);
  44. }
  45.  
  46. void    ft_print_combn_print(int *arr, int max_size)
  47. {
  48.     int i;
  49.  
  50.     i = 0;
  51.     while (i < max_size)
  52.     {
  53.         ft_putchar(arr[i] + 48);
  54.         i++;
  55.     }
  56.     if (arr[0] != 10 - max_size)
  57.     {
  58.         ft_putchar(',');
  59.         ft_putchar(' ');
  60.     }
  61. }
  62.  
  63. void    ft_print_combn_reset(int *arr, int max_size, int position)
  64. {
  65.     int i;
  66.  
  67.     i = 1;
  68.     while (position + i < max_size + 1)
  69.     {
  70.         arr[position + i] = arr[position] + i;
  71.         i++;
  72.     }
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement