Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problemas para ordenar numeros

Estas en el tema de Problemas para ordenar numeros en el foro de C/C++ en Foros del Web. Tengo que ordenas los numero de manera descendente 15423 estos los tengo que pasar a estos 5 432 1 1 5 43 2 21 5 ...
  #1 (permalink)  
Antiguo 21/04/2010, 19:54
 
Fecha de Ingreso: noviembre-2009
Mensajes: 79
Antigüedad: 14 años, 5 meses
Puntos: 2
Problemas para ordenar numeros

Tengo que ordenas los numero de manera descendente
15423 estos los tengo que pasar a estos
54321
15432
21543
32154
43215
Hasta ahora tengo esto int[] num = new int[5];
int aux=0,d=0,c=0;
for (int a = 0; a < 5;a++ )
{
Console.WriteLine("ingresa el numero (" +a +")");
num[a]= int.Parse(Console.ReadLine());

}



for( c=0;c<4;c++)
{
for ( d = 1; d < 5;d++ )
{
if (num[c] < num[d])
{
aux = num[d];
num[d] = num[c];
num[c] = aux;

}

}
}
Pero obtengo esto como resultado 51243

Para sacar esas cosas según mi lógica solo es de jugar con el orden pero no me sale Si alguien me puede muchas grasias
  #2 (permalink)  
Antiguo 21/04/2010, 20:38
aguirremanuel
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problemas para ordenar numeros

Bueno mi pana la verdad no recuerdo bien como era ese metodo de ordenacion que estas utilizando, pero creo que en el segundo for en ves de inicializarlo en 1 debe inicializarse en c+1, algo asì como que hiba la cosa, yo siempre uso esta estructura para ordenar un vector :

Código C++:
Ver original
  1. int ordenado = 0;
  2. while(!ordenado)
  3. {
  4.       ordenado = 1 ;
  5.       for ( x = 0 ; x < 4 ; x++ )
  6.      {
  7.             if ( num[x] < num[x+1] )
  8.             {
  9.                     //intercambio los valores
  10.                     ordenado = 0 ;
  11.             }
  12.      }
  13. }

Suerte...!!!
  #3 (permalink)  
Antiguo 21/04/2010, 22:08
 
Fecha de Ingreso: noviembre-2009
Mensajes: 79
Antigüedad: 14 años, 5 meses
Puntos: 2
Respuesta: Problemas para ordenar numeros

Buenas noches, ya hice todo ya lo resolví pero tengo un problema grande!!!
Tengo el for (int x = 0; x < 5; x++) para indicra hasta cual numero hacer el intercambio
Si coloco x=0, x=1, x=2 x=3 todo marcha a la perfeccion si lo coloco manual en el codigo, pero cuando lo corro con el form no me da el mismo resultado
Este es el resultado manual
54321
15432
21543
32154
43215


Pero el resultado con el for es este

54321
25431
32541
43251
54321


este es el codigo

int[] num = new int[5];
int aux=0,i=0,c=0,b=0;
for (int a = 0; a < 5; a++)
{
Console.WriteLine("ingresa el numero (" + a + ")");
num[a] = int.Parse(Console.ReadLine());

}

for (int x = 0; x < 5; x++)
{
for (i = 0; i < 5; i++)
{
for (c = x; c < 4; c++)
{


if (num[i] > num[c])
{

aux = num[c];
num[c] = num[i];
num[i] = aux;

}

}
}


if (x > 1)
{

for (i = 0; i < x; i++)
{
for (c = 0; c < x - 1; c++)
{
if (num[i] > num[c])
{

aux = num[c];
num[c] = num[i];
num[i] = aux;
}
}

}

}



for (b = 0; b < 5; b++)
{
Console.Write(num[b] + ",");

}



Console.WriteLine();
}
Console.ReadLine();

muchas grasias a tu respuesta
  #4 (permalink)  
Antiguo 22/04/2010, 17:57
aguirremanuel
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problemas para ordenar numeros

Osea dices que si el resultado es este : 43215, entonces está bien. Mientras que si el resultado es : 54321, está mal ???

Y al principio dijiste que te mandaron a ordenar los numeros de manera DESCENDENTE, la verdad no entiendo el porque dices que el resultado con el for no es el esperado...
  #5 (permalink)  
Antiguo 22/04/2010, 21:26
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Problemas para ordenar numeros

Hey eso es C#

Pero bueno, pueden usar qsort (función estándar en stdlib) para ordenar sus arreglos. En vez de implementar algún algoritmo ineficiente (burbuja).
Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int cmp_func_asc(const void *a, const void *b){
  5.     return (*(int*)a) - (*(int*)b);
  6. }
  7.  
  8. int cmp_func_des(const void *a, const void *b){
  9.     return (*(int*)b) - (*(int*)a);
  10. }
  11.  
  12. void nice_print(int arr[], int size){
  13.     int i;
  14.     printf("{");
  15.     for(i = 0; i < size; i++)
  16.         if(i != (size - 1))
  17.             printf("%d, ", arr[i]);
  18.         else
  19.             printf("%d", arr[i]);
  20.     printf("}\n");
  21. }
  22.  
  23. int main(){
  24.     int n = 10;
  25.     int arr[10] = {9, 6, 7, 2, 5, 8, 0, 1, 3, 4};
  26.     int i;
  27.  
  28.     /*Nice print*/
  29.     nice_print(arr, n);
  30.  
  31.     /*Sort*/
  32.     qsort(arr, n, sizeof(int), cmp_func_asc);
  33.  
  34.     /*Nice print*/
  35.     nice_print(arr, n);
  36.  
  37.     /*Sort*/
  38.     qsort(arr, n, sizeof(int), cmp_func_des);
  39.  
  40.     /*Nice print*/
  41.     nice_print(arr, n);
  42.  
  43.     return 0;
  44. }

Etiquetas: cchar, numeros, ordenar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:21.