calculadora en c++

Iniciado por anarchy2k1, 23 Marzo 2012, 05:28 AM

0 Miembros y 1 Visitante están viendo este tema.

anarchy2k1

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 (c++) [Seleccionar]
#include <stdio.h>
#include<iostream.h>
#include <conio.h>

int main()
{
int tipo;
float a,b,total;
char cont='s';
while (cont!='n')
{
 printf("Seleccione operacion a realizar\n");
 printf("1. Suma\n");
 printf("2. Resta\n");
 printf("3. Multiplicacion\n");
 printf("4. Division\n");
 scanf("%d",&tipo);
 switch (tipo)
 {
case 1:
printf("Escriba los numeros que desea sumar:\n");
scanf("%f""%f",&a,&b);
total=a+b;
printf("El resultado es: %.2f\n",total);
a=0;
b=0;
break;

case 2:
printf("Escriba los numeros que desea restar:\n");
scanf("%f""%f",&a,&b);
total=a-b;
printf("El resultado es:%.2f\n",total);
a=0;
b=0;
break;

case 3:
printf("Escriba los numeros que desea multiplicar:\n");
scanf("%f""%f",&a,&b);
total=a*b;
printf("El resultado es:%.2f\n",total);
a=0;
b=0;
break;

case 4:
printf("Escriba los numeros que desea dividir:\n");
scanf("%f""%f",&a,&b);
total=a/b;
  printf("El resultado es:%.2f\n",total);
a=0;
b=0;
break;
 }
 printf("Quieres hacer otra operacion:(s/n)");
 scanf("%s",&cont);
 printf("\n");
}
return 0;
}

pero no se como guardar el resultado de mi primera operacion para con ese mismo hacer una segunda operacion les agradeceria su ayuda gracias

Ferno

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.

Runex

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 :)
"No renunciaría al bambú.
Nunca renuciaría a ti.
No te compares con otros" "El me dijo:
El bambú tenía un propósito diferente al del
helecho, sin embargo eran necesarios y
hacían del bosque un lugar hermoso".

totolia

#3
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>

int main()
{
int tipo,primeravez;
primeravez=0;
float a,b,total;
char cont='s';
while (cont!='n')
{
 printf("Seleccione operacion a realizar\n");
 printf("1. Suma\n");
 printf("2. Resta\n");
 printf("3. Multiplicacion\n");
 printf("4. Division\n");
 scanf("%d",&tipo);
 switch (tipo)
 {
case 1:
printf("Escriba los numeros que desea sumar:\n");
if(!primeravez){
scanf("%f""%f",&a,&b);
}else{
scanf("%f",&b);
}
total=a+b;
break;

case 2:
printf("Escriba los numeros que desea restar:\n");
if(!primeravez){
scanf("%f""%f",&a,&b);
}else{
scanf("%f",&b);
}
total=a-b;
break;

case 3:
printf("Escriba los numeros que desea multiplicar:\n");
if(!primeravez){
scanf("%f""%f",&a,&b);
}else{
scanf("%f",&b);
}
total=a*b;
break;

case 4:
printf("Escriba los numeros que desea dividir:\n");
if(!primeravez){
scanf("%f""%f",&a,&b);
}else{
scanf("%f",&b);
}
total=a/b;
break;
 }
printf("El resultado es: %.2f\n",total);
a=total;
b=0;
printf("Quieres hacer otra operacion:(s/n)");
scanf("%s",&cont);
printf("\n");

if(primeravez==0){
 primeravez=1;
}
}
return 0;
}

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);

Don Pollo

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.