• Domingo 22 de Diciembre de 2024, 12:24

Autor Tema:  Re: ordenar registros  (Leído 1748 veces)

fheredia60

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: ordenar registros
« en: Miércoles 10 de Abril de 2002, 22:10 »
0
Tengo problemas a la hora de ordenar una base de datos hecha con registros. Mi problema es tanto con enteros como con cadenas.

ordenar enteros y cadenas por separado no me supone problema alguno, el problema es cuando uso una estructura.

Si alguien me puede echar una mano se lo agradeceria

jpastor

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: ordenar registros
« Respuesta #1 en: Jueves 11 de Abril de 2002, 16:02 »
0
Supongamos un tipo de datos como el siguiente (y dos datos de ese tipo):

 
Código: Text
  1.  
  2. typedef struct
  3. {
  4.         int numero;
  5.         char cadena[80];
  6. } mi_estructura;
  7.  
  8.  
  9. mi_estructura   uno, dos;
  10.  
  11.  

La cosa se hace igual que con dos enteros o con dos cadenas por separado, accediendo a:

uno.numero y dos.numero

uno.cadena y dos.cadena

Elessar

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
ordenar registros
« Respuesta #2 en: Miércoles 24 de Abril de 2002, 22:03 »
0
Buenas !!! , veras ,ordenar estructuras es a priori igual de facil que con enteros o cadenas.
   Siguiendo el ejemplo de estructura que ya habian puesto, pero imaginando que tu problema sera mas bien con un array de estructuras que forman tu base de datos, puedes ordenarlas por el criterio que mas te guste:

Por cadena, con la funcion :

   strcmp (cad1, cad2) que metida en un if te dira si el campo de tu estructura es >, < ó = que cero

   if (strcmp(estructura1.campo_caracter, estructura2.campo_caracter)>0) ...

Por numeros:

  Con una simple comparacion en el if de >, < o =

  if (estructura1.campo_numerico> estructura2.campo_numerico) ...

Despues del if que elijas y segun quieras ordenar (ascendente, descendente, etc..)  pues utiliza el tipico intercambio para ordenar, utilizando una estructura auxiliar para no machacar ningun registro:

aux=estructura_peque;
estructura_peque=estructura_mayor;
estructura_mayor=aux;

Espero que te sea de ayuda, sino e-mail me y te mando el programilla en c:)