SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: fheredia60 en Miércoles 10 de Abril de 2002, 22:10
-
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
-
Supongamos un tipo de datos como el siguiente (y dos datos de ese tipo):
typedef struct
{
int numero;
char cadena[80];
} mi_estructura;
mi_estructura uno, dos;
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
-
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:)