Advertisement
hmcristovao

lista07_exerc01

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