Hola amigo
, necesito una explicación sobre este programa porfa!...Lo que paso es que yo no podia que me diera el segundo mayor numero y solo puse lo de tu código y listo quedo, pero no entendí el como te encontró ese numero!
.
Mi duda es en esto:
segundo = mayor; /*Osea porque dices que es igual a mayor (lo que yo entiendo es que segundo entonces seria igual a 0 no??) */
else if ( numero > segundo )
segundo = numero;
/*Luego como hace esto para encontrar que el numero sea menor que el mayor y mayor a todos los demás números?)
Espero y me puedas dar una explicación clara de eso o aunque sea un Link que lo explique bien...saludos cordiales
Hola, ante todo Bienvenido.
Ahora, estás reviviendo un post de hace más de un año. (aunque esta acorde al problema)
Segundo, si vas a publicar código, asegurate de usar las etiquetas GeSHi para facilitar la lectura.
Ahora:
El código:
/* Programa del libro Tema 3
* ejercicio 3.27 pagina 83
* Introduzca 10 valores y encuentre los dos mas altos*/
#include <stdio.h>
int contador = 1;
int numero;
int mayor = 0;
int segundo = 0;
int main()
{
while (contador <=5){
printf("Introduzca un numero: "); contador += 1;
if(numero > mayor){
segundo = mayor;
mayor = numero;
}
else if (numero > segundo){
segundo = numero;
}
}
printf("El numero mayor es %d y el segundo mayor %d\n", mayor
, segundo
); return 0;
}
En el primer
if, lo que hace es comprobar si el número que se inserto es mayor que el que se tiene almacenado como mayor. Por supuesto que en la primera iteración la variable
mayor va a tener el valor 0, pues se inicializó así. En tal caso, si el número insertado es mayor que el que teníamos como mayor, vamos a decir que:
segundo = mayor;
mayor = numero;
Primero, asignamos a la variable
segundo el valor de la variable
mayor, porque supuestamente la variable mayor, tenía el mayor valor antes de haber encontrado este nuevo número que es mayor, por lo tanto ese valor que teníamos almacenado pasa a ser el segundo mayor. ¿Entendiste?
Ahora, en la segunda parte:
else if (numero > segundo){
segundo = numero;
}
Esto analiza el caso de que el número no sea mayor que el que tenemos hasta ahora como mayor, pero si sea mayor que el número que tenemos como segundo mayor, por eso se comprueba con la variable
segundo y si se cumple que sea mayor que el valor de ella, se le asigna ese nuevo valor.
Espero que te haya quedado claro. Lee despacio y lo entenderás sin problema.
Nota: Es válido decir que este código es válido solo para números positivos, pues en caso de que haber números negativos, el resultado puede no ser el esperado
Salu2s