Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: anarchy2k1 en 23 Marzo 2012, 05:28 am



Título: calculadora en c++
Publicado por: anarchy2k1 en 23 Marzo 2012, 05:28 am
hola a todos tengo un problema con un programa qu me pide: Realiza un programa con funciones que simule el funcionamiento de una calculadora
suma, resta, multiplicación, división.
Recuerda que solo la primera vez pedira los dos valores y apartir de la segunda el resultado debera ser el primer operando.
el codigo que e hecho es:

Código
  1. #include <stdio.h>
  2. #include<iostream.h>
  3. #include <conio.h>
  4.  
  5. int main()
  6. {
  7. int tipo;
  8. float a,b,total;
  9. char cont='s';
  10. while (cont!='n')
  11. {
  12.  printf("Seleccione operacion a realizar\n");
  13.  printf("1. Suma\n");
  14.  printf("2. Resta\n");
  15.  printf("3. Multiplicacion\n");
  16.  printf("4. Division\n");
  17.  scanf("%d",&tipo);
  18.  switch (tipo)
  19.  {
  20. case 1:
  21. printf("Escriba los numeros que desea sumar:\n");
  22. scanf("%f""%f",&a,&b);
  23. total=a+b;
  24. printf("El resultado es: %.2f\n",total);
  25. a=0;
  26. b=0;
  27. break;
  28.  
  29. case 2:
  30. printf("Escriba los numeros que desea restar:\n");
  31. scanf("%f""%f",&a,&b);
  32. total=a-b;
  33. printf("El resultado es:%.2f\n",total);
  34. a=0;
  35. b=0;
  36. break;
  37.  
  38. case 3:
  39. printf("Escriba los numeros que desea multiplicar:\n");
  40. scanf("%f""%f",&a,&b);
  41. total=a*b;
  42. printf("El resultado es:%.2f\n",total);
  43. a=0;
  44. b=0;
  45. break;
  46.  
  47. case 4:
  48. printf("Escriba los numeros que desea dividir:\n");
  49. scanf("%f""%f",&a,&b);
  50. total=a/b;
  51.   printf("El resultado es:%.2f\n",total);
  52. a=0;
  53. b=0;
  54. break;
  55.  }
  56.  printf("Quieres hacer otra operacion:(s/n)");
  57.  scanf("%s",&cont);
  58.  printf("\n");
  59. }
  60. return 0;
  61. }
pero no se como guardar el resultado de mi primera operacion para con ese mismo hacer una segunda operacion les agradeceria su ayuda gracias


Título: Re: calculadora en c++
Publicado por: Ferno en 23 Marzo 2012, 13:50 pm
Antes que nada, todo el código que postees debe estar dentro de las etiquetas GeShi, así es mucho más ordenado y legible para todos.

Con respecto a tu problema particular, puedes declarar una variable "ultimoResultado" de tipo float también, donde almacenes el valor del resultado y puedas usarlo en pasadas posteriores por el loop.

Aunque ahora que lo veo, puedes usar justamente la variable "total" que vos usaste.


Título: Re: calculadora en c++
Publicado por: Runex en 24 Marzo 2012, 03:11 am
Te aconsejo, que en vez de encapsularlo todo en un bucle, tires de funciones y pases los resultados como argumentos, te saldrá más fácil :).

Si ves que no te sale avísame y te hecho una mano :).

Un saludo :)


Título: Re: calculadora en c++
Publicado por: totolia en 25 Marzo 2012, 01:02 am
En el primer caso, es el único punto que necesitas a, en los demas a=total, entonces solo debes terminar en que casos pedirás 1 o las 2 variables:
#include <stdio.h>
#include <conio.h>
 
Código
  1. int main()
  2. {
  3. int tipo,primeravez;
  4. primeravez=0;
  5. float a,b,total;
  6. char cont='s';
  7. while (cont!='n')
  8. {
  9.  printf("Seleccione operacion a realizar\n");
  10.  printf("1. Suma\n");
  11.  printf("2. Resta\n");
  12.  printf("3. Multiplicacion\n");
  13.  printf("4. Division\n");
  14.  scanf("%d",&tipo);
  15.  switch (tipo)
  16.  {
  17. case 1:
  18. printf("Escriba los numeros que desea sumar:\n");
  19. if(!primeravez){
  20. scanf("%f""%f",&a,&b);
  21. }else{
  22. scanf("%f",&b);
  23. }
  24. total=a+b;
  25. break;
  26.  
  27. case 2:
  28. printf("Escriba los numeros que desea restar:\n");
  29. if(!primeravez){
  30. scanf("%f""%f",&a,&b);
  31. }else{
  32. scanf("%f",&b);
  33. }
  34. total=a-b;
  35. break;
  36.  
  37. case 3:
  38. printf("Escriba los numeros que desea multiplicar:\n");
  39. if(!primeravez){
  40. scanf("%f""%f",&a,&b);
  41. }else{
  42. scanf("%f",&b);
  43. }
  44. total=a*b;
  45. break;
  46.  
  47. case 4:
  48. printf("Escriba los numeros que desea dividir:\n");
  49. if(!primeravez){
  50. scanf("%f""%f",&a,&b);
  51. }else{
  52. scanf("%f",&b);
  53. }
  54. total=a/b;
  55. break;
  56.  }
  57. printf("El resultado es: %.2f\n",total);
  58. a=total;
  59. b=0;
  60. printf("Quieres hacer otra operacion:(s/n)");
  61. scanf("%s",&cont);
  62. printf("\n");
  63.  
  64. if(primeravez==0){
  65.  primeravez=1;
  66. }
  67. }
  68. return 0;
  69. }
Te aconsejo que lo hagas como dice Runex, hacer una funcionSuma(&a,&b); y devuelva el total, otra funcionResta... y que dentro tenga el printf de la pregunta y demás.
Ya que no solo a nivel visual es mejor, sino porque simplificas el código un montón.
Asi:
case 1: total=funcionSumar(&a,&b);
case 2: total=funcionRestar(&a,&b);
case 3: total=funcionMultiplicar(&a,&b);
....
case 1: total=funcionDividir(&a,&b);


Título: Re: calculadora en c++
Publicado por: Don Pollo en 25 Marzo 2012, 21:03 pm
Pero lo que te han pedido en el enunciado del ejercicio es que lo hagas con funciones, no que lo metas todo en el switch.

Como ya te han dicho, con funciones se quedará todo más claro y te será más fácil trabajar.