Ver Mensaje Individual
  #15 (permalink)  
Antiguo 13/06/2010, 08:13
minette1988
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: imprimir la deuda mayor de un cliente

Se me ha ocurrido hacer esto, pero me imprime la deuda más alta 2 veces.

Código C:
Ver original
  1. void deuda_mayor(FILE * pf){
  2.        
  3.         struct cliente max,menor;
  4.         struct cliente cli;
  5.        
  6.  
  7.       if((pf = fopen("clientes.dat", "rb")) == NULL) {
  8.     printf("Error al abrir el fichero clientes.dat\n");
  9.         }
  10.         else{
  11.              fread(&max,1,sizeof cli,pf);/*supongo que el primero es el mayor*/
  12.              while(!feof(pf)){
  13.                 fread(&cli,1,sizeof cli,pf);
  14.                 if(max.deuda < cli.deuda)
  15.                   max=cli;
  16.              }
  17.         }
  18.         fclose(pf);
  19.  
  20.         printf("%s %.2lf\n",max.nombre,max.deuda);
  21.  
  22.         if((pf = fopen("clientes.dat", "rb")) == NULL) {
  23.     printf("Error al abrir el fichero clientes.dat\n");
  24.         }
  25.         else{
  26.              fread(&menor,1,sizeof cli,pf);/*supongo que el primero es el mayor*/
  27.              while(!feof(pf)){
  28.                 fread(&cli,1,sizeof cli,pf);
  29.                 if(menor.deuda < cli.deuda)
  30.                   menor=cli;
  31.              }
  32.         }
  33.         fclose(pf);  
  34.                
  35.         printf("%s %.2lf\n",menor.nombre,menor.deuda);
  36. }

Ya no se qué hacer, ¿cómo lo harías tu?, he probado todas las maneras posibles y nada.