/* Ordena un fichero de pedidos utilizando una tabla auxiliar */ #include #include /* Estructura del registro */ typedef struct{ char cod_cli[7]; // Código de cliente char cod_art[7]; // Código de articulo char fecha [9]; // Fecha del pedido short unidades; //si unidades = 0 el registro esta borrado y no se debe ordenar }tipopedido; tipopedido reg, tablaped[1000]; FILE *pped; // Fichero de pedidos FILE *pord; // Fichero de pedidos ordenados int numped=0; /*-------------------------------------------------------*/ /* Abre los ficheros devolviendo 1 si exito o 0 si fallo */ /*-------------------------------------------------------*/ int AbrirFicheros( void ) { pped=fopen("PEDIDOS.DAT","r"); pord=fopen ("PEDORD.DAT","w"); if ((pped==NULL)||(pord==NULL)) { return (0); } return 1; } /*-------------------------------------------------------*/ /* Carga la tabla con los registros del fichero de pedidos */ /*-------------------------------------------------------*/ void CargarTabla( void ) { int i=0; fread(®,sizeof(tipopedido),1,pped); while (!feof(pped)) { // Si la unidades son igual a cero se supone que es un registro eliminado if (reg.unidades!=0) { tablaped[i]= reg; i++; } fread(®,sizeof(tipopedido),1,pped); } numped = i; } /*-----------------------------------------------------------*/ /* Ordena la Tabla de pedidos mediante el método la burbuja */ /*-----------------------------------------------------------*/ void OrdenarTabla ( void ) { int i,j; tipopedido regaux; for (i=0;i0) { regaux=tablaped[j]; tablaped[j]=tablaped[j+1]; tablaped[j+1]=regaux; } } } } /*-----------------------------------------------------------------*/ /* Vuelca el contenido de la tabla ordenada al fichero PEDORD.DAT */ /*-----------------------------------------------------------------*/ void VolcarTabla() { int i; for (i=0;i