[ Foro de C ]
pido ayuda no se como encontrar el mayor de diez numeros
os dejo lo que he conseguido que no funciona
/*Pide 10 numeros enteros y muestra el mayor*/
#include<stdio.h>
main()
{
int numero[10];
int x,y;
printf("Introduce 10 numeros y pulsa enter\n");
for(x=0; x<10; x++)
scanf("%d",&numero[x]);
for (y=0; y<10; y++)
{
for (x=0; x<10; x++)
{
if (y>=x) continue;
if (numero[y]>numero[x])printf("\r El numero %d es el mayor",numero[y]);
}
}
getchar();
getchar();
}
Gracias por todo
Para encontrar el máximo (o el mínimo), siempre hay que seguir los mismos pasos:
- Tomas una valor inicial, que puede ser uno claramente incorrecto (por ejemplo, que el máximo sea -1.000.000 o que el mínimo sea 1.000.000) o, preferiblemente, el primero de los valores.
- A partir de ahí, comparas cada uno de los demás valores con él. Si el valor que estás mirando es mayor que el que hasta ahora era el máximo, eso quiere decir que este es el nuevo máximo.
Como puedes deducir de lo anterior, necesitas un "for" para pedir los datos y otro único "for" (no dos) para descubrir cuál es el máximo valor entre todos ellos.
Gracias por la explicación,no se si estará bien pero funciona
/*Pide 10 numeros enteros y muestra el mayor*/
#include<stdio.h>
main()
{
int numero[10];
int x,y=0;
printf("Introduce 10 numeros y pulsa enter\n");
for(x=0; x<10; x++)
scanf("%d",&numero[x]);
for (x=0; x<10; x++)
if (numero[x]>=numero[y]) y=x;
printf("El numero %d es el mayor",numero[y]);
getchar();
getchar();
}
Esa es la idea. Una corrección: no debería ser
if (numero[x]>=numero[y]) y=x;
sino
if (numero[y] > numero[x]) y=x;
Y dos posibles mejoras, ambas de poca importancia:
- No llames "y" a la segunda variable, sino "posicionMayor", de modo que el programa sea fácil de entender, incluso sin necesidad de comentarios.
- En el segundo "for", puedes empezar a comparar desde la posición 1 (la 0 ya la has prefijado como el "posible mayor") y, como en el fragmento que te he puesto, mirar sólo si es "estrictamente mayor", en vez de "mayor o igual".
(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.)