// Ordena3.cpp (c) 2006 adolfo@di-mare.com #include #include /// Intercambia los valores de \c "a" y \c "b". void swap(int & a, int & b) { int temp; // temporal para hacer intercambios if ( a > b ) { // Intercambie el valor "n" con el de "m" temp = a; a = b; b = temp; } } // swap() int main() { int n, m, p; // Variables para leer los valores de entrada cout << endl << endl; // Deja 2 renglones en blanco antes de comenzar cout << "CARNET: Ordena3 ==> "; cin >> n >> m >> p; // lee de "cin" los 3 valores a ordenar cin.ignore(INT_MAX, '\n'); cout << " n == " << n; cout << " m == " << m; cout << " p == " << p; if ( n > m ) { // Intercambie el valor "n" con el de "m" swap(n, m); } if ( m > p ) { // Intercambie el valor "n" con el de "m" swap(m, p); } if ( n > m ) { // Intercambie el valor "n" con el de "m" swap(n, m); } // Detectar el medio cout << " == menor == " << n; cout << " == medio == " << m; cout << " == mayor == " << p; return 0; } /// Hace los intercambio sin usar una funci¢n int main_duplicado() { int n, m, p; // Variables para leer los valores de entrada cout << endl << endl; // Deja 2 renglones en blanco antes de comenzar cout << "CARNET: Ordena3 ==> "; cin >> n >> m >> p; // lee de "cin" los 3 valores a ordenar cin.ignore(INT_MAX, '\n'); cout << " n == " << n; cout << " m == " << m; cout << " p == " << p; int temp; // temporal para hacer intercambios if ( n > m ) { // Intercambie el valor "n" con el de "m" temp = n; n = m; m = temp; // n = m; // Ahora "n" vale lo mismo que "m" // m = n; // Se perdi¢ el valor original de "n" } if ( m > p ) { // Intercambie el valor "n" con el de "m" temp = m; m = p; p = temp; } if ( n > m ) { // Intercambie el valor "n" con el de "m" temp = n; n = m; m = temp; } // Detectar el medio cout << " == menor == " << n; cout << " == medio == " << m; cout << " == mayor == " << p; return 0; } /// Ya este programa principal calcula // menorr - medio - mayor correctamente int main_funca() { int n, m, p; // Variables para leer los valores de entrada cout << endl << endl; // Deja 2 renglones en blanco antes de comenzar cout << "CARNET: Ordena3 ==> "; cin >> n >> m >> p; // lee de "cin" los 3 valores a ordenar cin.ignore(INT_MAX, '\n'); cout << " n == " << n; cout << " m == " << m; cout << " p == " << p; int temp; // temporal para hacer intercambios if ( n <= m ) { // no hace nada porque est n en orden } else { // Intercambie el valor "n" con el de "m" temp = n; n = m; m = temp; // n = m; // Ahora "n" vale lo mismo que "m" // m = n; // Se perdi¢ el valor original de "n" } if ( m <= p ) { // no hace nada porque est n en orden } else { // Intercambie el valor "n" con el de "m" temp = m; m = p; p = temp; } if ( n <= m ) { // no hace nada porque est n en orden } else { // Intercambie el valor "n" con el de "m" temp = n; n = m; m = temp; } cout << " == menor == " << n; cout << " == medio == " << m; cout << " == mayor == " << p; return 0; } /// No funciona porque es muy -muy - muy engorroso /// determinar el valor del medio. int main_malo() { int n, m, p; // Variables para leer los valores de entrada cout << endl << endl; // Deja 2 renglones en blanco antes de comenzar cout << "CARNET: Ordena3 ==> "; cin >> n >> m >> p; // lee de "cin" los 3 valores a ordenar cin.ignore(INT_MAX, '\n'); cout << " n == " << n; cout << " m == " << m; cout << " p == " << p; int menor, medio , mayor; // Detectar el menor menor = n; // supong que el menor es "n" if ( m < menor ) { menor = m; } if ( p < menor ) { menor = p; } // Detectar el mayor mayor = n; // supong que el menor es "n" if ( m > mayor ) { mayor = m; } if ( p > mayor ) { mayor = p; } // Detectar el medio medio = p; // supongo que el medio es "p" if ( ( (n>m) && (m>p) ) || ( (p>m) && (m>n) ) ) { medio = m; } if (((m>n) && (n>p)) || ((p>n) && (n>m))) { medio = n; } cout << " ==Mayor== " << mayor; cout << " ==Medio== " << medio; cout << " ==Menor== " << menor; return 0; } // EOF: Ordena3.cpp