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 */