[ Foro de C ]
Que tal todos. Estoy tomando el curso de Nacho Cabanes pero tengo un inconveniente con un problema. Tengo que hacer un programa en el que el usuario ingrese 5 numeros enteros y el programa nos diga cual de ellos es el menor y cual es el mayor. No me aparece ningun error. Pero solo aparece lo de el primer printf. La forma en que lo trate de hacer es la siguiente.
#include <stdio.h>
int main() {
int num1, num2, num3, num4, num5;
printf ( "Escribe cinco numeros enteros\n" );
scanf ( "%d%d%d%d%d" , &num1, &num2, &num3, &num4, &num5 );
if (((( num1 > num2 ) && ( num2 > num3 )) && ( num3 > num4 )) && ( num4 > num5 )) {
printf ( "%d es el mayor\n" , num1 ); }
else
if (((( num2 > num1 ) && ( num1 > num3 )) && ( num3 > num4 )) && ( num4 > num5 )) {
printf ( "%d es el mayor\n" , num2 ); }
else
if (((( num3 > num1 ) && ( num1 > num2 )) && ( num2 > num4 )) && ( num4 > num5 )) {
printf ( "%d es el mayor\n" , num3 ); }
else
if (((( num4 > num1 ) && ( num1 > num2 )) && ( num2 > num3 )) && ( num3 > num5 )) {
printf ( "%d es el mayor\n" , num4 ); }
else
if (((( num5 > num1 ) && ( num1 > num2 )) && ( num2 > num3 )) && ( num3 > num4 )) {
printf ( "%d es el mayor\n" , num5 ); }
if (((( num1< num2 ) && ( num2 < num3 )) && ( num3 < num4 )) && ( num4 < num5 )) {
printf ( "%d es el menor\n" , num1 ); }
else
if (((( num2 < num1 ) && ( num1 < num3 )) && ( num3 < num4 )) && ( num4 < num5 )) {
printf ( "%d es el menor\n" , num2 ); }
else
if (((( num3 < num2 ) && ( num2 < num1 )) && ( num1 < num4 )) && ( num4 < num5 )) {
printf ( "%d es el menor\n" , num3 ); }
else
if (((( num4 < num2 ) && ( num2 < num3 )) && ( num3 < num1 )) && ( num1 < num5 )) {
printf ( "%d es el menor\n" , num4 ); }
else
if (((( num5 < num2 ) && ( num2 < num3 )) && ( num3 < num4 )) && ( num4 < num1 )) {
printf ( "%d es el menor\n" , num5 ); }
return 0;
}
Tienes un par de errores, uno grave y otro menos importante:
- El que n1 sea el mayor de todos no implica nada en la relación entre (por ejemplo) n2 y n3, de modo que no es correcto:
if (((( n1 > n2 ) && ( n2 > n3 )) && ( n3 > n4 )) && ( n4 > n5 )) {
printf ( "%d es el mayor\n" , n1 ); }
Sino
if ( (n1 > n2) && ( n1 > n3 ) && ( n1 > n4 )) && ( n1 > n5 ))
printf ( "%d es el mayor\n" , n1 );
(habrás visto que, de paso, he quitado paréntesis innecesarios).
- Además, ¿qué ocurre cuando dos datos son iguales? Si siempre comparas con "mayor que", no se comportará correctamente si dos o más datos coinciden. Por eso, es más fiable ver si es "mayor o igual":
if ( (n1 >= n2) && ( n1 >= n3 ) && ( n1 >= n4 )) && ( n1 >= n5 ))
printf ( "%d es el mayor\n" , n1 );
A o.k entendido. Muchisimas gracias por la ayuda.
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)