Ir ao conteúdo
  • Cadastre-se
Victor Medeiros da Silva

Programa em c , média da sala

Recommended Posts

olá pessoal , preciso de uma ajuda com o seguinte problema :

 

Uma classe é um conjunto de alunos que possuem comportamentos e desempenhos distintos entre si. Apesar disto, é interessante acompanhar o desemprenho da sala como um único grupo. Suponha, sem perder a generalidade, que estejamos acompanhando uma sala de pós-graduação; o tamanho desta é, normalmente, diminuto. O que faremos, entretanto, vale para salas de qualquer tamanho. Para entendermos o desempenho da sala, podemos fazer cálculo de alguns parâmetros:

a) Média da sala: Trata-se da média aritmética da sala

b ) Range de notas: Trata-se da diferença entre a maior nota e a menor nota

c) Distribuição da sala: Trata-se de calcular e imprimir:

         c1) Quantas notas estão acima da média da sala e;

         c2) Quantas notas estão abaixo da média da sala.

 

Faça um programa em C que leia o desempenho, uma nota entre 0.0 e 10.0, dos 10 alunos, calcule e imprima o pedido acima:

 

Exemplificando:       6.5    8.5    7.5    5.5    4.5    9.5    9.0    8.0    7.0    6.0

                                 0       1       2        3       4      5        6       7       8       9

 

a ) Média da sala: 7.2( pois temos (6.5+8.5+7.5+5.5+4.5+9.5+9.0+8.0+7.0+6.0)/10 )

b ) Range de notas: 5.0 ( pois temos 9.5 – 4.5 = 5.0 )

C -- c1 )Notas acima da média da sala: 5

       c2 )Notas abaixo da média da sala: 5

 

 

e resumindo , eu só consegui fazer a média da sala, como eu faço para fazer o item b e c ???  segue abaixo o código : 

#include<stdio.h>                                                                              

void main()                                                                                     
{
    int nota[1][10];                                                                              
    float med, soma;                                                                         
    int x,y;                                                                                   
    printf(" Este programa calcula a media de notas\n");       
    printf("\n\n Entre com os valores das notas:\n\n");                            
    for(x = 0; x <1; x ++)                                                                   
        {
            for(y = 0; y <10; y ++)                                                           
            {
            printf(" nota[%d][%d]=",x+1,y+1);                                                
            scanf("%d",&nota[x][y]);                                                                         }
        }
    soma = (nota[0][0] + nota[0][1] + nota[0][2] + nota[0][3] + nota[0][4] + nota[0][5] + nota[0][6] + nota[0][7] + nota[0][8] + nota[0] [9]);  
    med= soma / 10;
   
printf("A media da sala e : %.2f\n", med);                                           

}


 

Editado por DiF
Botão CODE <>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, para o segundo caso eu fiz assim:

(Só lembrando eu criei esse ai do zero então as variáveis estão diferentes do seu, mas ai e só fazer as alterações necessárias)

 

#include <stdio.h>

int main()
{
    int e, a;
    float i[13];
    for (e=0; e<10; e++)
        scanf("%f", &i[e]);
    i[11] = 0;
    for (e=0, a=0; e<10; e++)
    {
        a++;
        if (i[e]>=i[a]){
            i[10] = i[e];
            if (i[10]>i[11]){
                i[11] = i[10];
                    }
        }
    }

    i[12] = i[11];

    for (e=0, a=0; e<10; e++)
    {
        a++;
        if (i[e]<=i[a]){
            i[10] = i[e];
            if (i[10]<i[12]){
                i[12] = i[10];
                    }
        }
    }

    printf("\n\nO resultado e %.2f - %.2f = %.2f", i[11], i[12], i[11]-i[12]);
    system("PAUSE");
    return 0;
}

Deve haver uma maneira mais fácil que essa, mas foi a unica que veio na minha cabeça.

 

Para a letra C é só usar um for com um if e else colocando caso seja > ou < tal valor

Compartilhar este post


Link para o post
Compartilhar em outros sites
4 horas atrás, Victor Medeiros da Silva disse:

b ) Range de notas: 5.0 ( pois temos 9.5 – 4.5 = 5.0 )

simplesmente crie 2 variáveis uma chamada maior e outra menor que irão guardar logicamente o o maior e o menor valor respectivamente. É só recorrer todas as posições do array e para guardar o maior numero é só fazer algo como:

maior = 0;
for ( x = 0; x < 1; x ++ ) {
    for ( y = 0; y < 10; y ++ ) {
        if ( nota[x][y] > maior ) {
            maior = nota[x][y];
        }
    }
}


para o menor é a mesma coisa

menor = nota[0][0];
for ( x = 0; x < 1; x ++ ) {
    for ( y = 0; y < 10; y ++ ) {
        if ( nota[x][y] < menor ) {
            menor = nota[x][y];
        }
    }
}
4 horas atrás, Victor Medeiros da Silva disse:

C -- c1 )Notas acima da média da sala: 5

       c2 )Notas abaixo da média da sala: 5

Esse exercício é a mesma coisa que os outros anteriores, você precisa recorrer todas as posições e usar contador para ir anotando cada nota que está abaixo e acima da media.

 

for ( x = 0; x < 1; x ++ ) {
    for ( y = 0; y < 10; y ++ ) {
        if ( nota[x][y] < 5 ) {
            abaixo++;
        }else{
            acima++;
        }
    }
}

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
//~b & c
#include <stdio.h>
#include <stdlib.h>
int maior( float,float );
int menor( float,float );
int compa( unsigned char,float[],int (*)( float,float ) );
float range( unsigned char,float[] );
void  media( unsigned char,float[] );
int main( void )
{
  float notas[ 10 ] = { 6.5,8.5,7.5,5.5,4.5,9.5,9.0,8.0,7.0,6.0 };

  media( 10,notas ),
  printf( "%s%.1f\n\n", "Range de notas: ", range( 10,notas ) );
  system( "pause" );

  return 0; //~Compile
}


//~Definição de função
//~Compara dois valores retorna x para função maior ou menor
int compa(unsigned char t, float n[], int (*func)( float,float ) )
{
  unsigned char p = 0; //~Posição do maior ou menor valor
  while( t-- ){ if( func( n[t],n[p] ) ) p = t; }
  return( p );
}

//~Função retorna diferença da maior e menor nota
float range( unsigned char t, float n[] )
{
  return( n[ compa( t,n,maior ) ] - n[ compa( t,n,menor ) ] );
}

//~Função retorna o maior valor do vetor
int maior( float x,float y ){ return( x > y ); }

//~Função retorna o menor valor do vetor
int menor( float x,float y ){ return( x < y ); }

//~Função contabiliza e exibe n. de medias
void media( unsigned char t, float n[] )
{
  unsigned char buf = t;
  float med = .0f;

  //~Soma das notas
  while( t-- )med = n[ t ] + med;

  //~Media das notas
  med = med / buf;

    t = buf; //~Restituindo o contador
    //~Contabilizando o n. de Maior e Menor nota que média
    unsigned char ma = 0, me = 0;
    while( t-- )
      if( n[ t ] > med ) ma = ma + 1; else
      if( n[ t ] < med ) me = me + 1; else
      continue;

   //~Exibir na tela os resultados:
   printf("%s\n",
   "-------------------------------------");
   printf( "%s%d\n%s%d\n",
   "Notas  acima da media da sala: ",ma ,
   "Notas abaixo da media da sala: ",me );


  return;

}

Como se trata de um tarefa simples, não vejo problema em faze-lo por completo e coloquei um elemento coringa ponteiro de função, algo interessante de trabalhar.

Editado por Mauro Britivaldo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×