Created
September 4, 2025 00:15
-
-
Save josue1dario2/a27d437928f99999ffcd670ee8f394f2 to your computer and use it in GitHub Desktop.
Ejercicio 17
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /* | |
| Hacer un programa para ingresar 5 números, luego informar los 2 mayores valores ingresados, | |
| aclarando cual es el máximo y cuál el que le sigue. | |
| Ejemplo A: 10, 8, 12, 14, 3 el resultado será 14 y 12. | |
| Ejemplo B: 14, 8, 12, 14 ,3 el resultado será 14 y 14. | |
| Ejemplo C: -4, -8, -12, -20, -10 el resultado será -4 y -8 | |
| Ejemplo D: 100, 20, 5, -15, 70, el resultado será 100 y 70. | |
| Ejemplo E: -100, -20, -5, 15, -70, el resultado será 15 y -5. | |
| Se recomienda probar el diagrama que vaya a desarrollar con todos los ejemplos, | |
| en particular el Ejemplo D, en el cual el máximo de la lista aparece en el primer | |
| lugar y que si no se tiene precaución puede llevar a resultados como 100 como máximo | |
| y 100 como segundo máximo. ¡ESO ES INCORRECTO! El resultado debe ser 100 y 70. | |
| --------------- Estrategia -------------- | |
| 1. Leemos los dos primeros números. Los ordenamos: el mayor lo ponemos en max1, y el otro en max2. | |
| - Así nos aseguramos de empezar con dos valores consistentes. | |
| 2. Leemos los tres números restantes, uno por uno.Cada vez que leemos un número x: | |
| - Si x > max1 → ese número pasa a ser el nuevo máximo (max1) y el viejo máximo pasa a ser max2. | |
| - Sino, si x > max2 → el número no supera al máximo, pero sí puede ser el segundo mayor. | |
| Entonces actualizamos max2. | |
| 3. Al final mostramos max1 y max2. | |
| La clave del ejercicio es mantener actualizados dos valores a medida que leemos números. | |
| - max1: el más grande de todos. | |
| - max2: el segundo más grande. | |
| El truco está en actualizar en el orden correcto: | |
| 1. Primero mover max1 → max2. | |
| 2. Luego asignar el nuevo valor a max1. | |
| De esa forma nunca perdemos el valor anterior. | |
| */ | |
| #include <iostream> | |
| using namespace std; | |
| int main() | |
| { | |
| int a, b, x; | |
| int max1, max2; | |
| // Leer los dos primeros | |
| cout << "Ingrese numero 1: "; | |
| cin >> a; | |
| cout << "Ingrese numero 2: "; | |
| cin >> b; | |
| // ordenarlos | |
| if (a >= b) | |
| { | |
| max1 = a; | |
| max2 = b; | |
| } | |
| else | |
| { | |
| max1 = b; | |
| max2 = a; | |
| } | |
| // Leer los 3 restantes y actualizar | |
| for (int i = 3; i <= 5; i++) | |
| { | |
| cout << "Ingrese numero " << i << ": "; | |
| cin >> x; | |
| if (x > max1) | |
| { | |
| max2 = max1; | |
| max1 = x; | |
| } | |
| else if (x > max2) | |
| { | |
| max2 = x; | |
| } | |
| } | |
| cout << "El maximo es : " << max1 << endl; | |
| cout << "El segundo maximo: " << max2 << endl; | |
| return 0; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment