Advertisement
Drowze

APC B 04 - Structs 02

Oct 15th, 2014
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.83 KB | None | 0 0
  1.  /*Complementando o exercício anterior:
  2.  -> Criar uma função para calcular a média geral da sala (com
  3.  base na média dos alunos);
  4.  -> Criar uma função para calcular e quantos alunos estão acima
  5.  da média geral.
  6.  -> Criar um procedimento para mostrar o nome dos alunos reprovados
  7.  (para ser aprovado o aluno necessita de média igual ou maior que 5.0);
  8.  -> Criar um procedimento para mostrar os nomes dos alunos com a
  9.  maior e menor média.*/
  10. #include <stdio.h>
  11. #include <stdlib.h>
  12. #include <conio.h>
  13.  
  14. #define MAX 2
  15.  
  16. struct tipoAluno {
  17.     char nome[50], ra[9];
  18.     float nota1, nota2, media;
  19. };
  20.  
  21. void recebe_dados(tipoAluno lista_alunos[]);
  22. void faz_media(tipoAluno lista_alunos[]);
  23.  
  24. float media_geral(tipoAluno lista_alunos[]);
  25. int alunos_positivos(tipoAluno lista_alunos[], float media_sala);
  26. void alunos_reprovados(tipoAluno lista_alunos[]);
  27. void maior_menor_media(tipoAluno lista_alunos[]);
  28.  
  29. void main(){
  30.     tipoAluno lista_alunos[MAX];
  31.  
  32.     recebe_dados(lista_alunos);
  33.     faz_media(lista_alunos); //dos alunos
  34.    
  35.     float media_sala = media_geral(lista_alunos); // da sala
  36.     printf("\n\nMedia da sala: %f",media_sala);
  37.     printf("\n\nNumero de alunos acima da media da sala: %d\n",alunos_positivos(lista_alunos, media_sala));
  38.     alunos_reprovados(lista_alunos);
  39.     maior_menor_media(lista_alunos);
  40.  
  41.     system("Pause");
  42. }
  43.  
  44. void recebe_dados(tipoAluno lista_alunos[]){
  45.     for(int i=0; i<MAX; i++){
  46.         printf("Digite o nome do aluno %d: ", i+1);
  47.         fflush(stdin);
  48.         gets (lista_alunos[i].nome);
  49.  
  50.         printf("Digite o RA do aluno %d: ", i+1);
  51.         fflush(stdin);
  52.         gets (lista_alunos[i].ra);
  53.        
  54.  
  55.         printf("Nota 1 do aluno %d: ", i+1);
  56.         scanf("%f",&lista_alunos[i].nota1);
  57.  
  58.         printf("Nota 2 do aluno %d: ", i+1);
  59.         scanf("%f",&lista_alunos[i].nota2);
  60.     }
  61. }
  62.  
  63. void faz_media(tipoAluno lista_alunos[]){
  64.     for(int i=0; i<MAX; i++){
  65.         lista_alunos[i].media = lista_alunos[i].nota1*0.4 + lista_alunos[i].nota2*0.6;
  66.     }
  67. }
  68.  
  69. float media_geral(tipoAluno lista_alunos[]){
  70.     float media_sala=0;
  71.     for(int i=0; i<MAX; i++){
  72.         media_sala += lista_alunos[i].media;
  73.     }
  74.     media_sala = media_sala/MAX;
  75.  
  76.     return media_sala;
  77. }
  78.  
  79. int alunos_positivos(tipoAluno lista_alunos[], float media_sala){
  80.     int total=0;
  81.     for(int i=0; i<MAX; i++){
  82.         if(lista_alunos[i].media > media_sala) total++;
  83.     }
  84.     return total;
  85. }
  86.  
  87. void alunos_reprovados(tipoAluno lista_alunos[]){
  88.     for(int i = 0; i<MAX; i++){
  89.         if(lista_alunos[i].media < 5) printf("REPROVADO: %s", lista_alunos[i].nome);
  90.     }
  91. }
  92.  
  93. void maior_menor_media(tipoAluno lista_alunos[]){
  94.     float maior = lista_alunos[0].media;
  95.     float menor = lista_alunos[0].media;
  96.  
  97.     for(int i = 0; i<MAX; i++){
  98.         if(lista_alunos[i].media > maior) maior = lista_alunos[i].media;
  99.         if(lista_alunos[i].media < menor) menor = lista_alunos[i].media;
  100.     }
  101.  
  102.     printf("\nMaior media: %f\n", maior);
  103.     printf("Menor media: %f\n", menor);
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement