Skip to content

Instantly share code, notes, and snippets.

@josue1dario2
Created September 4, 2025 00:15
Show Gist options
  • Select an option

  • Save josue1dario2/a27d437928f99999ffcd670ee8f394f2 to your computer and use it in GitHub Desktop.

Select an option

Save josue1dario2/a27d437928f99999ffcd670ee8f394f2 to your computer and use it in GitHub Desktop.
Ejercicio 17
/*
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