nikolas_serafini

Lista 7 - Exercício 2

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