Foros del Web » Programación para mayores de 30 ;) » C/C++ »

problema con switch

Estas en el tema de problema con switch en el foro de C/C++ en Foros del Web. Bueno de momento voy solo a por 2 funciones en C de paso por valor.. y no entiendo el porque no se ejecuta el switch... ...
  #1 (permalink)  
Antiguo 22/04/2010, 01:31
 
Fecha de Ingreso: marzo-2010
Mensajes: 127
Antigüedad: 14 años, 8 meses
Puntos: 2
problema con switch

Bueno de momento voy solo a por 2 funciones en C de paso por valor..

y no entiendo el porque no se ejecuta el switch... porfis necesito de vuestra ayuda .

Código C:
Ver original
  1. /*1.    Programa donde se introducen dos enteros y se visualizará el siguiente menú (en una función a crear):
  2.     1.- Suma
  3.     2.- Diferencia entre 1º y 2º
  4.     3.- Diferencia entre 2º y 1º
  5.     4.- Producto
  6.     5.- División del 1º entre 2º
  7.     6.- División del 2º entre 1º
  8.     7.- Comparar
  9.     8.- Fin del programa.
  10.  
  11. El programa se ejecutará hasta que se introduzca la opción 8.
  12. Las opciones se validarán comprendidas entre 1 y 8, ambos incluidos.
  13. Si la opción introducida es 1, se llamará a una función que retorne el valor de la suma y posteriormente, desde el programa principal, se visualizará dicho valor.
  14. Si la opción introducida es 2, se llamará a una función que retorne el valor de la diferencia del 1º y 2º, posteriormente y desde el programa principal se visualizará dicho valor.
  15. Si la opción introducida es 3, se llamará a una función que retorne el valor de la diferencia del 2º y 1º, posteriormente y desde el programa principal se visualizará dicho valor.
  16. Si la opción introducida es 4, se llamará a una función que retorne el valor del producto y posteriormente, desde el programa principal, se visualizará dicho valor.
  17. Si la opción introducida es 5, se llamará a una función que retorne el valor de la división del 1º entre el 2º y posteriormente, desde el programa principal, se visualizará dicho valor.
  18. Si la opción introducida es 6, se llamará a una función que retorne el valor de la división del 2º entre el 1º y posteriormente, desde el programa principal, se visualizará dicho valor.
  19. Si la opción introducida es 7, se llamará a una función que retorne si son iguales o no y posteriormente, desde el programa principal, se visualizará dicha igualdad o diferencia.
  20. ¿De qué tipos serán los valores retornados por las distintas funciones a crear? (Razona la respuesta).*/
  21. int suma(int,int);//declaracion de prototipo
  22. int resta(int,int);
  23.  
  24. #include<stdio.h>
  25. #include<conio.h>//por gotoxy
  26. void main(void){
  27. int num1,num2,resul=0,op;
  28. //char basura;
  29. printf("Introduce un numero:\n");
  30. scanf("%d",&num1);
  31. printf("Introduce un segundo numero:\n");
  32. scanf("%d",&num2);
  33. do{
  34. printf("****MENU PRINCIPAL********\n");
  35. printf("1.-SUMA.\n");
  36. printf("2.-Resta.\n");
  37. printf("elige la operacion a realizar:\n");
  38. scanf("%d",&op);
  39.  
  40. }while(op<1 || op>3);
  41.  
  42.  
  43. switch(op){
  44.  
  45. case '1':
  46.             resul=suma(num1,num2);
  47.             printf("el resultado es:%d",resul);
  48.  
  49.             break;  //llamada a la funcion recepcionando el entorno
  50. case '2':
  51.             resul=resta(num1,num2);
  52.             printf("el resultado es:%d",resul);
  53.             break;
  54. case '3':
  55.         printf("PRUEBA");
  56.         break;
  57.  
  58. };
  59.  
  60. }
  61. //implementacion de la funcion
  62. int suma(int a,int b){
  63. return a+b;
  64. }
  65. int resta(int a,int b){
  66. return a-b;
  67. }
  #2 (permalink)  
Antiguo 22/04/2010, 05:02
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 16 años, 5 meses
Puntos: 61
Respuesta: problema con switch

op es entero, los case del switch son caracteres
  #3 (permalink)  
Antiguo 22/04/2010, 05:28
 
Fecha de Ingreso: marzo-2010
Mensajes: 127
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: problema con switch

Muchiiiisiiiiimassss gracias Calgary,efectivamente los ' ' son para caracteres.. los quite y ejecuto correctamente ,
  #4 (permalink)  
Antiguo 22/04/2010, 15:18
 
Fecha de Ingreso: marzo-2010
Mensajes: 127
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: problema con switch

Hola,vereis intente culminar el programa pero la opcion de salir no me funciona bien me sale lo de pulsa una tecla para finalizar pero al dar intro me vuelve a pedir los numeros,... como podria modificar mi codifo para que se visualize correctamente?

