Solución ejercicio en C

Iniciado por jaruma, 5 Abril 2015, 14:14 PM

0 Miembros y 1 Visitante están viendo este tema.

jaruma

Buenas tardes, hace mucho que no entraba por el foro, ya que había dejado de lado el tema de la programación y otra vez me he puesto a enredar con C.

Bueno, al grano...
Hay un ejercicio del libro "Como programar en C-C++" de Deitel cuyo código es el siguiente:


    #include <stdio.h>

    main()
    {
       int grade;
       int aCount = 0, bCount = 0, cCount, dCount = 0, fCount = 0;

       printf("Enter the letters grade.\n");
       printf("Enter the EOF character to end imput .\n");

       while ( ( grade = getchar () ) != EOF) {
          switch (grade){
             case 'A': case 'a':
                ++aCount;
                break;
             
             case 'B': case 'b':
                ++bCount;
                break;

             case 'C': case 'c':
                ++cCount;
                break;

             case 'D': case 'd':
                ++dCount;
                break;

             case 'F': case 'f':
                ++fCount;
                break;

             case '\n': case ' ':
             break;

             default:
                printf("Incorrect letter grade entered.");
                printf(" Enter a new grade.\n");
                break;
          }
       }
       printf("\nTotals for each letter grade are: \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;
    }


El ejercicio en cuestión me propone que vuelva a escribir el código, pero en vez de usando el enunciado "switch", que lo reemplace por un enunciado "if/else" anidado.

Yo he intentado escribirlo utilizando código del tipo:


if (grade = 'A') || (grade = 'a')
   ++aCount;


y así sucesivamente con cada letra, pero no hay manera. ¿Alguna ayuda?

Gracias
Nada es como uno se lo imagina

ivancea96

If(grade=='a' || grade=='A')
    ++aCount
else if(.....)

Gunhack

Cita de: ivancea96 en  5 Abril 2015, 14:22 PM
If(grade=='a' || grade=='A')
    ++aCount
else if(.....)

Exacto,  debes hacerlo así, sólo que no te recomiendo ese libro para empezar de nuevo a programar, en lo particular pienso que su forma de enseñar es muy enredada  :xD busca "Aprendiendo C en 21 días" te cambiará la vida  ::) o si es que tienes la posibilidad de comprar "PROGRAMACIÓN EN C /C++ JAVA Y UML." De Luis Joyanes Aguilar / Ignacio Zahonero Martinez igual es muy bueno para los demás lenguajes y reafirmar el C.
Saludos!   ;D

jaruma

Muchas gracias a los dos por la rápida respuesta :). En cuanto a los libros que recomiendas, los voy a buscar.
Nada es como uno se lo imagina

eferion

aunque esté respondida la respuesta, matizo.

El tema del if es que toda la condición ha de estar encerrada por un paréntesis... pero eso no impide que puedas usar paréntesis internos para organizar el código correctamente. Lo siguiente también sería válido:

If((grade=='a') || (grade=='A'))

Un saludo.