Bueno el problema es que al querer ordenarlo, usando el metodo de burbuja, que es el unico que se, solo me ordena uno de los valores, me explico, yo pido los datos, el usuario los teclea y se guardan en 3 variables distintas, y al ordenarlo solo me ordena una de ella, pero las otras se quedan igual, y lo que quiero es que a partir de cada una de las variables se me ordenen todas, tambien las otras dos, bueno no se si eso es posible, he pensado que a lo mejor habria que crear otra variable con todos los datos de cada archivo, pero no se muy bien como programarlo...
Aqui os dejo el codigo del programa para ver si me podeis ayudar...
Código
#include <stdio.h> #include <string.h> struct{ char nombreFich[41]; unsigned long numeroregistro; unsigned long numeroserie; } fichas[1000000]; int numeroFichas=0; int i; int opcion; char textoTemporal[40]; unsigned long numeroTemporal; main() { do { switch(opcion){ case 1: if (numeroFichas < 1000000) { printf("Introduce el numero de registro(si el valor no es un numero no aparecera o aparecera 0): "); numeroFichas++; } else break; case 2: for (i=0; i<numeroFichas; i++) fichas[i].nombreFich, fichas[i].numeroregistro, fichas[i].numeroserie); break; case 3: for (i=0; i<numeroFichas; i++) if (fichas[i].numeroregistro >= numeroTemporal) fichas[i].nombreFich, fichas[i].numeroregistro, fichas[i].numeroserie); break; case 4: for (i=0; i<numeroFichas; i++) if (fichas[i].numeroserie >= numeroTemporal) fichas[i].nombreFich, fichas[i].numeroregistro, fichas[i].numeroserie); break; case 5: for (i=0; i<numeroFichas; i++) fichas[i].nombreFich, fichas[i].numeroregistro, fichas[i].numeroserie); for (i=0; i<numeroFichas; i++) printf("Nombre: %s; Nº registro: %ld; Nº serie: %1d (Busqueda a partir de la palabra tecleada, archivos coincidentes)\n", fichas[i].nombreFich, fichas[i].numeroregistro, fichas[i].numeroserie); break; case 6: break; default: break; } } while (opcion != 6); }
Y aqui os dejo la forma de la que lo ordeno, para ver si se puede hacer algo:
Código
for(i=0; i<(numeroFichas-1); i++) { for (j=i+1; j<numeroFichas; j++) { if(fichas[j].numeroregistro<fichas[i].numeroregistro) { temp = fichas[j].numeroregistro; fichas[j].numeroregistro = fichas[i].numeroregistro; fichas[i].numeroregistro = temp; } if(fichas[j].numeroregistro<fichas[i].numeroregistro) { temp = fichas[j].numeroserie; fichas[j].numeroserie = fichas[i].numeroserie; fichas[i].numeroserie = temp; } } } for(i=0; i<numeroFichas ; i++) { printf("Nombre: %s; Nº registro: %ld; Nº serie: %1d\n", fichas[i].nombreFich, fichas[i].numeroregistro, fichas[i].numeroserie); }
Muchas gracias de antemano, Feliz Navidad y Feliz año