Código C:
Ver original
  1. /*1.    Programa donde se introducen dos enteros y se visualizará el siguiente menú (en una función a crear):
  2.     1.- Suma
  3.     2.- Diferencia entre 1º y 2º
  4.     3.- Diferencia entre 2º y 1º
  5.     4.- Producto
  6.     5.- División del 1º entre 2º
  7.     6.- División del 2º entre 1º
  8.     7.- Comparar
  9.     8.- Fin del programa.
  10.  
  11. El programa se ejecutará hasta que se introduzca la opción 8.
  12. Las opciones se validarán comprendidas entre 1 y 8, ambos incluidos.
  13. Si la opción introducida es 1, se llamará a una función que retorne el valor de la suma y posteriormente, desde el programa principal, se visualizará dicho valor.
  14. Si la opción introducida es 2, se llamará a una función que retorne el valor de la diferencia del 1º y 2º, posteriormente y desde el programa principal se visualizará dicho valor.
  15. Si la opción introducida es 3, se llamará a una función que retorne el valor de la diferencia del 2º y 1º, posteriormente y desde el programa principal se visualizará dicho valor.
  16. Si la opción introducida es 4, se llamará a una función que retorne el valor del producto y posteriormente, desde el programa principal, se visualizará dicho valor.
  17. Si la opción introducida es 5, se llamará a una función que retorne el valor de la división del 1º entre el 2º y posteriormente, desde el programa principal, se visualizará dicho valor.
  18. Si la opción introducida es 6, se llamará a una función que retorne el valor de la división del 2º entre el 1º y posteriormente, desde el programa principal, se visualizará dicho valor.
  19. Si la opción introducida es 7, se llamará a una función que retorne si son iguales o no y posteriormente, desde el programa principal, se visualizará dicha igualdad o diferencia.
  20. ¿De qué tipos serán los valores retornados por las distintas funciones a crear? (Razona la respuesta).*/
  21. int suma(int,int);//declaracion de prototipo
  22. int resta(int,int);
  23. int producto(int,int);
  24. int division(int,int);
  25. int compara(int,int);
  26. void menu();
  27. void pausa();
  28. #include<stdio.h>
  29. #include<conio.h>//por gotoxy
  30. void main(void){
  31. int num1,num2,resul=0,op;
  32.  menu();
  33.  do{
  34.  do{
  35.  printf("elige la operacion a realizar:\n");
  36.  scanf("%d",&op);
  37.     if(op==8){
  38.     printf("FIN,saliendo del programa...");
  39.     }
  40.   }while(op<1 || op>8);
  41.  
  42. printf("\nIntroduce un numero:\n");
  43. scanf("%d",&num1);
  44.  
  45. printf("Introduce un segundo numero:\n");
  46. scanf("%d",&num2);
  47.  
  48. switch(op){
  49.  
  50. case 1:
  51.             resul=suma(num1,num2);   //llamada a la funcion recepcionando el entorno
  52.             printf("el resultado es:%d",resul);
  53.  
  54.             break;
  55. case 2:
  56.             resul=resta(num1,num2);
  57.             printf("el resultado es:%d\n",resul);
  58.  
  59.             break;
  60. case 3:
  61.             resul=resta(num2,num1);
  62.             printf("El resultado es:%d\n",resul);
  63.  
  64.             break;
  65. case 4:
  66.             resul=producto(num1,num2);
  67.             printf("El resultado es:%d\n",resul);
  68.  
  69.             break;
  70. case 5:
  71.             resul=division(num1,num2);
  72.             printf("El resultado es:%d\n",resul);
  73.  
  74.             break;
  75.  
  76. case 6:
  77.             resul=division(num2,num1);
  78.             printf("El resultado es:%d\n",resul);
  79.  
  80.             break;
  81. case 7:
  82.             resul=compara(num1,num2);
  83.             if(resul==1) printf("\nSON IGUALES\n");
  84.             else printf("SON DISTINTOS\n");
  85.  
  86.  case 8:
  87.             break;
  88.             default: break;
  89. };
  90.  
  91. menu();
  92. }while(op>=1 && op<=7);
  93. }
  94. //implementacion de la funcion
  95. int suma(int a,int b){
  96. return a+b;
  97. }
  98. int resta(int a,int b){
  99. return a-b;
  100. }
  101.  
  102. int producto(int a,int b){
  103. return a*b;
  104. }
  105. int division(int a,int b){
  106. return a/b;
  107. }
  108. int compara(int a,int b){
  109. if(a==b)
  110. return 1;
  111. else
  112. return 0;
  113. }
  114. void pausa(){
  115. char basura;
  116. printf("\nPulsa ENTER para fin..\n");
  117. scanf("%c",&basura);
  118. }
  119.  
  120. void menu(){
  121.  
  122.  
  123.  
  124. printf("****MENU PRINCIPAL********\n");
  125. printf("1.-SUMA.\n");
  126. printf("2.-Resta primer numero menos el segundo\n");
  127. printf("3.-Resta segundo numero menos el primero\n");
  128. printf("4.-Producto de 2 numeros\n");
  129. printf("5.-Division del primero entre el segundo\n");
  130. printf("6.-Division del segundo por el primero\n");
  131. printf("7.-Compara 2 numeros:\n");
  132. printf("8.-Salir\n");
  133.  
  134. }

Etiquetas: switch
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:17.