Substituindo switch por if…else. Reescreva o programa da Figura 4.7 substituindo a estrutura switch pela estrutura if...else aninhada; tenha o cuidado de tratar do caso default corretamente. Depois, reescreva essa nova versão substituindo a estrutura if...else aninhada por uma série de estruturas if; aqui, também tenha o cuidado de lidar com o caso default corretamente (isso é mais difícil do que na versão do if...else aninhado). Esse exercício demonstra que switch é uma conveniência, e que qualquer estrutura switch pode ser escrita apenas com instruções de seleção única.
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 à quantidade notas que foram recebidas. 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 digitada seja minúscula. O exercício pede para que o código seja escrito sempre utilizando a estrutura if...else, ao invés de usar swicth para o tratamento dos casos.
Passo 2
Escrevendo o programa:
#include
int main( void )
{
int grade;
/* nota atual */
int aCount = 0;
/* notas totais A */
int bCount = 0;
/* notas totais B */
int cCount = 0;
/* notas totais C */
int dCount = 0;
/* notas D totais */
int fCount = 0;
/* notas totais F */
/* solicita notas ao usuário */
printf("Digite as notas das letras.");
printf("\nDigite o caractere EOF para finalizar a entrada:\n");
/* enquanto EOF não foi inserido pelo usuário */
while ( ( grade = getchar() ) != EOF ) {
/* Atualiza a contagem para a nota apropriada */
if ( grade == 'A' || grade == 'a' ) {
++aCount;
} /* end if */
else if ( grade == 'B' || grade == 'b' ) {
++bCount;
} /* end else if */
else if ( grade == 'C' || grade == 'c' ) {
++cCount;
} /* end else if */
else if ( grade == 'D' || grade == 'd' ) {
++dCount;
} /* end else if */
else if ( grade == 'F' || grade == 'f' ) {
++fCount;
} /* end else if */
else if ( grade == '\n' || grade == ' ' ) {
;
/* corpo vazio */
} /* end else if */
else {
printf("Nota de letra incorreta digitada.");
printf("\nDigite uma nova nota.\n");
} /* end else */
} /* end while */
/* exibe os totais de cada nota */
printf("\nTotais para cada nota de letra foram:\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 );
return 0; /* indicate successful termination */
} /* end main */
Passo 3
A saída será:
E assim finalizamos o exercício galera!!! Até o próximo.
Resposta
#include
int main( void )
{
int grade;
/* nota atual */
int aCount = 0;
/* notas totais A */
int bCount = 0;
/* notas totais B */
int cCount = 0;
/* notas totais C */
int dCount = 0;
/* notas D totais */
int fCount = 0;
/* notas totais F */
/* solicita notas ao usuário */
printf("Digite as notas das letras.");
printf("\nDigite o caractere EOF para finalizar a entrada:\n");
/* enquanto EOF não foi inserido pelo usuário */
while ( ( grade = getchar() ) != EOF ) {
/* Atualiza a contagem para a nota apropriada */
if ( grade == 'A' || grade == 'a' ) {
++aCount;
} /* end if */
else if ( grade == 'B' || grade == 'b' ) {
++bCount;
} /* end else if */
else if ( grade == 'C' || grade == 'c' ) {
++cCount;
} /* end else if */
else if ( grade == 'D' || grade == 'd' ) {
++dCount;
} /* end else if */
else if ( grade == 'F' || grade == 'f' ) {
++fCount;
} /* end else if */
else if ( grade == '\n' || grade == ' ' ) {
;
/* corpo vazio */
} /* end else if */
else {
printf("Nota de letra incorreta digitada.");
printf("\nDigite uma nova nota.\n");
} /* end else */
} /* end while */
/* exibe os totais de cada nota */
printf("\nTotais para cada nota de letra foram:\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 );
return 0; /* indicate successful termination */
} /* end main */