Jump to content
Sign in to follow this  
eyeonyou

Trabalho – Análise estatística das notas de alunos

Recommended Posts

eyeonyou

boas!

benhe,qual o problema de eu vir aki ao forum pedir ajuda e explicaçoes pra um tpc/trabalho?afinal se tds as duvidas que aparecem por ca nao sao disso,sao de que assunto?

Nunca pedi que me fizessem o trabalho.

vbmaster - sim,cada vez que abro o prog tenho de intruduir o nº de alunos e dps a nota.

Anyway, aki deixo o codigo ja feito.Ta a funcionar,mas n sei cm fazer a funçao pra mediana (ja tenho uma q ordena os elementos do vector) nem as duas pros percentis. Alguem pode dar umas dicas?


#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define Max 200


char menu(void);
int LerNotas(int notas[]);
void ordenar(int notas[],int);
float media(int notas[],int);
float desvio(int notas[],int);


void main(void)
{
clrscr();
int n,notas[Max];
char op;
float x;
printf("\t\t Analise Estatistica das Notas dos Alunos\n\n");
n=LerNotas(notas);
while((op=menu())!=27)
{
  clrscr();
  switch(op)
  {
case '1':
	 printf("\n\n\n\t\t\t A media das notas e: %.2f",media(notas,n));
	 break;
case '2':
	 printf("\n\n\n\t\t\t O desvio padrao das notas e: %.2f",desvio(notas,n));
	 break;
case '3':
	 printf("\t\t\t Introduza um valor: ");
	 fflush(stdin);
	 scanf("%f",&x);


/*    	printf(" O percentil de %.2f e: %d",x,percentil(notas,n,x));
			break;
case '4':
	 printf("\n A mediana das notas e: %d",          );
	 break;
case '5':
	 printf("\n O 1º quartil e: %d \n",percentil(notas,n,x=25));
	 printf("\n O 2º quartil e: %d \n",percentil(notas,n,x=50));
	 printf("\n O 3º quartil e: %d \n",percentil(notas,n,x=75));
	 break;
*/

default:
	 clrscr();
	 printf("\n\n\n\n\n\n\t\t\t\t Opcao Invalida");
  }
  getch();
}
}


char menu()
{
  clrscr();
  printf("\n\n\t\t\t 1 - Calcular a media.\n ");
  printf("\n\t\t\t 2 - Calcular o desvio padrao.\n ");
  printf("\n\t\t\t 3 - Calcular percentil.\n ");
  printf("\n\t\t\t 4 - Calcular a mediana.\n ");
  printf("\n\t\t\t 5 - Calcular o 1§,2§ e 3§ quartis.\n");
  printf("\n\n\t\t\t Qual a sua opcao?");
  return getch();
}


int LerNotas(int notas[])
{
  int i,num;
  do
  {
  printf("\nIntroduza o numero de alunos: ");
  fflush(stdin);
  scanf("%d",&num);
  if(num<=0)
  printf("\n\n\t\t Dado invalido.Introduza um lado maior do que 0.\n\n");
  }
  while(num<=0);
  clrscr();
  for(i=0;i<num;i++)
  {
  printf("\n\n\t\t\tIntroduza a %d¦ nota: ",i+1);
  fflush(stdin);
  scanf("%d",&notas[i]);
  }
  return(num);
}


void ordenar(int notas[],int n)
{
int i,j,aux;
for(i=0; i<n; i++);
     for(j=i+1; j<n+1; j++)
if(notas[i]<notas[j])
{
aux=notas[i];
notas[i]=notas[j];
notas[j]=aux;
}
}


float media(int notas[],int n)
{
int i,soma=0;
for(i=0;i<n;i++)
 soma=soma+notas[i];
return(soma/n);
}


float desvio(int notas[],int n)
{
int i,soma=0;
float desv,med;
for(i=0;i<n;i++)
 soma=soma+notas[i];
med=media(notas,n);
desv=(soma-med)/(n-1);
return(desv);
}

Obrigado  :P

Share this post


Link to post
Share on other sites
vbmaster

eyeonyou, eu por mim tento sempre ajudar, e gosto que venham ao nosso fórum pedir ajuda. mas já sabes, há sempre aquela tendência normal das pessoas de não quererem fazer o trabalho dos outros...

Mesmo assim....aih quantas vezes já eu fiz o trabalho dos outros...é a vida :D

Enfim...

Ora bem...quanto à mediana....omg...a mediana é o valor central entre o 2º e 3º quartil....mas ..., omfg tou mesmo esquecido e dei isto o ano passado no último período.

Já não sei bem sobre que valores acho a mediana....enfim....já é tarde se entretanto não conseguires eu searcho no meu caderno do ano passado e tento dar dicas para a mediana.

Fica bem :P ;):P

Share this post


Link to post
Share on other sites
saramgsilva
Citação

eyeonyou, eu por mim tento sempre ajudar, e gosto que venham ao nosso fórum pedir ajuda. mas já sabes, há sempre aquela tendência normal das pessoas de não quererem fazer o trabalho dos outros...

Mesmo assim....aih quantas vezes já eu fiz o trabalho dos outros...é a vida :P

eu tambem nao me importo de ajudar nas duvidas que surgem.... mas ao fazermos os trabalhos dos outros, nao estamos ajudar nada, pois quem devia fazer o trabalho nao aprende nada!!é só isto, agora chegar aki e por o enunciado dos trabalhos e nao colocar o codigo é do genero façam me.... é so isso.

Se o ppl chegar ca é pa tou a fazer este problema e ja fiz isto, mas nao sei se tou a pensar bem, ou nao consigo andar pra frente, ai sim é pedir ajuda, sobre o trabalho k ja realizou....percebem?? ;)

PEACE AND LOVE

Share this post


