Ver Mensaje Individual
  #13 (permalink)  
Antiguo 13/06/2010, 06:54
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

Si en el mismo subprograma quiero sacar además de la deuda más alta, la más pequeña ¿cómo lo hago?. He intentado hacerlo igual que para buscar la mayor, pero no me sale.

Código C:
Ver original
  1. void deuda_mayor(FILE * pf){
  2.        
  3.         struct cliente max;
  4.         struct cliente cli;
  5.         struct cliente menor;
  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)/*si es mayor que el actual lo cambia*/
  15.                    max=cli;
  16.              }
  17.              fread(&menor,1,sizeof cli,pf);/*supongo que el primero es el mayor*/
  18.              while(!feof(pf)){
  19.                 fread(&cli,1,sizeof cli,pf);
  20.                 if(menor.deuda < cli.deuda)/*si es mayor que el actual lo cambia*/
  21.                    menor=cli;
  22.              }
  23.         }
  24.         fclose(pf);
  25.  
  26.         printf("%s %.2lf\n",max.nombre,max.deuda);
  27.         printf("%s %.2lf\n",menor.nombre,menor.deuda);
  28. }

Cuando lo compilo este es el resultado:
Muestro los datos:
pepe 100.21
ana 200.74
lola 21.32
julio 25.33
Deuda mayor y menor:
ana 200.74
-0.00
¿Por qué la deuda más pequeña no me la saca?.