Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/11/2012, 12:44
Avatar de rodrigoemece
rodrigoemece
 
Fecha de Ingreso: septiembre-2011
Mensajes: 68
Antigüedad: 12 años, 8 meses
Puntos: 1
Exclamación Problema en el cálculo del mínimo de un fichero

El programa se encarga de abrir un fichero de texto y calcular de entre sus elementos, el máximo, el mínimo y la media de ellos. El problema aparece al calcular el máximo exclusivamente. La respuesta por pantalla siempre resulta ser el primer elemento del fichero y no entiendo por qué. Muchas gracias por vuestra ayuda.

doc.txt
Código:
45 32 332 89 1
main.c
Código:
/* 
 * Nome:      Exercicio 1
 * Arquivo:   main.c
 * Autor:     Rodrigo M.
 * Data:      06 de Novembro de 2012
 */

#include <stdio.h>
#include <stdlib.h>
#define LNX 99999

float mx=0, mn=0, me=0; 

float max(float);
float min(float);
float med(float,int,int);

main(){
int v[LNX], i=0, z=1;
float ma=0, mi=0, md=0; 

FILE *fp;
fp = fopen("doc.txt","rt");
if(fp==NULL){
    printf("Erro na apertura do arquivo.\n");
    exit(1);
}

else{
    
 do{
   fscanf(fp,"%d",&v[i]);
   mn=v[0];
   mx=v[0];
   
   if (feof(fp)!=0 || i>=LNX) z=i+1;
   ma=max(v[i]);
   mi=min(v[i]);
   md=med(v[i],i,z);
   i++;  
    }while(feof(fp)==0 && i<LNX);
          
    printf("O maximo do arquivo e: %f\n", ma);
    printf("O minimo do arquivo e: %f\n", mi);
    printf("A media do arquivo e: %f\n", md);
     }
  fclose(fp);
      }

float max(float vec)
{
    if (vec>mx) mx = vec;              
    return mx;
}

float min(float vec)
{
    if (vec<mn) mn = vec;              
    return mn;    
}

float med(float vec, int a, int x)
{
    me = (me + vec)/x;
    return me;
}
Output
Código:
O maximo do arquivo e: 45.000000
O minimo do arquivo e: 1.000000
A media do arquivo e: 99.800003

RUN SUCCESSFUL (total time: 11ms)