Advertisement
weldisalves

Lista 07 - exercício 01

Aug 11th, 2013
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.85 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. struct TipoAluno {
  23.     char nome[TAM_NOME];
  24.     float media;
  25.     int faltas;
  26.     };
  27.  
  28. int solicitaFaltas()
  29. {
  30.     int faltas;
  31.  
  32.     do{
  33.         printf("\n Digite o numero de faltas: ");
  34.         scanf("%d",&faltas);
  35.  
  36.         if(faltas<0) printf("\n ERROR: Numero negativo!");
  37.         }while(faltas<0);
  38.     return faltas;
  39. }
  40.  
  41. float solicitaNota()
  42. {
  43.     float nota;
  44.  
  45.     do {
  46.         scanf("%f", &nota);
  47.         if(nota < 0 || nota > 10)printf("Erro, valor deve ser de 0 a 10 \n");
  48.         }while(nota < 0 || nota > 10);
  49. return nota;
  50. }
  51.  
  52. float bonusMedia(int faltas)
  53. {
  54.     float bonus=0;
  55.     if(faltas==0) bonus=0.5;
  56.     return bonus;
  57. }
  58. float calculaMedia(float nota1,float nota2,float pontos,int faltas)
  59. {
  60.     float bonus=bonusMedia(faltas);
  61.     float media = (nota1+nota2)/2 + pontos+bonus;
  62.  
  63.     return media;
  64. }
  65.  
  66. void exibeAluno(struct TipoAluno aluno)
  67. {
  68.     printf("\n\nAluno: %s", aluno.nome);
  69.     printf(" Media: %.2f", aluno.media);
  70. }
  71.  
  72. int main()
  73. {
  74.     struct TipoAluno alunos[MAX_ALUNOS];
  75.     float nota1, nota2, pontos;
  76.     int i=0;
  77.     char opcao;
  78.     while(i<MAX_ALUNOS)
  79.     {
  80.         printf("\nEntre com o nome do aluno: ");
  81.         __fpurge(stdin);
  82.         fgets(alunos[i].nome,TAM_NOME,stdin);
  83.         printf("Entre com a primeira nota (0 a 10): ");
  84.         nota1 = solicitaNota();
  85.         printf("Entre com a segunda nota (0 a 10): ");
  86.         nota2 = solicitaNota();
  87.         printf("Entre com os pontos (0 a 10): ");
  88.         pontos = solicitaNota();
  89.         alunos[i].faltas=solicitaFaltas();
  90.         alunos[i].media = calculaMedia(nota1, nota2, pontos,alunos[i].faltas);
  91.  
  92.         i++;
  93.  
  94.     }
  95.  
  96.     for(i=0; i < MAX_ALUNOS; i++)
  97.     {
  98.         exibeAluno(alunos[i]);
  99.     }
  100.  
  101.     return 0;
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement