06/11/2012, 12:44
|
| | | Fecha de Ingreso: septiembre-2011
Mensajes: 68
Antigüedad: 13 años, 3 meses Puntos: 1 | |
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 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)
|