Título: ayuda intercambiando switch por if-else Publicado por: ++c en 14 Mayo 2014, 22:03 pm Hola amigos que tal,
estoy intentando de intercambiar la sentencia switch por un if-else anidado y mi problema viene acarreado a la hora de que cada vez se ejecuta una sentencia se ejecuta igualmente el último else mostrando: Código
Donde supuestamente es el default de la antigua estructura switch por la que estoy intercambiando por este if-else anidado. Les adjunto el código. Código
Y claro me gustaría como tratar este supuesto caso default pero adaptado a if-else.. sin que me arroje en cada petición de introducción de carácter lo que les indico.. Muchas gracias Título: Re: ayuda intercambiando switch por if-else Publicado por: MeCraniDOS en 14 Mayo 2014, 23:07 pm Código
Lo primero que veo es que declaras calificación como un entero, y luego lo comparas como un carácter :silbar: Si no quieres cambiar esa declaración, puedes dejarlo así Código
Si te fijas he añadido un getchar() para que se coma el intro, tal y como lo tienes puesto, cuando introduces un caracter, por ejemplo la 'a', en el buffer se queda algo como 'a\n', ya que \n es el salto de linea, por lo que incrementaria cuentaA y luego verias el error del caracter incorrecto, al poner el getchar, lo que haces es calificacion = (int)a; y el siguiente getchar, se traga el \n ;-) Saludos Título: Re: ayuda intercambiando switch por if-else Publicado por: rir3760 en 15 Mayo 2014, 04:39 am estoy intentando de intercambiar la sentencia switch por un if-else anidado y mi problema viene acarreado a la hora de que cada vez se ejecuta una sentencia se ejecuta igualmente el último else Como ya te indico MeCraniDOS el problema que tienes es un error logico: al introducir la calificacion seguida de un avance de linea este lo procesas y por supuesto se considerara una entrada no valida. Soluciones hay varias: descartar el resto de la linea mediante un bucle, leer el caracter con scanf utilizando el especificador " %c", etc..Código Lo primero que veo es que declaras calificación como un entero, y luego lo comparas como un carácter Un saludo Título: Re: ayuda intercambiando switch por if-else Publicado por: ++c en 15 Mayo 2014, 22:03 pm Hola gracias por los sabios consejos, he aprendido con sus explicaciones varias formas para solventar este problema.
No caía en ese salto de línea que me producía el que se tragara el último else... Me gustaría conocer para futuros problemas como o que medios usan para corregir o detectar errores, he visto uso de debugger o imprimir por pantalla lo que deseo ver si se ejecuta adecuadamente... no se si voy bien encaminado.... Me despido agradeciendo de nuevo su ayuda. Saludos |