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

¿Porque no corre mi calculadora en dev c?

Estas en el tema de ¿Porque no corre mi calculadora en dev c? en el foro de C/C++ en Foros del Web. tengo un problema con mi calculadora se supone que entra a un menu y si quieres hacer suma o cualquier otra operacion te pide 2 ...
  #1 (permalink)  
Antiguo 07/11/2012, 17:57
 
Fecha de Ingreso: noviembre-2012
Mensajes: 2
Antigüedad: 12 años
Puntos: 0
Pregunta ¿Porque no corre mi calculadora en dev c?

tengo un problema con mi calculadora se supone que entra a un menu y si quieres hacer suma o cualquier otra operacion te pide 2 numeros y si quieres volver a hacer la operacion te dice si quieres o no pero despues que le pongo que no me saca al menu y si trato de escoger otra opcion no me deja =S

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int main(void)
{
int opcion=0,respuesta=1;
float numero1,numero2,suma,resta,multiplicacion,division ;
do
{
printf("%cQue desea realizar?",168);
printf("\n\n\t1.SUMA");
printf("\n\n\t2.RESTA");
printf("\n\n\t3.MULTIPLICACION");
printf("\n\n\t4.DIVISION");
printf("\n\n\t5.SALIR");
printf("\n\n\nIngresa la opcion: ");
scanf("%d", &opcion);
system("cls");
switch(opcion)
{
case 1:
{
while (respuesta==1)
{
printf("\nAQUI SE REALIZA LA SUMA");
printf("\n\n-> Ingresa el primer digito que desea sumar: \t");
scanf("%f", &numero1);
printf("\n-> Ingresa el segundo digito que desea sumar: \t");
scanf("%f", &numero2);
suma=numero1+numero2;
printf("\n\n* El resultado de la suma de: \t%.1f + %.1f = %.1f",numero1,numero2,suma);
printf("\n\n*%cDesea realizar otra suma? 1) Si 2) No \n\n",168);
scanf("%d", &respuesta);
system ("cls");
}
break;
}
case 2:
{
while (respuesta==1)
{
printf("\nAQUI SE REALIZA LA RESTA");
printf("\n\n-> Ingresa el primer digito que desea restar: \t");
scanf("%f", &numero1);
printf("\n-> Ingresa el segundo digito que desea restar: \t");
scanf("%f", &numero2);
resta=numero1-numero2;
printf("\n\n* El resultado de la resta de: \t%.1f - %.1f = %.1f",numero1,numero2,resta);
printf("\n\n*%cDesea realizar otra resta? 1)SI 2)NO\n\n",168);
scanf("%d", &respuesta);
system ("cls");
}
break;
}
case 3:
{
while (respuesta==1)
{
printf("\nAQUI SE REALIZA LA MULTIPLICACION");
printf("\n\n-> Ingresa el primer digito que desea multiplicar: \t");
scanf("%f", &numero1);
printf("\n-> Ingresa el segundo digito que desea multiplicar: \t");
scanf("%f", &numero2);
multiplicacion=numero1*numero2;
printf("\n\n* El resultado de la multiplicacion de: \t%.1f * %.1f = %.1f",numero1,numero2,multiplicacion);
printf("\n\n*%cDesea realizar otra multiplicacion? 1)SI 2)NO\n\n",168);
scanf("%d", &respuesta);
system ("cls");
}
break;
}
case 4:
{
while (respuesta==1)
{
printf("\nAQUI SE REALIZA LA DIVISION");
printf("\n\n-> Ingresa el primer digito que desea dividir: \t\t");
scanf("%f", &numero1);
printf("\n-> Ingresa el segundo digito que desea dividir: \t");
scanf("%f", &numero2);
if (numero2==0 || numero1==0 && numero2==0)
printf("\n\n* El resultado de la division de: \t%.1f %c %.1f es una 'Indeterminacion'",numero1,246,numero2);
else
{
division=numero1/numero2;
printf("\n\n* El resultado de la division de: \t%.1f %c %.1f = %.1f",numero1,246,numero2,division);
}
printf("\n\n*%cDesea realizar otra division? 1)SI 2)NO\n\n",168);
scanf("%d", &respuesta);
system("cls");
}
break;
}
case 5:
{
printf("\nHasta pronto %c",1);
getchar();
getchar();
exit(0);
break;
}
default:
printf("\nOpcion no valida. Intente de nuevo \n\n");
}
}
while (opcion !=5);
getchar();
getchar();
return 0;
}
  #2 (permalink)  
Antiguo 07/11/2012, 18:14
Avatar de cotolon  
Fecha de Ingreso: octubre-2012
Mensajes: 55
Antigüedad: 12 años
Puntos: 10
Respuesta: ¿Porque no corre mi calculadora en dev c?

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. }
  #3 (permalink)  
Antiguo 07/11/2012, 18:21
 
Fecha de Ingreso: noviembre-2012
Mensajes: 2
Antigüedad: 12 años
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. }
  #4 (permalink)  
Antiguo 07/11/2012, 20:05
Avatar de cotolon  
Fecha de Ingreso: octubre-2012
Mensajes: 55
Antigüedad: 12 años
Puntos: 10
Respuesta: ¿Porque no corre mi calculadora en dev c?

Quita la línea que agregue. (esa del if respuesta == 2 return 0 )
y debes declarar la variable int respuesta = 1; dentro del do while y no antes, te quedaría así:


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

Etiquetas: calculadora, corre, dev, int
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:55.