Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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;
};Carregando comentários...