Nota média. Modifique o programa da Figura 4.7 de modo que seja possível calcular a nota média da classe.

Passo 1

Fala Galera!!! Tudo certo? Espero que sim!!! Bora para mais um exercício.

Vamos criar um programa que seja capaz de receber as notas de A,B,C,D e F e retornar a média de acordo com a quantidade de notas recebidas. Para cada nota será atribuída um peso. O programa deverá pedir para que o usuário insira as a nota, o programa ficará rodando dentro de um laço de repetição até que o comando EOF seja digitado. O programa deverá fazer o tratamento de erro, caso a nota digita seja minúscula.

Passo 2

Escrevendo o programa:

/* Exercise 4.22 Solution */

#include

int main( void )

{

int grade;

/* nota atual */

int aCount = 0; /* total de notas */

int bCount = 0;

/* notas totais b */

int cCount = 0; /* total notas c */

int dCount = 0; /* total notas d */

int fCount = 0; /* total notas f */

double averageGrade;

/* nota média da turma */

/* solicita notas ao usuário */

printf("Digite as notas das letras.\n");

printf("Digite o caractere EOF para finalizar a entrada.\n");

/* loop enquanto não digita EOF */

while ( ( grade = getchar() ) != EOF ) {

/* determina qual nota foi inserida */

switch ( grade ) {

//tratando os casos

//caso nota digita seja A ou a

case 'A':

case 'a':

//atualiza nota

++aCount;

break;

//tratando os casos

//caso nota digita seja B ou b

case 'B':

case 'b':

++bCount; /* update */

break;

//tratando os casos

//caso nota digita seja C ou c

case 'C':

case 'c':

++cCount; /* update */

break;

//tratando os casos

//caso nota digita seja D ou d

case 'D':

case 'd':

++dCount; /* update */

break;

//tratando os casos

//caso nota digita seja F ou f

case 'F':

case 'f':

++fCount; /* update */

break;

case '\n': /* ignora novas linhas, */

case '\t': /* tabs, */

case ' ': /* e espaços na entrada */

break; /* exit switch */

default: /* pega todos os outros caracteres */

printf(" letra incorreta digitada.");

printf("Digite uma nova nota.\n");

break;

/* opcional, sairá do switch de qualquer maneira */

} /* end switch */

} /* end while */

/* totais de saída para cada nota */

printf("\nOs totais para cada nota de letra sao:\n");

printf( "A: %d\n", aCount );

printf( "B: %d\n", bCount );

printf( "C: %d\n", cCount );

printf( "D: %d\n", dCount );

printf( "F: %d\n", fCount );

/* calcular nota média */

averageGrade =

( 4 * aCount + 3 * bCount + 2 * cCount + dCount ) /

( aCount + bCount + cCount + dCount + fCount );

/* gera mensagem apropriada para nota média */

if ( averageGrade > 3.4 ) {

printf( "A nota e A\n" );

} /* end if */

else if ( averageGrade > 2.4 ) {

printf( "A nota e B\n" );

} /* end else if */

else if ( averageGrade > 1.4 ) {

printf( "A nota e C\n" );

} /* end else if */

else if ( averageGrade > 0.4 ) {

printf( "A nota e D\n" );

} /* end else if */

else {

printf( "A nota e F\n" );

} /* end else */

return 0; /* indicate successful termination */

} /* end main */

O comando EOF no Windows é CTRL + Z

Passo 3

A saída do programa será:

E assim finalizamos o exercício galera!!! Até o próximo.

Resposta

/* Exercise 4.22 Solution */

#include

int main( void )

{

int grade;

/* nota atual */

int aCount = 0; /* total de notas */

int bCount = 0;

/* notas totais b */

int cCount = 0; /* total notas c */

int dCount = 0; /* total notas d */

int fCount = 0; /* total notas f */

double averageGrade;

/* nota média da turma */

/* solicita notas ao usuário */

printf("Digite as notas das letras.\n");

printf("Digite o caractere EOF para finalizar a entrada.\n");

/* loop enquanto não digita EOF */

while ( ( grade = getchar() ) != EOF ) {

/* determina qual nota foi inserida */

switch ( grade ) {

//tratando os casos

//caso nota digita seja A ou a

case 'A':

case 'a':

//atualiza nota

++aCount;

break;

//tratando os casos

//caso nota digita seja B ou b

case 'B':

case 'b':

++bCount; /* update */

break;

//tratando os casos

//caso nota digita seja C ou c

case 'C':

case 'c':

++cCount; /* update */

break;

//tratando os casos

//caso nota digita seja D ou d

case 'D':

case 'd':

++dCount; /* update */

break;

//tratando os casos

//caso nota digita seja F ou f

case 'F':

case 'f':

++fCount; /* update */

break;

case '\n': /* ignora novas linhas, */

case '\t': /* tabs, */

case ' ': /* e espaços na entrada */

break; /* exit switch */

default: /* pega todos os outros caracteres */

printf(" letra incorreta digitada.");

printf("Digite uma nova nota.\n");

break;

/* opcional, sairá do switch de qualquer maneira */

} /* end switch */

} /* end while */

/* totais de saída para cada nota */

printf("\nOs totais para cada nota de letra sao:\n");

printf( "A: %d\n", aCount );

printf( "B: %d\n", bCount );

printf( "C: %d\n", cCount );

printf( "D: %d\n", dCount );

printf( "F: %d\n", fCount );

/* calcular nota média */

averageGrade =

( 4 * aCount + 3 * bCount + 2 * cCount + dCount ) /

( aCount + bCount + cCount + dCount + fCount );

/* gera mensagem apropriada para nota média */

if ( averageGrade > 3.4 ) {

printf( "A nota e A\n" );

} /* end if */

else if ( averageGrade > 2.4 ) {

printf( "A nota e B\n" );

} /* end else if */

else if ( averageGrade > 1.4 ) {

printf( "A nota e C\n" );

} /* end else if */

else if ( averageGrade > 0.4 ) {

printf( "A nota e D\n" );

} /* end else if */

else {

printf( "A nota e F\n" );

} /* end else */

return 0; /* indicate successful termination */

} /* end main */