Guest User

Untitled

a guest
Jun 19th, 2018
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.08 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. const int SIZE = 8;
  5.  
  6. void splitParity(int arr[], int n, int& outNumOdd, int& outNumEven);
  7.  
  8. void main() {
  9.     int i, numOdds, numEvens;
  10.     int arr[SIZE] = {2,5,7,12,12,15,4,16};
  11.     splitParity(arr, SIZE, numOdds, numEvens);
  12.     cout << "numOdds=" << numOdds << endl;
  13.     cout << "numEvens=" << numEvens << endl;
  14.     for (i = 0; i < SIZE; i++) {
  15.         cout << arr[i] << " ";
  16.     }
  17.     cout << endl;
  18. }
  19.  
  20. void splitParity(int arr[], int n, int& outNumOdd, int& outNumEven) {
  21.     int currNumOdd, currNumEven, left, right, tempVal;
  22.     left = 0;
  23.     right = n-1;
  24.  
  25.     if (n == 1) {
  26.         if (arr[left]%2 == 0) {
  27.             outNumEven = 1;
  28.             outNumOdd = 0; //fix
  29.         }
  30.         else {
  31.             outNumEven = 0;
  32.             outNumOdd = 1; //fix
  33.         }
  34.         return;
  35.     }
  36.     else {
  37.         splitParity(arr, n-1, currNumOdd, currNumEven);
  38.        
  39.         if ((arr[currNumOdd]%2 == 0) && (arr[right]%2 != 0)) {
  40.             tempVal = arr[currNumOdd];
  41.             arr[currNumOdd] = arr[right];
  42.             arr[right] = tempVal;
  43.             currNumOdd++;
  44.         } else if (arr[right] % 2 == 0) {
  45.             currNumEven++;
  46.         }
  47.  
  48.         outNumOdd = currNumOdd;
  49.         outNumEven = currNumEven;
  50.     }
  51. }
Add Comment
Please, Sign In to add comment