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