#include <stdio.h>
#include <stdlib.h>
/* Estrutura que guardara todos os dados importantes do vetor */
struct stats
{
float *vetor;
int tam;
float media, variancia;
};
/* Funcao que preenche o vetor de acordo com dados inseridos pelo usuario */
void PreencheStats(struct stats *s);
/* Funcao que calcula a media do vetor */
void Media(struct stats *s);
/* Funcao que calcula a variancia do vetor
Ja presume que a variancia foi calculada */
void Variancia(struct stats *s);
/* Funcao que libera a memoria dinamica alocada anteriormente em PreencheStats() */
void LiberaStats (struct stats *s);
int main(int argc, char *argv[])
{
struct stats dados;
int j;
PreencheStats(&dados);
Media(&dados);
Variancia(&dados);
printf("Media = %f \\n\\n", dados.media);
printf("Variancia = %f \\n\\n", dados.variancia);
LiberaStats(&dados);
return 0;
}
void PreencheStats(struct stats *s)
{
int j;
printf("Tamanho do vetor: ");
scanf("%d", &(s->tam));
s->vetor = (float*)malloc(s->tam*sizeof(float));
for(j=0; j<=(s->tam-1); j++)
{
printf("Insira o valor numero %d: ", j);
scanf("%f", &(s->vetor[j]) );
}
}
void Media(struct stats *s)
{
int j;
s->media = 0.0;
for(j=0; j<=(s->tam-1); j++)
s->media += s->vetor[j];
s->media /= (float)s->tam;
}
void Variancia(struct stats *s)
{
int j;
s->variancia = 0.0;
for(j=0; j<=(s->tam-1);j++)
s->variancia += (s->vetor[j] - s->media)*(s->vetor[j] - s->media);
s->variancia /= (float)s->tam;
}
void LiberaStats(struct stats *s)
{
free(s->vetor);
}