elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  TENGO PROBLEMAS CON 'SWITCH' EN UN EJERCICIO
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: TENGO PROBLEMAS CON 'SWITCH' EN UN EJERCICIO  (Leído 2,979 veces)
BARIS514

Desconectado Desconectado

Mensajes: 5


Ver Perfil
TENGO PROBLEMAS CON 'SWITCH' EN UN EJERCICIO
« en: 4 Marzo 2020, 04:35 am »

AQUI EL EJERCICIO
Código
  1. /*Figura 4.7: fig04_07.c
  2.  cuenta las calificaciones expresadas en letras */
  3. #include<stdio.h>
  4.  
  5. /*la funcion main comienza la ejecucion del programa*/
  6. int main()
  7. {
  8. int cali;
  9. int cuentaA = 0;
  10. int cuentaB = 0;
  11. int cuentaC = 0;
  12. int cuentaD = 0;
  13. int cuentaF = 0;
  14.  
  15. printf( "Introduzca la letra que corresponde a la calificacion \n" );
  16. printf("Introduzca el caracter EOF para finalizar la entrada de datos. \n");
  17.  
  18. /* repite hasta que el usuario digita la secuencia de teclas de fin
  19. de archivo*/
  20. while ( ( cali = getchar( ) ) != EOF ) {
  21. /*determina cual calificacion se introdujo*/
  22. switch (cali) { /*switch anidado dentro del while */
  23.  
  24. case 'A':
  25. case 'a':
  26. ++cuentaA;
  27. break;
  28.  
  29. case 'B':
  30. case 'b':
  31. ++cuentaB;
  32. break;
  33.  
  34. case 'C':
  35. case 'c':
  36. ++cuentaC;
  37. break;
  38.  
  39. case 'D':
  40. case 'd':
  41. ++cuentaD;
  42. break;
  43.  
  44. case 'F':
  45. case 'f':
  46. ++cuentaF;
  47. break;
  48.  
  49. case '\n':
  50. case '\t':
  51. case ' ':
  52. break;
  53.  
  54. default:
  55. printf("Introdujo una letra incorrecta.");
  56. printf(" Introduzca una nueva calificacion \n");
  57.        break;
  58. }
  59.  
  60. }
  61.  
  62.  
  63. printf("\nLos totales por calificacion son: \n");
  64. printf("A: %d\n", cuentaA);
  65. printf("B: %d\n", cuentaB);
  66. printf("C: %d\n", cuentaC);
  67. printf("D: %d\n", cuentaD);
  68. printf("F: %d\n", cuentaF);
  69.  
  70. return 0;
  71.  
  72. }
  73.  
  74.  




QUISIERA SABER PORQUE NO SALEN LOS PRINTF QUE SE MUESTRAN AL FINALIZAR EL WHILE Y EL SWITCH


« Última modificación: 4 Marzo 2020, 22:45 pm por simorg » En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.067



Ver Perfil
Re: TENGO PROBLEMAS CON 'SWITCH' EN UN EJERCICIO
« Respuesta #1 en: 4 Marzo 2020, 16:37 pm »

Saludos,

- Que error te manda, porque yo no tengo problemas. Recuerda que el Caracter EOF en Windows es ^Z (Ctrl + Z o F6) y en Linux es ^D (Ctrl + D):

Citar
C:\Users\EdSon\CLionProjects\untitled\Debug>main.exe
Introduzca la letra que corresponde a la calificacion
Introduzca el caracter EOF para finalizar la entrada de datos.
abcabcaaa
^Z


Los totales por calificacion son:
A: 5
B: 2
C: 2
D: 0
F: 0

C:\Users\EdSon\CLionProjects\untitled\Debug>main.exe
Introduzca la letra que corresponde a la calificacion
Introduzca el caracter EOF para finalizar la entrada de datos.
a
a
b
b
b
^Z


Los totales por calificacion son:
A: 2
B: 3
C: 0
D: 0
F: 0

C:\Users\EdSon\CLionProjects\untitled\Debug>

-- Si estás presionando ^C (Ctrl + C) esto provoca una excepción y finaliza tu programa antes de (terminar de) imprimir tus "totales". El caracter EOF debería de ir solo en una nueva línea.


En línea

@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.397


Turn off the red ligth


Ver Perfil WWW
Re: TENGO PROBLEMAS CON 'SWITCH' EN UN EJERCICIO
« Respuesta #2 en: 5 Marzo 2020, 02:48 am »

