// Separacion de elementos pares e impares con arreglos, apuntadores
// y funciones
#include <iostream>
using namespace std;
const int N = 9;
void imprArr(int [], int);
void imprArreglos(const char [], int [], int [], int [], int);
void separaParImpar(int [], int [], int [], int);
int main() {
int m[] = {-23, 12, 18, 34, -19, 5, 14, 20, 31},
par[N] = {0}, impar[N] = {0}, t;
t = sizeof(m)/sizeof(*m);
// situacion anterior
imprArreglos("Situacion anterior", m, par, impar, t);
// Separacion de elementos pares e impares
separaParImpar(m, par, impar, t);
// situacion posterior
imprArreglos("Situacion posterior", m, par, impar, t);
}
void imprArr(int v[], int T) {
cout << endl << endl;
for(int k=0; k<T; k++)
cout << "\t" << v[k];
}
void imprArreglos(const char msj[], int arrA[], int arrB[], int arrC[], int T) {
cout << endl << endl << msj;
cout << "\n\nArreglo original:"; imprArr(arrA, T);
cout << "\n\nArreglo de pares:"; imprArr(arrB, T);
cout << "\n\nArreglo de impares:"; imprArr(arrC, T);
}
void separaParImpar(int ori[], int par[], int impar[], int tam) {
int i, j, k, *dir;
i = j = k = 0;
for (i=0; i<tam; i++) {
if (ori[i]%2)
dir = impar + k++;
else
dir = par + j++;
*dir = ori[i];
}
}
/*
void separaParImpar(int ori[], int par[], int impar[], int tam) {
int i, j, k;
i = j = k = 0;
for (i=0; i<tam; i++)
if (ori[i]%2)
*(impar+(k++)) = ori[i]; // otra forma es: impar[k++] = ori[i];
else
par[j++] = ori[i];
}
*/