Buenas tardes, alguno podria ayudarme con el sig. fragmento de codigo?
Lo que tiene que hacer es acomodar los datos que tenga el archivo por orden de mayor a menor respecto a "promedio"
void resultados_yai(void)/*Muestra el resultado de todos los morros*/
{
FILE *califas=fopen("Boleta.txt","w");
fptr=fopen("estudiante.dat","rb");/*Abre el archivo de datos para imprimirlo*/
if(fptr==NULL)/*Si no hay ningun dato en el archivo cierra el programa*/
{
printf("\nNo existen datos en el archivo.\n");
}
printf("\t\tEl rival mas debil versión alumnos\n\n");
fprintf( califas,"\t\tEl rival mas debil versión alumnos\n\n");
printf("Control Nombre U I U II U III U IV U V U VI Promedio");
fprintf(califas,"Control Nombre U I U II U III U IV U V U VI Promedio");
printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
fprintf(califas,"\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
while ((fread(&boleta,sizeof(boleta),1,fptr))>0)/*Permite la lectura de datos del archivo*/
{
printf("%d %s %d ",boleta.matricula,boleta.nombre,boleta.unidad[0]);
printf("%d %d %d %d ",boleta.unidad[1],boleta.unidad[2],boleta.unidad[3],boleta.unidad[4]);
printf("%d %.2f\n",boleta.unidad[5],boleta.prom);
fprintf(califas,"%d %s %d ",boleta.matricula,boleta.nombre,boleta.unidad[0]);
fprintf(califas,"%d %d %d %d ",boleta.unidad[1],boleta.unidad[2],boleta.unidad[3],boleta.unidad[4]);
fprintf(califas,"%d %.2f\n",boleta.unidad[5],boleta.prom);
}
fclose(fptr);/*Cierra el archivo*/
fclose(califas);
while(getchar()!='\n');
}
Asimismo es bienvenida cualquier recomendacion y correcion, muchas gracias!
Aquí tienes las solución.
https://foro.elhacker.net/programacion_cc/programa_ordenar_numero_mayormenor-t234758.0.html
saludos.
Muchas gracias! ;-)
Por cierto, el siguiente fragmento de codigo, que es exactamente lo que hace?
while ((fread(&boleta,sizeof(boleta),1,fptr))>0)
Lée, desde el archivo apuntado por fptr, 1 dato del tamaño del objeto boleta y li mete en el objeto boleta. Si ha leído 1 byte o mas while ejecutará su código asociado.
Para solucionar tu problema puedes crear una lista enlazada en la que iras metiendo los datos qur pilles del archivo, después le das esa lista a una función que te los ordene.
O con la misma lista creas un array dinámico con tantos elementoa tengas en la lista y se lo das a la función de librería estándar qsort para que te lo ordene.
Gracias por la ayuda, ya esta resuelto!