AQUI EL EJERCICIO
Código
  1. /*Figura 4.7: fig04_07.c
  2.  cuenta las calificaciones expresadas en letras */
  3. #include<stdio.h>
  4.  
  5. /*la funcion main comienza la ejecucion del programa*/
  6. int main()
  7. {
  8. int cali;
  9. int cuentaA = 0;
  10. int cuentaB = 0;
  11. int cuentaC = 0;
  12. int cuentaD = 0;
  13. int cuentaF = 0;
  14.  
  15. printf( "Introduzca la letra que corresponde a la calificacion \n" );
  16. printf("Introduzca el caracter EOF para finalizar la entrada de datos. \n");
  17.  
  18. /* repite hasta que el usuario digita la secuencia de teclas de fin
  19. de archivo*/
  20. while ( ( cali = getchar( ) ) != EOF ) {
  21. /*determina cual calificacion se introdujo*/
  22. switch (cali) { /*switch anidado dentro del while */
  23.  
  24. case 'A':
  25. case 'a':
  26. ++cuentaA;
  27. break;
  28.  
  29. case 'B':
  30. case 'b':
  31. ++cuentaB;
  32. break;
  33.  
  34. case 'C':
  35. case 'c':
  36. ++cuentaC;
  37. break;
  38.  
  39. case 'D':
  40. case 'd':
  41. ++cuentaD;
  42. break;
  43.  
  44. case 'F':
  45. case 'f':
  46. ++cuentaF;
  47. break;
  48.  
  49. case '\n':
  50. case '\t':
  51. case ' ':
  52. break;
  53.  
  54. default:
  55. printf("Introdujo una letra incorrecta.");
  56. printf(" Introduzca una nueva calificacion \n");
  57.        break;
  58. }
  59.  
  60. }
  61.  
  62.  
  63. printf("\nLos totales por calificacion son: \n");
  64. printf("A: %d\n", cuentaA);
  65. printf("B: %d\n", cuentaB);
  66. printf("C: %d\n", cuentaC);
  67. printf("D: %d\n", cuentaD);
  68. printf("F: %d\n", cuentaF);
  69.  
  70. return 0;
  71.  
  72. }
  73.  
  74.  




QUISIERA SABER PORQUE NO SALEN LOS PRINTF QUE SE MUESTRAN AL FINALIZAR EL WHILE Y EL SWITCH
Necesitas añadir una pausa al código antes del return 0;
Código
  1. #include <window.h>
  2.  
  3. ...
  4. system("pause");
  5. return 0;
  6. }

Según el IDE que utilices, algunos al compilar y ejecutar te añaden la pausa automáticamente mientras usas el IDE y otros no.
Aunque te añadiesen la pausa auto, solo funciona en la ejecución del IDE. Si ejecutad directamente el .exe generado, la pausa no va. Por eso debes añadirla siempre al código.

Pd: El case ' ': yo no me fió mucho de funcione en todos los entornos, yo lo escaparía. case '\ ':
Creo que case '\b' también es válido, pero tampoco me fío mucho xD
« Última modificación: 5 Marzo 2020, 02:51 am por @XSStringManolo » En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

BARIS514

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: TENGO PROBLEMAS CON 'SWITCH' EN UN EJERCICIO
« Respuesta #3 en: 5 Marzo 2020, 03:09 am »

Me funcionaron todas las soluciones de verdad muchas gracias por sus respuestas   :D
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Tengo un fallo en el siguiente ejercicio
Programación C/C++
juni85 4 2,711 Último mensaje 8 Junio 2010, 08:19 am
por juni85
Tengo un problema con un ejercicio
Programación Visual Basic
Senior++ 5 2,635 Último mensaje 18 Junio 2011, 18:49 pm
por Senior++
Amigos puedo crear switch cases asi, por que tengo unos errores y no tengo ideas
Programación C/C++
Alejandro1195 1 2,047 Último mensaje 18 Junio 2015, 11:40 am
por Alejandro1195
Problemas con switch
Redes
^^ÂnGeL^^ 1 1,521 Último mensaje 7 Agosto 2017, 17:48 pm
por AlbertoBSD
tengo un ejercicio que no se como resolverlo
Programación C/C++
tiburon 1 1,598 Último mensaje 15 Octubre 2019, 23:53 pm
por K-YreX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines