Siguiendo con la evolución de la calculadora básica que estaba desarrollando me han surgido nuevas dudas, dado que el hilo anterior ya era algo extenso he decidido abrir un segundo hilo, así la gente podrá seguir la evolución del código sin liarse mucho.
En el hilo anterior terminamos viendo un código funcional y claro (ademas de adaptable a posibles mejoras), pero tenia una limitación, esa calculadora no podía pasar de una operación entre dos valores (A+B, A-B, A*B, ...) esto todavía estaba algo lejos de ser lo que yo considero una calculadora que sirva para un uso diario, puesto que normalmente usamos la calculadora para realizar varias operaciones, tras un tiempo dándole vueltas y un par de consejos he mejorado el código, ahora podremos realizar todas las operaciones que queramos.
Código fuente:
#include <iostream> using namespace std; int main(){ float A,B,resultado; int accion,accion2,nada; cout<<"---------------------------------------------------------------"<<endl; cout<<"| Calculadora basica en C++ |"<<endl; cout<<"| Programada por The Dragon Lives |"<<endl; cout<<"---------------------------------------------------------------"<<endl; cout<<"Introducir un numero mayor a 4 o menor a 1 para finalizar el programa"<<endl; cout<<"\n\nintroduce el primer valor"<<endl; cin>>A; cout<<"Tipos de acciones"<<endl; cout<<"- 1.)Sumar"<<endl; cout<<"- 2.)Restar"<<endl; cout<<"- 3.)Multiplicar"<<endl; cout<<"- 4.)Dividir"<<endl; cout<<"- Número fuera de rango para finalizar"<<endl; cout<<"Seleccione la accion a realizar: "<<endl; cin>>accion; if (accion < 1 || accion > 4){ //fuera de accion para finalizar cout<<"\n\nFin del programa. Gracias por utilizarme"<<endl; cin>>nada; return 0; } cout<<"introduce el segundo valor"<<endl; cin>>B; switch (accion){ case 1: //sumar resultado=A+B; break; case 2: //restar resultado=A-B; break; case 3: //multiplicar resultado=A*B; break; case 4: //dividir resultado=A/B; if (B==0) cout<<"error, no se puede dividir entre cero"<<endl; break; } while (1){ cout<<"Tipos de acciones"<<endl; cout<<"- 1.)Sumar"<<endl; cout<<"- 2.)Restar"<<endl; cout<<"- 3.)Multiplicar"<<endl; cout<<"- 4.)Dividir"<<endl; cout<<"- 5.)Resultado"<<endl; cout<<"-Número fuera de rango para parar"<<endl; cout<<"Seleccione la accion a realizar: "<<endl; cin>>accion2; if (accion < 1 || accion > 5){ cout<<"\n\nFin del programa. Gracias por utilizarme"<<endl; cin>>nada; return 0; } cout<<"El resultado anterior es "<<resultado<<endl; cout<<"introduce el segundo valor"<<endl; cin>>B; switch (accion2){ //sumar case 1: resultado=resultado+B; cout<<"El resultado de la suma es "<<resultado<<endl; break; case 2: //restar resultado=resultado-B; cout<<"El resultado de la resta es "<<resultado<<endl; break; case 3: //multiplicar resultado=resultado*B; cout<<"El resultado de la multiplicacion es "<<resultado<<endl; break; case 4: //dividir resultado=resultado/B; if (B==0) cout<<"error, no se puede dividir entre cero"<<endl; else cout<<"El resultado de la division es "<<resultado<<endl; break; case 5: //mostrar resultado cout<<"El resultado es "<<resultado<<endl; cin>>nada; return 0; } } return 0; }
¿Que problemas he encontrado? De momento solo puedo ponerle un fallo después de seleccionar la acción de mostrar el resultado nos pide el valor de B.
¿A alguien se le ocurre como no mostrar lo de "introduce el valor B"?
Tu código: #include
Tu código:
Errores que he observado, abajo te pongo el código arreglado:
resultado += a
que lo tuyo.De momento solo veo eso. El código lo pongo luego que ahora no puedo
¡Iníciate en Linux fácilmente! Sólo entra aquí y comprueba que distribución se adapta mejor a tí.
Mi review: iPod Touch 4G
Casi lo tengo
Aquí el código:
No consigo parar la apli si intentan dividir entre 0.
Ya esta!!
Me ha costado más de lo que esperaba xDxDxD:
Las ventajas:
PD: Sigues dándole a resultado un valor de infinito al dividir entre 0. Lo que haces es primero darle valor y luego la comprobacion de si el divisor es 0. Debería ser al reves (mira mi código)
¡Iníciate en Linux fácilmente! Sólo entra aquí y comprueba que distribución se adapta mejor a tí.
Mi review: iPod Touch 4G
pequeño error
He intentado compilar eso, pero al probarlo me as surgido un error y es que creas un bucle después del valor a, por tanto todas las acciones las hace con referencia a "a" y no al resultado del la operación anterior, ej:
5+4=9+1=6
Tu código coge el valor de a como valor fijo a la acción a realizar, pero no puedes realizar una serie de operaciones (como por ejemplo en mi código, aunque no consigo quitar el error de dividir entre 0) ej en mi código:
5+4=9+1=10+6=16
Así se conseguiría realizar una sucesión de carculos, que es ha donde quiero ir :)
Muchas gracias por todos los consejos, al final lo conseguiremos ;)
PD. Tendré que pasar a poner la calculadora de SB :p
Muy sencillo
La variable i la habia definido por eso, pero al final se me paso :-) (tengo memoria pez :p)
Ahí lo tienes.
¡Iníciate en Linux fácilmente! Sólo entra aquí y comprueba que distribución se adapta mejor a tí.
Mi review: iPod Touch 4G
Esta bien
Ya me has dejado claro quien es quien manda ¬¬ pues nada, aquí esta la open calculadora, de momento me estudio el código que has creado .... si alguien quiere aportar mas a la OpenCalculadora adelante.
Jejeje
Tampoco lo he hecho yo todo, empezando por la idea :p
Esto, como ya te dije en el otro post, es saber programar, y no saber C++. Sólo se puede aprender con la práctica. Espero que tu pronto aprendas ;-). Acerca de eso, para que me entiendas, el otro día, fui a casa de un amigo que estaba programando en python (no sabía nada, ni programar ni los comandos) y yo que en mi vida había tocado otro lenguaje distinto de LUA, me puse 5 minutos y le programé un arkanoid xDxD. Con esto quiero decir que no es cuestion de saber un lenguaje, sino de programar. Como se aprende? Practicando y estudiando códigos com oestás haciendo ;-)
¡Iníciate en Linux fácilmente! Sólo entra aquí y comprueba que distribución se adapta mejor a tí.
Mi review: iPod Touch 4G