Solución ejercicio en C

Este es tu lugar para hablar de programación, compartir, crear y desarrollar nuevos proyectos

Moderador: Moderadores

Solución ejercicio en C

Notapor u83mm » Sab Abr 04, 2015 3:23 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: Seleccionar todo
#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: Seleccionar todo
if (grade = 'A') || (grade = 'a')
   ++aCount;


y así sucesivamente con cada letra, pero no hay manera. ¿Alguna ayuda?
Nada es como uno se imagina
u83mm
:-)
:-)
 
Mensajes: 44
Registrado: Vie Oct 12, 2007 11:45 am

Re: Solución ejercicio en C

Notapor Newhack » Lun Abr 06, 2015 7:11 pm

Hola.

La muestra que has hecho tu debe ser de un código caro, has puesto poca cantidad. :lol:

Sería bueno que además de la explicación dada detallaras un poco mas cual es el problema que te da y con el que no hay manera,
pero asi como lo pones, mas que un bucle anidado lo que veo yo es un if simple con dos opciones de aceptación,
"si es una 'a' mayuscula o minuscula lo aceptas e incrementas aCount en 1", y asi sucesivamente.
Y ya está, ¿donde le ves la recurrencia, donde le ves el anidado?.

Una posibilidad un poco mas cercana sería un bucle que recircula cualquiera que sea el caracter,
excepto si es EOF, en cuyo caso sales fuera y cuentas los totales.

Dentro de este bucle pones el reconocimiento y cuenta de los 'a' 'b' 'c' ... como el que has mostrado aqui.

Si ninguna de las comparaciones ha resultado cierta entonces has de poner los textos de error (los del
default) y recircular el bucle hacia una nueva toma de caracter y comparación del mismo.


Yo también soy un programador domingero, (solo en vacaciones), pero asi lo enfocaria yo.


Saludos y adelante.
Avatar de Usuario
Newhack
<|:-D
<|:-D
 
Mensajes: 1871
Registrado: Jue Dic 20, 2007 7:36 pm

Re: Solución ejercicio en C

Notapor AnimAlf » Jue Jun 25, 2015 9:01 am

Código: Seleccionar todo
if ( (grade = 'A') || (grade = 'a') )
En busca del TuXeR perdido
Avatar de Usuario
AnimAlf
<|:-)
<|:-)
 
Mensajes: 628
Registrado: Mar Ago 08, 2006 4:54 am
Ubicación: tgn

Re: Solución ejercicio en C

Notapor Arakiss » Dom Jun 28, 2015 7:24 pm

AnimAlf saludos compañero, me alegra volver a leerte por aquí.
//When I wrote this, only God and I understood that I was doing
//Now, God only knows

Imagen

https://petruarakiss.com
Avatar de Usuario
Arakiss
<|:-D
<|:-D
 
Mensajes: 1332
Registrado: Mié Ene 11, 2006 3:41 pm
Ubicación: Madrid

Re: Solución ejercicio en C

Notapor Newhack » Jue Jul 02, 2015 7:36 pm

Si, es verdad, además se dejó un parentesis.

Saludos Animalf, gusto de que hayas vuelto.
Avatar de Usuario
Newhack
<|:-D
<|:-D
 
Mensajes: 1871
Registrado: Jue Dic 20, 2007 7:36 pm


Volver a Programación

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados

cron