¿Hay algún error? ¿O qué está sucediendo ._.?
Código C++:
Ver original
// Ordenamiento multipropósito que usa apuntadores a funciones. #include <iostream> using std::cout; using std::cin; using std::endl; #include <iomanip> using std::setw; void ordenamientoSeleccion(int[], const int, bool (*)(int, int)); void intercambiar(int * const, int * const); bool ascendente(int, int); bool descendente(int, int); int main() { const int tamanioArreglo = 10; int orden; // 1 = ascendente, 2 = descendente int contador; // subíndice del arreglo int a[tamanioArreglo] = {2, 6, 4, 8, 10, 12, 89, 68, 45, 37}; cout << "Escriba 1 para orden ascendente,\n" << "Escriba 2 para orden descendente: "; cin >> orden; cout << "\nElementos de datos en el orden original\n"; for(contador = 0; contador < tamanioArreglo; contador++) cout << setw(4) << a[contador]; if(orden == 1) { ordenamientoSeleccion(a, tamanioArreglo, ascendente); cout << "\nElementos de datos en orden ascendente\n"; }else { ordenamientoSeleccion(a, tamanioArreglo, descendente); cout << "\nElementos de datos en orden descendente\n"; } for(contador = 0; contador < tamanioArreglo; contador++) cout << setw(4) << a[contador]; cout << endl; return 0; } void ordenamientoSeleccion(int trabajo[], const int tamanio, bool(*compara)(int, int)) { int menorOMayor; for(int i = 0; i < tamanio - 1; i++) { menorOMayor = i; for(int indice = i + 1; indice < tamanio; i++) if(!(*compara)(trabajo[menorOMayor], trabajo[indice])) menorOMayor = indice; intercambiar(&trabajo[menorOMayor], &trabajo[i]); } } void intercambiar(int * const elemento1Ptr, int * const elemento2Ptr) { int contenido = *elemento1Ptr; *elemento1Ptr = *elemento2Ptr; *elemento2Ptr = contenido; } bool ascendente(int a, int b) { return a < b; } bool descendente(int a, int b) { return a > b; }