Autor
|
Tema: Calculadora-Duda (Leído 3,087 veces)
|
h0oke
Desconectado
Mensajes: 2.059
Coder ~
|
Hola, analizando ayer la calculadora de windows me ha quedado una duda para hacer una implementación en vb.
Pareciera que mi cerebro está algo congelado peor no logro entender la siguiente lógica:
Para realizar las operaciones, uno ingresa un número, escoge la operación, y luego ingresa otro número,..., todo esto N veces. Bien, la calculadora no borra nunca la pantalla entre un número y otro número; lo que yo pienso es que existe una bandera que cambia a un TRUE cuando se escoge una operación, luego cuando se ingresa el próximo número, se analiza si esta bandera está en TRUE, si es así guarda el resultado en una variable, limpia el textbox y uno sigue escribiendo normalmente, ¿esto es correcto?
|
|
|
En línea
|
|
|
|
ny0x
Desconectado
Mensajes: 336
|
pues ni modo si quieres averiguarlo tendras que usar ingenieria inversa o hacer tu propio metodo
|
|
|
En línea
|
|
|
|
seba123neo
|
Hola, queres que le pida el codigo a microsoft ?? no...mejor hace tu propia calculadora...mientras menos les copies mejor , empeza probando con 2 operaciones basicas como resta y suma y despues vas a ver que no es dificil... saludos.
|
|
|
En línea
|
|
|
|
h0oke
Desconectado
Mensajes: 2.059
Coder ~
|
No es mi idea hacer ingenieria inversa o algo por el estilo, solo pense que existía algún "método", pero como bien dijeron tal vez sea conveniente hacerlo a mi manera. La razón por la cual lo quiero hacer, es porque la calculadora en otros sistemas por ejemplo en base 2 tiene muchos problemas con números negativos, asi como tampoco en sus otras bases no posee división con decimales. Un saludo
|
|
|
En línea
|
|
|
|
Skeletron
Desconectado
Mensajes: 1.731
A long way to go
|
Creo que la implementacion de "bandera" es lo mas correcto o aproximado a la calculadora de Windows.. si si.. Aunque ojo... Cuando pones: 3 + 4 = = = = Recuerda que tiene que seguir sumando a 3 el valor 4... y si no implementas algo para ello, al colcoar el "=", te colocará el nuevo valor y no hará la proxima suma... Y a que querio llegar con semejante estupidez que acabo de decir? A que cada "boton" de operacion, tendrá que tener una particularidad diferente.. Cada boton, cada operacion tendrá su codigo.. por lo tanto, no busques un codigo standart para todas las operaciones.. Los numeros haran lo suyo. + - * y / haran lo suyo = Hará lo suyo Yo te recomiendo guardar en una variable el ultimo resultado y en otra, el ultimo operador.. Porque si haces: 3+1 = + = * = = = = / = + = Ahí tienes que hacer unas cuantas operaciones, siempre con el ultimo resultado dado y con el ultimo operando...
El DISPLAY se modificará: luego de precionar el "=" escribiendo un numero luego de "=" escribiendo un numoer luego de precionar un operador luego de "=" y otras varias
|
|
|
En línea
|
|
|
|
cobein
|
La manera logica de resolver esto es usar un pila, basicamente empujas los valores y operadores en la pila y luego resolves recursivamente
Algo asi:
3+4*2
pila
3 + 4 * 2
lo que haces es recorrer la pila resolviendo 1 operacion a la vez, en el orden correcto (*,/,+,-)hasta que quede 1 solo valor.
1- Primer pasada, hay una multiplicacion? si, ok la resolves y volves a llamar a la funcion
3 + 8
2- hay multiplicacion? no hay division? no hay suma? si
la resolves
11
en este punto terminas, queda solamente 1 numero.
la misma mecanica la podes aplicar pra usar parentesis, seno, coseno, etc.
|
|
|
En línea
|
|
|
|
h0oke
Desconectado
Mensajes: 2.059
Coder ~
|
Exacto cobein a eso me refería, sin duda. Una última duda, la pila no es que se determina en la ejecución del programa?, me confundí en esa parte, porque no manejo esos conceptos, unicamente por teoría y menos en vb, pero lo que leí me indica que en medio del programa necesitas hacer uso de "heap", o te refieres a crear una pila de cierto tamaño para la pronta ejecución?
|
|
|
En línea
|
|
|
|
cobein
|
La "pila" puede ser simplemente un array de strings que redimensionas para ir agregando mas datos. Yo usaria un custom type para poder almacenar algunos datos extra, por ejemplo en el caso de numeros negativos, tener un flag asi es mas simple de procesar.
|
|
|
En línea
|
|
|
|
h0oke
Desconectado
Mensajes: 2.059
Coder ~
|
Me sorprendes cobein . Bien, ahora que lo mencionas, en vb se pueden redimensionar los datos estructurados, muchas gracias. Un saludo.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Duda pascal calculadora
Programación General
|
netca
|
1
|
4,558
|
12 Abril 2011, 02:20 am
por Nakp
|
|
|
Duda con calculadora online java
Java
|
Tryndamere
|
3
|
4,482
|
24 Mayo 2011, 00:12 am
por xassiz~
|
|
|
[Duda] Sobre una cosa de Calculadora
Programación Visual Basic
|
Senior++
|
6
|
3,286
|
30 Junio 2011, 20:12 pm
por 79137913
|
|
|
Duda con Calculadora Casio
Dudas Generales
|
vilcar
|
0
|
2,505
|
10 Enero 2012, 19:13 pm
por vilcar
|
|
|
Duda de como hacer una Calculadora (PYTHON)
Scripting
|
Tuplado
|
1
|
3,543
|
16 Enero 2012, 01:59 am
por Leyer
|
|