Advertisement
hmcristovao

lista07_exerc02

Oct 24th, 2012
318
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.29 KB | None | 0 0
  1. // Exerc 2 - Lista 07
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5.  
  6. #define MAX_ALUNOS 3
  7. #define TAM_NOME 50
  8.  
  9. struct TipoAluno {
  10.       char nome[TAM_NOME];
  11.       float media;
  12.       int faltas;
  13. };
  14.  
  15. // protótipos das funções
  16. float solicitaNota(void);
  17. float calculaMedia(float nota1, float nota2, float pontos, int fal);
  18. void exibeAluno(struct TipoAluno aluno);
  19. float bonusMedia(int fal);
  20. void exibeTodosAlunos(struct TipoAluno turma[]);
  21.  
  22. // programa principal com as chamadas das funções criadas
  23. int main(void) {
  24.       // As variáveis criadas aqui dentro (chamadas de variáveis locais) não são
  25.       // visíveis em outras funções. Variáveis declaradas fora de qualquer função
  26.       // são chamadas de variáveis globais.
  27.       // Se houver necessidade de acessar uma variável dentro de outra função
  28.       // deve-se passa-la como argumento como acontece com: calculaMedia e exibeAluno
  29.       struct TipoAluno alunos[5];
  30.       float nota1, nota2, pontos, faltas;
  31.       int i;
  32.       for(i=0; i < MAX_ALUNOS; i++) {
  33.             printf("\nEntre com o nome do aluno: ");
  34.             fflush(stdin);
  35.             gets(alunos[i].nome);
  36.             printf("Entre com a primeira nota (0 a 10): ");
  37.             nota1 = solicitaNota();
  38.             printf("Entre com a segunda nota (0 a 10): ");
  39.             nota2 = solicitaNota();
  40.             printf("Entre com os pontos (0 a 10): ");
  41.             pontos = solicitaNota();
  42.             faltas = solicitaFaltas();
  43.             alunos[i].media = calculaMedia(nota1, nota2, pontos, faltas);
  44.       }
  45.       exibeTodosAlunos(alunos);
  46.       return 0;
  47. }
  48.  
  49. // Funções:
  50.  
  51. // solicita uma nota exigindo que a mesma esteja na faixa válida: 0 a 10
  52. float solicitaNota(void) {
  53.       // a variável nota tem escopo local, ou seja ela só existe dentro desta função
  54.       float nota;
  55.       do {
  56.             scanf("%f", &nota);
  57.             if(nota < 0 || nota > 10) {
  58.                   printf("Erro, valor deve ser de 0 a 10: ");
  59.             }
  60.       }while(nota < 0 || nota > 10);
  61.       return nota;
  62. }
  63.  
  64. // solicita uma quantidade de faltas e a retorna em seguida
  65. int solicitaFaltas(void) {
  66.       int falt;
  67.       printf("Entre com a quantidade da faltas: ");
  68.       scanf("%d", &falt);
  69.       return falt;
  70. }
  71.  
  72. // calcula a média a partir de duas notas, pontos extras e faltas
  73. // não permitindo que a média ultrapasse de 10
  74. float calculaMedia(float nota1, float nota2, float pontos, int fal) {
  75.       // a variável media tem escopo local, ou seja ela só existe dentro desta função
  76.       float media = (nota1 + nota2)/2 + pontos;
  77.       media = media + bonusMedia(fal);
  78.       // não permite que o retorno seja maior que 10
  79.       if(media > 10)
  80.             return 10;
  81.       else
  82.             return media;
  83. }
  84.  
  85. // calcula os bônus a partir da quantidade de faltas
  86. float bonusMedia(int fal) {
  87.       if(fal == 0)
  88.          return 0.5;
  89.       else
  90.          return 0;
  91. }
  92.  
  93. // exibe os dados de uma aluno passado como argumento
  94. void exibeAluno(struct TipoAluno aluno) {
  95.       printf("\n\nAluno: %s", aluno.nome);
  96.       printf("\nMedia: %.2f", aluno.media);
  97. }
  98.  
  99. // exibe todos os alunos
  100. void exibeTodosAlunos(struct TipoAluno turma[]) {
  101.     int i;
  102.     printf("\n\nExibicao dos dados:");
  103.     for(i=0; i<MAX_ALUNOS; i++)
  104.        exibeAluno(turma[i]);
  105.  
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement