La Web del Programador: Comunidad de Programadores
 
    Pregunta:  56644 - COMO DEVUELVO NUMEROS DE UN ARREGLO UNI. EN EL MISMO ARREGLO
Autor:  Deiby Limpio
Se dispone de un arreglo unidimensional de números enteros cuyo tamaño máximo es de 100 elementos. Crear un programa en PASCAL que contenga una rutina que devuelva en el mismo arreglo los números enteros pares separados de los impares, y de tal forma que cada uno de los subconjuntos formados quede ordenado ascendentemente. Considerar:
- Al crear el subprograma se debe considerar que el arreglo ya contiene N números enteros, siendo N <= 100.
- Se pueden usar estructuras auxiliares y se valorara su adecuación.
- Es indiferente que al final estén antes los pares o los impares en el arreglo.

  Respuesta:  Luis Felipe García Gutiérrez
Partiendo del hecho que el enunciado permite y valora la utilización de estructuras auxiliares, bien puede considerarse la creación de un vector adicional que denominaremos "temporal" el cual posea igual número de posiciones que el entregado.

Para iniciar se crean tres variables tipo entero dos de ellas se inicializan en 0 las cuales corresponden a los contadores de pares e impares y la tercera para recorrer el vector original la cual iría desde 1 hasta el largo del vector.

Se incializa el ciclo y se verifica si el residuo de la división del valor que contenga el vector en la posición que lleve el ciclo es 0, de ser así es par y se almacenaría en la última posición del vector temporal, en caso contratio se almacenaría en la primera posición del mismo y se aumenta el contador correspondiente.

Al terminar el ciclo se ordenan primero los pares, haciendo un ciclo desde la posición 1 hasta lo que nos haya dado el contador de los impares; posteriormente se hace lo mismo con los pares pero en éste caso el ciclo va desde el largo del vector menos la cantidad de pares hasta el largo del vector; la ordenación del vector se puede hacer mediante el uso de cualquier método de ordenación como el de burbuja o cualquier otro.

Para termianr y por medio de otro ciclo se pasa el vector temporal al original y listo!!!

Suerte