Calculo estatistico em c
# include
# include struct lista2 { float classe; float classe2; float frequencia; struct lista2* ant; struct lista2* prox;
};
typedef struct lista2 Lista2;
/* função de inicialização: retorna uma lista vazia */
Lista2* inicializa (void)
{
return NULL;
}
/* inserção no início */
Lista2* insere (Lista2* l, float cl, float cl2, float fq )
{
Lista2* novo = (Lista2*) malloc(sizeof(Lista2)); novo->classe = cl; novo->classe2 = cl2; novo->frequencia= fq; novo->prox = l; novo->ant = NULL;
/* verifica se lista não está vazia */ if (l != NULL) l->ant = novo; return novo;
}
void media ( Lista2* l)
{
Lista2* novo; float soma=0; float soma2=0; float mult=0; float med; float desvio; float quad=0; float raiz;
for(novo=l; novo!=NULL; novo=novo->prox)
{
if(novo->classe2!=0) novo->classe=(novo->classe+novo->classe2)/2; soma=novo->frequencia+soma; mult=(novo->classe*novo->frequencia)+mult; } med=mult/soma; printf("\nMedia: %f", med);
for(novo=l; novo!=NULL; novo=novo->prox)
{
if(novo->classe2!=0) novo->classe=(novo->classe+novo->classe2)/2; quad =(novo->classe - med); soma2=((quad*quad)*novo->frequencia) + soma2;
}
raiz=soma2/soma; desvio=sqrt(raiz); printf("\nDesvio Padrao: %f", desvio);
}
Lista2* limpa(Lista2* l)
{
Lista2* p=l;
Lista2* aux; while(p->prox!=NULL) { p=p->prox; aux=p->ant; p->ant=NULL; free(aux);
}
p=NULL;
return p;
}
int main (void) {
Lista2* l; /* declara uma lista não iniciada */ int op; float cl,fq,med,cl2; l = inicializa(); /* inicia lista vazia */
while(op!=0)
{
printf("\nDigite\n1 Para Inserir dados isolados\n2 Para Inserir Classes Sem Intervalos\n3 Para Inserir Classes Com Intervalos\n4 Para Calcular Media e Desvio Padrao\n5 Para Limpar Dados\n "); scanf("%d",&op); switch(op){
case 1: cl2=0; fq=1; printf("Digite dado isolado: "); scanf("%f", &cl); l=insere(l,cl,cl2,fq); break;
case