Link to post
Share on other sites
eyeonyou

tens td a razao.Mas eu qd abri o topico disse que ia por o codigo assim cm acabei por pôr.So pus o enunciado pra kem me kiser ajudar perceber o problema e as minha duvidas.Axo q me falta so 2 ou 3 funçoes.E sao mm essas que n tou a ver cm se faz, pq de resto o prog ta a funcionar.Hj vou falar com um amigo q tem o mm work e vou ver se ele ja tem isso.É q o work tem de tar pronto amanha a noite :P

Share this post


Link to post
Share on other sites
eyeonyou

Boas!

Daki n sakei nenhuma dica,mas aki fica o codigo para quem kiser ou ajudar a perceber alguma coisa de C.



#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define Max 200


char menu(void);
int LerNotas(int notas[]);
void ordenar(int notas[],int);
float media(int notas[],int);
float desvio(int notas[],int);
float mediana(int notas[],int);
int percentil(int notas[],int,float);




void main(void)
{
clrscr();
int n,notas[Max];
char op;
float x;
n=LerNotas(notas);
ordenar(notas,n);
while((op=menu())!=27)
      {
      clrscr();
      switch(op)
    {
     case '1':
	      printf("\n\n\n\t\t\t A media das notas e: %.2f",media(notas,n));
	      break;

     case '2':
	      printf("\n\n\n\t\t\t O desvio padrao das notas e: %.2f",desvio(notas,n));
	      break;

     case '3':
	      printf("\n\n\n\t\t\t Introduza um valor: ");
	      fflush(stdin);
	      scanf("%f",&x);
	      printf("\n\n\n\t\t\t O percentil de %.2f e: %d",x,percentil(notas,n,x));
	      break;

     case '4':
	      printf("\n\n\n\t\t\t A mediana das notas e: %.2f",mediana(notas,n));
	      break;

     case '5':
	      printf("\n\n\n\t\t\t O 1º quartil e: %d \n",percentil(notas,n,x=25));
	      printf("\n\n\n\t\t\t O 2º quartil e: %d \n",percentil(notas,n,x=50));
	      printf("\n\n\n\t\t\t O 3º quartil e: %d \n",percentil(notas,n,x=75));
	      break;

     default:
	     clrscr();
	     printf("\n\n\n\t\t\t Opcao Invalida");
    }
getch();
      }
}


char menu()
{
  clrscr();
  printf("\n\n\n\t\t\t 1 - Calcular a media              ");
  printf("\n\n\n\t\t\t 2 - Calcular o desvio padrao      ");
  printf("\n\n\n\t\t\t 3 - Calcular percentil            ");
  printf("\n\n\n\t\t\t 4 - Calcular a mediana            ");
  printf("\n\n\n\t\t\t 5 - Calcular o 1§ 2§ e 3§ quartis   ");
  printf("\n\n\n\t\t\t Qual a sua opçao?");
  return getch();
}


int LerNotas(int notas[])
{
  int i,num;
  do
   {
    printf("\nNumero de alunos? ");
    fflush(stdin);
    scanf("%d",&num);
    if(num<=0 || num>200)
     printf("\n\n\t Dado invalido.Introduza um n§ maior do que 0 e menor ou igual a 200\n");
   }
  while(num<=0 || num>200);
  clrscr();
  for(i=0;i<num;i++)
     {
      do
       {
printf("\nIntroduza a %d¦ nota: ",i+1);
fflush(stdin);
scanf("%d",&notas[i]);
if(notas[i]<=0 || notas[i]>20)
printf("\n\n Dado invalido.Introduza um n§ maior do que 0 e menor ou igual a que 20\n");
       }
      while(notas[i]<=0 || notas[i]>20);
     }
  return(num);
}


void ordenar(int notas[],int n)
{
int i,j,menor,aux;
for(i=0; i<n-1; i++)
     {
      menor=i;
      for(j=i+1; j<n; j++)
  if(notas[j]<notas[menor])
  menor=j;
  if(menor!=i)
    {
    aux=notas[i];
    notas[i]=notas[menor];
    notas[menor]=aux;
    }
     }
}


float media(int notas[],int n)
{
int i;
float soma=0;
for(i=0;i<n;i++)
 soma=soma+notas[i];
return(soma/n);
}


float desvio(int notas[],int n)
{
int i;
float x=0,med,desv;
med=media(notas,n);
for(i=0;i<n;i++)
 x=x+((notas[i]-med)*(notas[i]-med));
 desv=x/(n-1);
return(desv);
}

float mediana(int notas[],int n)
{
float med;
if(n%2==0)
    med=(notas[n/2]+notas[(n/2)-1])/2;
else
    med=notas[n/2];
return(med);
}


int percentil(int notas[],int n,float x)
{
int y;
float p;
p=x/100;
y=p*(n+1);
return(notas[y-1]);
}

Ta a funcionar e faz o pretendido :P

Ja ag,com este novo forum as letras do codigo ficam mt pekenas,n axam?

fikem bem

Share this post


Link to post
Share on other sites
eyeonyou

sim ta melhor,mas mm assim fica mt pekenito.Da pra por a letra maior? e ja ag cm fizeste isso? é automatico ou tiveste q andar passo a passo?

Share this post


Link to post
Share on other sites
deathseeker25

sim ta melhor,mas mm assim fica mt pekenito.Da pra por a letra maior? e ja ag cm fizeste isso? é automatico ou tiveste q andar passo a passo?

Faz-se através da utilização do syntax highlighting....quando fazes um post, na zona do bbcode deves ter uma caixinha a dizer GeSHi. Vai lá e escolhe a linguagem que pretendes postar e coloca o código dentro das tags que te aparecem...é básico...e dá muito mais jeito a quem lê o código...

Cumps

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.