Ver Mensaje Individual
  #3 (permalink)  
Antiguo 07/11/2012, 18:21
eduardossj
 
Fecha de Ingreso: noviembre-2012
Mensajes: 2
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: ¿Porque no corre mi calculadora en dev c?

una duda cuando pongo eso me saca completamente del programa si quiero regresar al menu? que hago???


Cita:
Iniciado por cotolon Ver Mensaje
Hola, El error de tu programa es este:

respuesta = 1
Ingresas al do while dentro del do te pide la opcion, usuario ingresa 1,2,3 o 4
Te manda al switch si coloco 1 por ej, te manda a la suma
while(respuesta == 1) te entra a la suma, te suma los valores te pide si deseas continuar
(Y aca esta el error) Si colocas que No (respuesta = 2), y entra al while(opcion!=5) por lo tanto repite el do while y si colocas opcion 1 otra vez, no podrás sumar ya que respuesta ya no es 1 es 2. Solo podras colocar 5 para salir. Para arreglar todo esto: arribita del

}
while(opcion!=5)
debes colocar un if (respuesta == 2) return 0; para cerrar el programa de main()
En resumen así te queda el código:

Código C++:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4.  
  5. int main(void)
  6. {
  7. int opcion=0,respuesta=1;
  8. float numero1,numero2,suma,resta,multiplicacion,division ;
  9. do
  10. {
  11. printf("%cQue desea realizar?",168);
  12. printf("\n\n\t1.SUMA");
  13. printf("\n\n\t2.RESTA");
  14. printf("\n\n\t3.MULTIPLICACION");
  15. printf("\n\n\t4.DIVISION");
  16. printf("\n\n\t5.SALIR");
  17. printf("\n\n\nIngresa la opcion: ");
  18. scanf("%d", &opcion);
  19. system("cls");
  20. switch(opcion)
  21. {
  22. case 1:
  23. {
  24. while (respuesta==1)
  25. {
  26. printf("\nAQUI SE REALIZA LA SUMA");
  27. printf("\n\n-> Ingresa el primer digito que desea sumar: \t");
  28. scanf("%f", &numero1);
  29. printf("\n-> Ingresa el segundo digito que desea sumar: \t");
  30. scanf("%f", &numero2);
  31. suma=numero1+numero2;
  32. printf("\n\n* El resultado de la suma de: \t%.1f + %.1f = %.1f",numero1,numero2,suma);
  33. printf("\n\n*%cDesea realizar otra suma? 1) Si 2) No \n\n",168);
  34. scanf("%d", &respuesta);
  35. system ("cls");
  36. }
  37. break;
  38. }
  39. case 2:
  40. {
  41. while (respuesta==1)
  42. {
  43. printf("\nAQUI SE REALIZA LA RESTA");
  44. printf("\n\n-> Ingresa el primer digito que desea restar: \t");
  45. scanf("%f", &numero1);
  46. printf("\n-> Ingresa el segundo digito que desea restar: \t");
  47. scanf("%f", &numero2);
  48. resta=numero1-numero2;
  49. printf("\n\n* El resultado de la resta de: \t%.1f - %.1f = %.1f",numero1,numero2,resta);
  50. printf("\n\n*%cDesea realizar otra resta? 1)SI 2)NO\n\n",168);
  51. scanf("%d", &respuesta);
  52. system ("cls");
  53. }
  54. break;
  55. }
  56. case 3:
  57. {
  58. while (respuesta==1)
  59. {
  60. printf("\nAQUI SE REALIZA LA MULTIPLICACION");
  61. printf("\n\n-> Ingresa el primer digito que desea multiplicar: \t");
  62. scanf("%f", &numero1);
  63. printf("\n-> Ingresa el segundo digito que desea multiplicar: \t");
  64. scanf("%f", &numero2);
  65. multiplicacion=numero1*numero2;
  66. printf("\n\n* El resultado de la multiplicacion de: \t%.1f * %.1f = %.1f",numero1,numero2,multiplicacion);
  67. printf("\n\n*%cDesea realizar otra multiplicacion? 1)SI 2)NO\n\n",168);
  68. scanf("%d", &respuesta);
  69. system ("cls");
  70. }
  71. break;
  72. }
  73. case 4:
  74. {
  75. while (respuesta==1)
  76. {
  77. printf("\nAQUI SE REALIZA LA DIVISION");
  78. printf("\n\n-> Ingresa el primer digito que desea dividir: \t\t");
  79. scanf("%f", &numero1);
  80. printf("\n-> Ingresa el segundo digito que desea dividir: \t");
  81. scanf("%f", &numero2);
  82. if (numero2==0 || numero1==0 && numero2==0)
  83. printf("\n\n* El resultado de la division de: \t%.1f %c %.1f es una 'Indeterminacion'",numero1,246,numero2);
  84. else
  85. {
  86. division=numero1/numero2;
  87. printf("\n\n* El resultado de la division de: \t%.1f %c %.1f = %.1f",numero1,246,numero2,division);
  88. }
  89. printf("\n\n*%cDesea realizar otra division? 1)SI 2)NO\n\n",168);
  90. scanf("%d", &respuesta);
  91. system("cls");
  92. }
  93. break;
  94. }
  95. case 5:
  96. {
  97. printf("\nHasta pronto %c",1);
  98. exit(0);
  99. break;
  100. }
  101. default:
  102. printf("\nOpcion no valida. Intente de nuevo \n\n");
  103. }
  104.  
  105. if (respuesta == 2) return 0;
  106.  
  107. }
  108. while (opcion !=5);
  109. return 0;
  110. }