Advertisement
Rejack

Seperate even & odd using ptp

Apr 12th, 2024
523
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.47 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define N 6
  5.  
  6. int* even_odd(int* array, int sizeArray, int** aOdd, int* odd_size, int* even_size);
  7. void print_array(int* arr, int n);
  8.  
  9. int main()
  10. {
  11.     int array[N] = { 1,2,3,4,5,6 };
  12.  
  13.     int** aOdd, * aEven;
  14.  
  15.     int odd_size = 0, even_size = 0;
  16.  
  17.     aEven = even_odd(array, N, &aOdd, &odd_size, &even_size);
  18.  
  19.     if (aOdd == NULL || aEven == NULL)                  // check null
  20.     {
  21.         printf("allocation failed");
  22.         return 1;
  23.     }
  24.  
  25.     print_array(aEven, even_size);
  26.     printf("\n");
  27.     print_array(aOdd, odd_size);
  28.  
  29.     free(aOdd);
  30.     free(aEven);
  31.  
  32.     return 0;
  33. }
  34.  
  35. void print_array(int* arr, int n)
  36. {
  37.     for (int i = 0; i < n; i++)
  38.     {
  39.         printf("%d  ", arr[i]);
  40.     }
  41. }
  42.  
  43. int * even_odd( int * array, int sizeArray, int ** aOdd, int * odd_size, int * even_size )
  44. {
  45.     int* aEven = NULL;
  46.     int countOdd = 0, countEven = 0;
  47.     int j = 0, z = 0;
  48.  
  49.  
  50.     for (int i = 0; i < sizeArray; i++)
  51.     {
  52.         // First we seperate the array
  53.         if (array[i] % 2 == 0)
  54.             countEven++;
  55.  
  56.     }
  57.  
  58.     *aOdd = NULL; // Initialize *aOdd to NULL
  59.  
  60.     countOdd = sizeArray - countEven;
  61.     *aOdd = (int*)malloc(countOdd * sizeof(int));
  62.     aEven = (int*)malloc(countEven * sizeof(int));
  63.  
  64.     if (*aOdd == NULL || aEven == NULL)
  65.         return NULL;
  66.  
  67.     for (int i = 0; i < sizeArray; i++)
  68.     {
  69.         if (array[i] % 2 == 0)
  70.             aEven[j++] = array[i]; // add even to the new array
  71.         else
  72.             (*aOdd)[z++] = array[i]; // add odd to the new array
  73.     }
  74.  
  75.     *odd_size = countOdd;
  76.     *even_size = countEven;
  77.  
  78.     return aEven;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement