Advertisement
weldisalves

Lista 07 - exercício 02

Aug 11th, 2013
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.55 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define MAX_ALUNOS 1
  4. #define TAM_NOME 50
  5.  
  6. /* 1. No programa do exemplo 1, acrescente na estrutura que representa o aluno um campo para
  7. armazenar a quantidade de faltas. Faça as modificações necessárias no programa para que o novo
  8. campo seja utilizado na entrada e saída de dados. Dê um bônus de 0,5 pontos na média final para o
  9. aluno que não tem faltas.
  10. Para isso, crie as seguintes duas funções:
  11.  a função 'solicitaFaltas' que faz a entrada da quantidade de faltas. Observe o
  12.      funcionamento semelhante da função 'solicitaNota'
  13.  a função ‘bonusMedia’, que retorna 0,5 pontos sempre que o aluno não tiver faltas. Para isso, ela
  14.           deverá receber a quantidade de faltas como argumento. Faça a sua chamada de dentro da
  15.            função ‘calculaMedia’ para acrescentar a pontuação de bônus de forma apropriada e altere o
  16.                    que for necessário em ‘calculaMedia’.
  17. Sugestão para o protótipo destas funções:
  18. float solicitaNota(void);
  19. float calculaMedia(float nota1, float nota2, float pontos, int fal);
  20. float bonusMedia(int fal); */
  21.  
  22. /* 2. Ainda no exemplo 1, acrescente a função 'exibeTodosAlunos'. Esta função deverá receber como
  23. argumento o vetor contendo todos os alunos e fazer a exibição de cada um através da chamada da
  24. função já existente 'exibeAluno'.
  25. Sugestão de protótipo:
  26. void exibeTodosAlunos(struct TipoAluno turma[]);
  27. Observe que o parâmetro turma indicado com colchetes [] se refere ao vetor inteiro e não somente a um
  28. aluno.
  29. Após a sua construção, use-a no programa principal. */
  30.  
  31. struct TipoAluno {
  32.     char nome[TAM_NOME];
  33.     float media;
  34.     int faltas;
  35.     };
  36.  
  37. int solicitaFaltas()
  38. {
  39.     int faltas;
  40.  
  41.     do{
  42.         printf("\n Digite o numero de faltas: ");
  43.         scanf("%d",&faltas);
  44.  
  45.         if(faltas<0) printf("\n ERROR: Numero negativo!");
  46.         }while(faltas<0);
  47.     return faltas;
  48. }
  49.  
  50. float solicitaNota()
  51. {
  52.     float nota;
  53.  
  54.     do {
  55.         scanf("%f", &nota);
  56.         if(nota < 0 || nota > 10)printf("Erro, valor deve ser de 0 a 10 \n");
  57.         }while(nota < 0 || nota > 10);
  58. return nota;
  59. }
  60.  
  61. float bonusMedia(int faltas)
  62. {
  63.     float bonus=0;
  64.     if(faltas==0) bonus=0.5;
  65.     return bonus;
  66. }
  67. float calculaMedia(float nota1,float nota2,float pontos,int faltas)
  68. {
  69.     float bonus=bonusMedia(faltas);
  70.     float media = (nota1+nota2)/2 + pontos+bonus;
  71.  
  72.     return media;
  73. }
  74.  
  75. void exibeAluno(struct TipoAluno aluno)
  76. {
  77.     printf("\n\nAluno: %s", aluno.nome);
  78.     printf(" Media: %.2f", aluno.media);
  79. }
  80.  
  81. void exibeTodosAlunos(struct TipoAluno alunos[])
  82. {
  83.     int i;
  84.  
  85.     for(i=0;i<MAX_ALUNOS;i++)
  86.     {
  87.         exibeAluno(alunos[i]);
  88.     }
  89.  
  90. }
  91. int main()
  92. {
  93.     struct TipoAluno alunos[MAX_ALUNOS];
  94.     float nota1, nota2, pontos;
  95.     int i=0,j;
  96.     char opcao;
  97.     while(i<MAX_ALUNOS)
  98.     {
  99.         printf("\nEntre com o nome do aluno: ");
  100.         __fpurge(stdin);
  101.         fgets(alunos[i].nome,TAM_NOME,stdin);
  102.         printf("Entre com a primeira nota (0 a 10): ");
  103.         nota1 = solicitaNota();
  104.         printf("Entre com a segunda nota (0 a 10): ");
  105.         nota2 = solicitaNota();
  106.         printf("Entre com os pontos (0 a 10): ");
  107.         pontos = solicitaNota();
  108.         alunos[i].faltas=solicitaFaltas();
  109.         alunos[i].media = calculaMedia(nota1, nota2, pontos,alunos[i].faltas);
  110.  
  111.         printf("\n Deseja parar?(s/n) : ");
  112.         getchar();
  113.         scanf("%c",&opcao);
  114.  
  115.         i++;
  116.  
  117.         if(opcao=='s')break;
  118.     }
  119.  
  120.     exibeTodosAlunos(alunos);
  121.  
  122.     return 0;
  123. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement