Logo Hardware.com.br
palominha
palominha Membro Senior Registrado
246 Mensagens 0 Curtidas

Média

#1 Por palominha 26/03/2006 - 21:33
O exercício é pra calcular uma média aritmética, mas o resultado está incorreto, será q alguém pode tentar identificar onde está o erro, pq já olhei diversas vezes e ñ consigo ver!!

#include <stdio.h>

#include <stdlib.h>

float Media (float *M, int num);

int main(void)

{

int n,i;

float *v, resultado;

printf ("Entre com a quantidade de valores do vetor: &quot;

scanf ("%d",&n);

printf ("\n&quot;

v = (float*) malloc (n * sizeof(float));

if(v==NULL)

{

printf("Memoria Insuficiente.\n&quot;

exit(1);

}

for (i = 0; i < n; i++)

{

printf ("Valor %d: ", i + 1);

scanf("%f",&v[i]);

}

printf ("\n&quot;

printf ("Os Numeros digitados foram.\n\n&quot;

for (i=0; i<n; i++)

printf("%f\n",v[i]);

printf ("\n&quot;

resultado=Media(v,n);

printf("Media dos valores: %f",resultado);

printf ("\n\n&quot;

free(v);

system("PAUSE&quot;

return(0);
}

//FUNÇÃO CÁLCULO MÉDIA

float Media(float *M, int num)

{

float md=0.0,sm=0.0;

int i;

for(i=0; i<num; i++)

{

sm+=M[i];

md+=sm/num;

}

return(md);
}

peczenyj
peczenyj Geek Registrado
3K Mensagens 75 Curtidas
#2 Por peczenyj
26/03/2006 - 21:59
Ola

veja vem, sm vc vai somando todos os valores de cada elemento e md vc vai somando com sm dividido pelo numero de elementos... humm veja só :

se vc informar 1 2 3 vc teria

sm = 0.0
md = 0.0

sm = sm + 1 = 0.0 + 1 = 1;
md = md + sm / 3 = 0.0 + 1/3 = 1/3;

sm = sm + 2 = 1 + 2 = 3;
md = md + sm / 3 = 1/3 + 3/3 = 4/3;

sm = 3 + 3 = 6;
md = md + sm / 3 = 4/3 + 6 / 3 = 10/3; <-

Não sei o que vc ta calculando mas isso não é a media. A media vc SOMA tudo e uma vez só vc divide pelo numero de elementos. Vc ta dividindo uma quantidade que é incrementada a cada passo. Ou vc faz assim:

    //FUNÇÃO CÁLCULO MÉDIA

float Media(float *M, int num)

{

float sm=0.0;

int i;

for(i=0; i<num; i++) sm += M[i];

return(sm/num);
}


ou faz assim:

    //FUNÇÃO CÁLCULO MÉDIA

float Media(float *M, int num)

{

float sm=0.0;

int i;

for(i=0; i<num; i++) sm += M[i]/num;

return(sm);
}


Percebeu ?
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal