• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

eyeonyou

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

13 mensagens neste tópico

bem outra X com tpc's ... é bom k trabalhes... e mais nao digo para nao ofender ninguem :x

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Cada vez que abres o programa tens de pôr lá as notas de todos os alunos?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

depois compilo e executo...mto bem... :-* e usas funções...  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora