Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: jaruma en 5 Abril 2015, 14:14 pm



Título: Solución ejercicio en C
Publicado por: jaruma en 5 Abril 2015, 14:14 pm
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:

Código:
    #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:

Código:
if (grade = 'A') || (grade = 'a')
   ++aCount;

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

Gracias


Título: Re:
Publicado por: ivancea96 en 5 Abril 2015, 14:22 pm
If(grade=='a' || grade=='A')
    ++aCount
else if(.....)


Título: Re:
Publicado por: Gunhack en 5 Abril 2015, 17:34 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


Título: Re: Solución ejercicio en C
Publicado por: jaruma en 6 Abril 2015, 14:42 pm
Muchas gracias a los dos por la rápida respuesta :). En cuanto a los libros que recomiendas, los voy a buscar.


Título: Re: Solución ejercicio en C
Publicado por: eferion en 6 Abril 2015, 14:55 pm
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:

Código
  1. If((grade=='a') || (grade=='A'))

Un saludo.