nikolas_serafini

Lista 7 - Exercício 3

Aug 10th, 2013
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.87 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define MAX_ALUNOS 30
  4. #define TAM_NOME 50
  5.  
  6. struct TipoAluno {
  7. char nome[TAM_NOME];
  8. float media;
  9. };
  10.  
  11. float solicitaNota(void);
  12. int solicitaFalta(void);
  13. float calculaMedia(float nota1, float nota2, float pontos, int fal);
  14. float bonusMedia(int fal);
  15. void exibeAlunos(struct TipoAluno aluno[], int quant);
  16.  
  17. int main() {
  18.  
  19.     struct TipoAluno alunos[MAX_ALUNOS];
  20.     float nota1, nota2, pontos;
  21.     int i,faltas,quant;
  22.    
  23.     printf("Entre com a quantidade de alunos :");
  24.     scanf("%d",&quant);
  25.  
  26.     for(i=0; i < quant; i++) {
  27.         printf("\nEntre com o nome do aluno: ");
  28.         fflush(stdin);
  29.         gets(alunos[i].nome);
  30.         printf("Entre com a primeira nota (0 a 10): ");
  31.         nota1 = solicitaNota();
  32.         printf("Entre com a segunda nota (0 a 10): ");
  33.         nota2 = solicitaNota();
  34.         printf("Entre com os pontos (0 a 10): ");
  35.         pontos = solicitaNota();
  36.         printf("Entre com a quantidade de faltas do aluno :\n");
  37.         faltas = solicitaFalta();
  38.         alunos[i].media = calculaMedia(nota1, nota2, pontos, faltas);
  39.     }
  40.  
  41.     printf("\n\nExibicao dos dados:");
  42.     exibeAlunos(alunos,quant);
  43.  
  44.     return 0;
  45. }
  46.  
  47.  
  48. float solicitaNota(void) {
  49.  
  50.     float nota;
  51.     do {
  52.         scanf("%f", &nota);
  53.         if(nota < 0 || nota > 10) {
  54.             printf("Erro, valor deve ser de 0 a 10 \n");
  55.         }
  56.     }while(nota < 0 || nota > 10);
  57.  
  58.     return nota;
  59. }
  60.  
  61. int solicitaFalta(void) {
  62.  
  63.     int falta;
  64.     scanf("%d",&falta);
  65.     return falta;
  66. }
  67.  
  68. float calculaMedia(float nota1, float nota2, float pontos, int faltas) {
  69.     float media = (nota1 + nota2)/2 + pontos;
  70.    
  71.     if(media >= 10)
  72.         return 10;
  73.     else
  74.         return media+bonusMedia(faltas);
  75. }
  76.  
  77. void exibeAlunos(struct TipoAluno aluno[], int quant) {
  78.     int i;
  79.  
  80.     for(i=0; i < quant; i++) {
  81.         printf("\n\nAluno: %s", aluno[i].nome);
  82.         printf("\nMedia: %.2f", aluno[i].media);
  83.     }
  84. }
  85.  
  86. float bonusMedia(int faltas) {
  87.     if(faltas == 0)
  88.         return 0.5;
  89.     else
  90.         return 0;
  91. }
Advertisement
Add Comment
Please, Sign In to add comment