[ Foro de C ]

problema con ejercicio 5.1.1

27-Nov-2012 16:54
Francisco Garcia Ansuategui
3 Respuestas

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
     
     


29-Nov-2012 22:22
Nacho Cabanes (+83)

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.


03-Dec-2012 12:07
Francisco Garcia Ansuategui

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();
              }
     


04-Dec-2012 00:08
Nacho Cabanes (+83)

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.)