Incremente o código do projeto para que este calcule, além da média individual de cada aluno, a média geral da turma.
Olá gostaria da ajuda de vocês, tenho que adicionar essas funções para esse código mas não estou tendo ideia de como fazer, se puderem me ajudar agradeço.
- contar quantos alunos foram processados
- acumular as médias individuais
- quando o processamento terminar, calcular a média geral dividindo-se o acumulado das médias individuais pelo total de alunos processados.
#include <stdio.h>
#include <stdlib.h>
#define TRUE 1
#define FALSE 0
#define bool int
/* Esta função questiona o usuario sobre continuar ou encerrar
* o processamento de notas de alunos
*/
bool promptRepetir() {
printf("Novo aluno? [S|n] ");
char c;
c=fgetc(stdin); // leia 1 caracter
fflush(stdin); // e limpe o buffer
if( c=='s' || c=='S' || c=='\n' ) return TRUE; // repita!
return FALSE; // nao repita!
}
/* Esta função calcula a média simples entre n valores x[i]
* Onde 0 < i < n
*/
float mediaSimplesVetor(int n, float x[]) {
int i;
float media, mediaTotal;
float soma=0.0;
for(i=0; i<n; i++) soma=soma+x[i]; // calcule somatorio de Xi
media=soma/n;
mediaTotal=media/n;
printf("%5.1f",mediaTotal);
return media; // retorne a media
}
/*
* Esta função le e retorna o numero do aluno
* Aceita apenas numeros positivos
*/
int lerNumero() {
int numero=0; // execute ao menos 1 iteração while()
while( numero<1 ) {
printf("Entre com o numero do aluno (positivo): ");
char linha[10]; // linha para leitura dos caracteres do valor
fgets(linha,10,stdin); // leia a linha (entrada do usuario)
fflush(stdin); // limpa o buffer de leitura
numero = atoi(linha); // converte numero em string para int
};
return numero;
}
/*
* Esta função le e retorna a nota i do aluno numAluno
* Aceita apenas notas entre 0.0 e 10.0 inclusive
*/
float lerNota(int numAluno, int i) {
float nota=-1.0; // execute ao menos 1 iteração while()
while( nota<0.0 || nota>10.0 ) {
printf("Aluno %3d, nota %02d: ",numAluno,i);
char linha[10]; // linha para leitura dos caracteres do valor
fgets(linha,10,stdin); // leia a linha (entrada do usuario)
fflush(stdin); // limpa o buffer de leitura
nota = atof(linha); // converte numero em string para float
};
return nota;
};
/ Procedimento para processamento repetitivo de alunos /
float processaAluno() {
int numAluno; // numero do aluno
float notaAluno[4]; // as 4 notas do aluno
float mediaAluno; // media final do aluno
numAluno = lerNumero(); // ler o numero do aluno
int i;
for(i=0; i<4; i++) { // para i de 0 até n-1 faça ...
notaAluno[i] = lerNota(numAluno, i+1); // ler a nota i
};
mediaAluno = mediaSimplesVetor( 4, notaAluno ); // calcula a media simples das 4 notas
printf("\n");
printf("Media do aluno %d = %5.1f\n", numAluno, mediaAluno);
printf("\n");
}
/ Função Principal do programa /
int main(int argc, char *argv[]){
bool repetir; // controle do usuario
int i, n;
do // faça...
{
processaAluno(); // processe notas de um aluno, e em seguida
repetir=promptRepetir(); // pergunte ao usuario se quer repetir (com novo aluno)
}
while(repetir); // ... enquanto usuario solicitar repetição.
printf("\n// Fim do programa. Bye!! //\n");
system("PAUSE");
return 0;
};Discussão (0)
Carregando comentários...