/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Sugerencias Para Realizar Un Algoritmo
Ir a página Anterior  1, 2
 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
Demidam



Registrado: 07 Ago 2004
Mensajes: 59

MensajePublicado: 08/10/2004 3:02 pm
Título:

Vale, ok.
Con mi metodo, se compara el 1 con el 2 y si el 1>2 se cambian, luego se coge el 2 y el 3 (el 2 puede q ya se hayya cambiado) y se comprara si el 2>3 se cambian y asi hasta el ultimo, y esto lo hago 4 veces q es la situacion mas desfavorable.
No se si me explico bien, dime si no lo entiendes
Salu2
Volver arriba
alp



Registrado: 12 Abr 2004
Mensajes: 413

MensajePublicado: 09/10/2004 2:36 am
Título:

Intuitivamente has creado un método de ordenación que se parece al de la burbuja. Creo que lo podemos resolver con un sólo array. A ver qué te parece este código.

Código:
#include <stdio.h>

#define NUMEROS 5

int main()
{
   int num[NUMEROS] = { 8, 4, 3, 2, 1 };
   int i, j, k, temp;

   for (i=0; i<NUMEROS-1; i++) {
      for(j=0;j<NUMEROS-1; j++)
         if (num[j] > num[j+1]) {
            temp     = num[j];
            num[j]   = num[j+1];
            num[j+1] = temp;
         }
      printf("\nPaso %i:\t", i+1);
      for (k=0; k<NUMEROS; k++)
         printf("%i\t", num[k]);
   }


   printf("\n\n");
   for (i=0; i < NUMEROS; i++)
      printf("%i\t", num[i]);

   return 0;
}


El array num ya contiene la situación más desfavorable. Se compara cada elemento con el siguiente, dándole 4 pasadas, de forma que al final, queda ordenado.

Si te fijas en los pasos intermedios, lo que hacemos es llevarnos los valores mayores al final del array.

Un saludo.
Volver arriba
Yahoo Messenger
Demidam



Registrado: 07 Ago 2004
Mensajes: 59

MensajePublicado: 10/10/2004 12:10 pm
Título:

Pues si, la verdad es q si, q el mio es un lio q te cagas pero no me se me ocurria lo del temp como paso intermedio (supongo q seran cosas de novatos y con el tiempo y muchos ejercicios se solucionara).
Gracias x todo, te dejo mi algoritmo definitivo:
Código:

#include <stdio.h>

#define numeros      5

int main()
{

int i, j, temp;
int a[numeros];

for (i=0; i<5; i++)
   {
   printf("Introduzca el numero %i que quiere ordenar\n", i+1);
   scanf("%i", &a[i]);
   }

for(i=0; i<4; i++)
   {
   for(j=0; j<5; j++)
      {
      if(a[j]>a[j+1])
         {
         temp=a[j];
         a[j]=a[j+1];
         a[j+1]=temp;
         }

      }
   }



printf("En orden creciente los numeros son:\n");

for (i=0; i<5; i++)
   {
   printf("El numero %i es %i\n", i+1, a[i]);
   }

int b[numeros]={ a[4], a[3], a[2], a[1], a[0]};
printf("En orden decreciente los numeros son:\n");

for (i=0; i<5; i++)
   {
   printf("El numero %i es %i\n", i+1, b[i]);
   }

}


Salu2
Volver arriba
alp



Registrado: 12 Abr 2004
Mensajes: 413

MensajePublicado: 11/10/2004 1:09 pm
Título:

Muy bien. Al final lo has conseguido de forma más clara.
Si te atrancas con un código, coge un lápiz y papel y analízalo despacio. Haz en el papel lo que debería hacer el código, y lo verás todo más claro.

Por cierto, si ya tienes el array ordenado de forma ascendente, para imprimirlo de forma descendente sólo tienes que recorrerlo desde el último al primer elemento. Eso te ahorra el segundo array.
Código:
printf("En orden decreciente los numeros son:\n");

for (i= 4; i >= 0; i--)
   {
   printf("El numero %i es %i\n", 5-i, a[i]);
   }


El truco está en la práctica. Cuantas más líneas de código escribas, más irás depurando y simplificando tu forma de programar.

Un saludo.
Volver arriba
Yahoo Messenger
Demidam



Registrado: 07 Ago 2004
Mensajes: 59

MensajePublicado: 11/10/2004 3:10 pm
Título:

Pues muchas gracias, tampoco se me ocurrio, otro truco mas a la "libreta", todo sea por depurar el codigo.
Y si,creo q el truco sta en la practica, soy estudiante de matematicas y muchas veces veo un ejemplo q no se te ocurriria en la vida pero ves uno y ya sabes hacer todos(o casi todos Very Happy ).

Salu2
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 2 de 2Todas las horas están en GMT - 8 Horas
Ir a página Anterior  1, 2

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com