Advertisement
weldisalves

Lista 07 - exercício 07

Aug 11th, 2013
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.06 KB | None | 0 0
  1. #include <stdio.h>
  2. #define MAX 2
  3.  
  4. /* 7. Desenvolva um programa para permitir o cadastro de 50 alunos. Cada aluno deve ser representado
  5. por uma estrutura formada por uma matrícula (exatamente 5 caracteres contendo letras e números), um
  6. nome (máximo de 40 caracteres) e um histórico de notas. O histórico de notas, que também deve ser
  7. representado por uma estrutura, é composto de duas notas de provas, uma nota de trabalho e uma nota
  8. de pontuação extra.
  9. Elabore uma função para calcular e retornar a média das notas. Esta média é calculada somando-se as
  10. quatro notas e dividindo-se por três. Se o resultado for superior a 10 deve-se retornar 10.
  11. Exiba todas as informações cadastradas e a média das notas de cada aluno. Além disto, calcule e exiba
  12. a quantidade de alunos cuja média foi de 7 a 10, e exiba a maior média dos 50 alunos.
  13. Obs.:
  14. não permita digitação de notas fora da faixa de 0 a 10;
  15. sempre que possível reaproveite o código através da modularização;
  16. escreva o protótipo da função que calcula a média;
  17. use somente variáveis locais para resolver este problema. */
  18.  
  19. struct TipoHistoricoNotas{
  20.     float notap1;
  21.     float notap2;
  22.     float notat1;
  23.     float pontExtra;
  24.     };
  25. struct TipoAluno{
  26.     char matricula[6];
  27.     char nome[40];
  28.     struct TipoHistoricoNotas notas;
  29.     float mediaFinal;
  30.     };
  31.  
  32. float media(struct TipoAluno alunos);
  33.  
  34. void mostrarTela(struct TipoAluno alunos[])
  35. {
  36.     int i;
  37.  
  38.     for(i=0;i<MAX;i++)
  39.     {
  40.         printf("\n\n Matricula: %s",alunos[i].matricula);
  41.         printf("\n Nome: %s",alunos[i].nome);
  42.         printf(" Media: %.3f",alunos[i].mediaFinal);
  43.     }
  44. }
  45.  
  46. void media7a10(struct TipoAluno alunos[])
  47. {
  48.     int cont=0,i;
  49.     float maior=0;
  50.  
  51.     for(i=0;i<MAX;i++)
  52.     {
  53.         if(alunos[i].mediaFinal>=7) cont++;
  54.         if(alunos[i].mediaFinal>maior) maior=alunos[i].mediaFinal;
  55.     }
  56.  
  57.     printf("\n\n\n Qtde alunos media >= 7 : %d",cont);
  58.     printf("\n Maior media: %.3f",maior);
  59. }
  60.  
  61. void cadastrar(struct TipoAluno alunos[])
  62. {
  63.     int i;
  64.  
  65.     for(i=0;i<MAX;i++)
  66.     {
  67.         printf("\n Digite a matricula: ");
  68.         __fpurge(stdin);
  69.         fgets(alunos[i].matricula,6,stdin);
  70.  
  71.         printf("\n Nome: ");
  72.         __fpurge(stdin);
  73.         fgets(alunos[i].nome,40,stdin);
  74.  
  75.         printf("\n Nota P1: ");
  76.         scanf("%f",&alunos[i].notas.notap1);
  77.  
  78.         printf("\n Nota P2: ");
  79.         scanf("%f",&alunos[i].notas.notap2);
  80.  
  81.         printf("\n Nota T1: ");
  82.         scanf("%f",&alunos[i].notas.notat1);
  83.  
  84.         printf("\n Ponto extra: ");
  85.         scanf("%f",&alunos[i].notas.pontExtra);
  86.  
  87.         alunos[i].mediaFinal=media(alunos[i]);
  88.     }
  89.  
  90. }
  91.  
  92. int main()
  93. {
  94.     struct TipoAluno alunos[MAX];
  95.  
  96.     cadastrar(alunos);
  97.     mostrarTela(alunos);
  98.     media7a10(alunos);
  99.  
  100.     return 0;
  101. }
  102.  
  103. float media(struct TipoAluno alunos)
  104. {
  105.     float mediaFinal;
  106.  
  107.     mediaFinal = (alunos.notas.notap1+alunos.notas.notap2+alunos.notas.notat1+alunos.notas.pontExtra)/3;
  108.  
  109.     if(mediaFinal>10) return 10;
  110.  
  111.     return mediaFinal;
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement