Reginaldojs

exercicio 6,ista 7

Nov 6th, 2012
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.13 KB | None | 0 0
  1. /* Desenvolva um programa para permitir o cadastro de 50 alunos. Cada aluno deve ser representado
  2. por uma estrutura formada por uma matrícula (exatamente 5 caracteres contendo letras e números), um
  3. nome (máximo de 40 caracteres) e um histórico de notas. O histórico de notas, que também deve ser
  4. representado por uma estrutura, é composto de duas notas de provas, uma nota de trabalho e uma nota
  5. de pontuação extra.
  6. Elabore uma função para calcular e retornar a média das notas. Esta média é calculada somando-se as
  7. quatro notas e dividindo-se por três. Se o resultado for superior a 10 deve-se retornar 10.
  8. Exiba todas as informações cadastradas e a média das notas de cada aluno. Além disto, calcule e exiba
  9. a quantidade de alunos cuja média foi de 7 a 10, e exiba a maior média dos 50 alunos.
  10. Obs.:
  11.   não permita digitação de notas fora da faixa de 0 a 10;
  12.   sempre que possível reaproveite o código através da modularização;
  13.   escreva o protótipo da função que calcula a média;
  14.   use somente variáveis locais para resolver este problema.*/
  15. #include<stdio.h>
  16. #include<stdlib.h>
  17. struct cadastro{
  18.        char nome[40];
  19.        char matricula[5];
  20.        float historico;
  21.        float media;
  22.        };
  23. float digitaNota(void){
  24.        float nota;
  25.        do{
  26.                       scanf("%f",&nota);
  27.                       if(nota<0 || nota>10)
  28.                       printf("erro:digite outra nota:");
  29.        }while (nota<0 || nota>10);
  30.        return nota;
  31.  }
  32. float calculaMedia(float p1,float p2,float t1,float ponto){
  33.       float novamedia;
  34.       float qtd;
  35.       novamedia=(p1+p2+t1+ponto)/3;
  36.       if(novamedia>10)
  37.           return 10;
  38.       return novamedia;
  39.  }
  40.  float exibenomemedia(struct cadastro turma){
  41.        printf("Aluno->%s  ",turma.nome);
  42.        printf("media->%.3f\n",turma.media);
  43.  }  
  44. int main(){
  45.     struct cadastro turma[50];
  46.     int i,qtd,x;
  47.     float p1,p2,t1,ponto;
  48.     for(i=0;i<2;i++){
  49.                      printf("digite o nome do aluno:");
  50.                      fflush(stdin);
  51.                      gets(turma[i].nome);
  52.                      printf("digite a matricula:");
  53.                      scanf("%s",&turma[i].matricula);
  54.                      printf("digite a nota da primeira prova:");
  55.                      p1=digitaNota();
  56.                      printf("digite a nota da segunda prova:");
  57.                      p2=digitaNota();
  58.                      printf("digite a nota do trabalho:");
  59.                      t1=digitaNota();
  60.                      printf("entre com o ponto extra:");
  61.                      ponto=digitaNota();
  62.                      for(x=0;x<2;x++){
  63.                        if(turma[i].media>7 || turma[i].media<10)
  64.                        qtd++;
  65.                      }
  66.                      turma[i].media= calculaMedia(p1,p2,t1,ponto);
  67.     }
  68.     printf("temos %.0d alunos com media entre 7 e 10!\n",qtd);
  69.     printf("\n\n\nexibição dos nomes e medias:\n");
  70.     for(i=0;i<2;i++){
  71.                    exibenomemedia(turma[i]);
  72.                      }
  73.     printf("\n\n");
  74.     system ("pause");
  75.     return 0;
  76. }
Advertisement
Add Comment
Please, Sign In to add comment