Buscar

PIM IV codigo fonte 2.2 FINAL código

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

#include <stdio.h>
#include <stdlib.h>
typedef struct{
 char nome[100];
 int matricula;
 float p[5], media; //p[5] será o vetor com as notas dos alunos.
} cadastro;
// aqui estou definindo uma struct que terá os dados de cada aluno.
float calcMed (float a, float b, float c, float d); //essa é a função q calculará a nota dos alunos
int main()
{
 int numAlunos;
 printf("Digite o numero de alunos: ");
 scanf("%d", &numAlunos);
 //aqui estou perguntando o número de aluno para alocar mémoria para armazenar as notas.
 cadastro *turma;//crio um ponteiro "turma" do tipo cadastro para colocar informações dos alunos.
 turma = (cadastro*) malloc(numAlunos * sizeof(cadastro));
 if (turma == NULL){
 printf("Error 404 - sem memoria.");
 exit(0);
 }
 //aqui estamos alocando memória para o número de alunos da turma.
 int i, k; //adicionando variável de contagem.
 for(i = 0; i != numAlunos; i++){
 printf("\nDigite o nome do aluno %d: ", i+1); //aqui solicito o nome do aluno
 fflush(stdin);
 gets(turma[i].nome);
 printf("Digite a matricula do aluno %s: ", turma[i].nome);//aqui será coletada a matricula do aluno acima
 scanf("%d", &turma[i].matricula);
 for(k = 1; k != 5; k++){ //observe q a contagem começa na posição 1, pois a posição 0 será da prova substutiva!
 printf("Digite a nota da prova %d do aluno %s: ", k, turma[i].nome);//nesse 'for' será coletada todas as notas do aluno
 scanf("%f", &turma[i].p[k]);
 }
 printf("Digite a nota da prova substutiva do aluno %s: ", turma[i].nome);//aqui peço ao professor que digite a nota da prova substutiva do aluno
 scanf("%f", &turma[i].p[0]);
 if ((turma[i].p[1] < turma[i].p[2]) && (turma[i].p[1] < turma[i].p[3]) && (turma[i].p[1] < turma[i].p[4]))
 turma[i].p[1] = turma[i].p[0]; //aqui verifico se a p[1] é a menor nota, se for troco o valor dela pela substitutiva.
 else if ((turma[i].p[2] < turma[i].p[1]) && (turma[i].p[2] < turma[i].p[3]) && (turma[i].p[2] < turma[i].p[4]))
 turma[i].p[2] = turma[i].p[0]; //aqui verifico se a p[2] é a menor nota, se for troco o valor dela pela substitutiva
 else if ((turma[i].p[3] < turma[i].p[1]) && (turma[i].p[3] < turma[i].p[2]) && (turma[i].p[3] < turma[i].p[4]))
 turma[i].p[3] = turma[i].p[0]; //aqui verifico se a p[3] é a menor nota, se for troco o valor dela pela substitutiva
 else if ((turma[i].p[4] < turma[i].p[1]) && (turma[i].p[4] < turma[i].p[2]) && (turma[i].p[4] < turma[i].p[3]))
 turma[i].p[4] = turma[i].p[0]; //aqui verifico se a p[4] é a menor nota, se for troco o valor dela pela substitutiva
 turma[i].media = calcMed(turma[i].p[1], turma[i].p[2], turma[i].p[3], turma[i].p[4]);
 //chamando a fução média para calcular a média da notas do aluno.
 }
 //agora faremos o relatório de desempenho dos aulos da turma.
 int m, n; //variável de contagem.
 float somaNotas = 0; //será somado as notas para fazer a média da turma.
 printf("\n\nRelatorio de Desempenho\n");
 printf("Nome \t Media \t Prova Subst. \t Prova 1 \t Prova 2 \t Prova 3 \t Prova 4 \t Situacao\n");
 for (m = 0; m != numAlunos; m++){
 printf("%s \t %.2f ", turma[m].nome, turma[m].media);
 for(n = 0; n != 5; n++){
 printf("\t %f", turma[m].p[n]);
 }
 if (turma[m].media < 5)
 printf("\t REPROVADO");
 else
 printf("\t APROVADO");
 printf("\n");
 somaNotas += turma[m].media;// esse printf mostra na tela o nome do aluno e suas notas e medédia
 }
 printf("\nA media da turma foi: %.2f\n\n", somaNotas/numAlunos);
 //aqui é calculado a média da turma e mostrada na tela.
 free(turma); //limpando a memoria que foi alocada para armazenar os dados dos alunos
 system("PAUSE");
 return 0;
}
float calcMed (float a, float b, float c, float d){
 float med;
 med = (a + 2*b + 3*c + 4*d)/10;
 //aqui calcul-se a média e retorna ela para a main.
 return med;
}

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais