Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: h0oke en 17 Julio 2009, 01:08 am



Título: Calculadora-Duda
Publicado por: h0oke en 17 Julio 2009, 01:08 am
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?


Título: Re: Calculadora-Duda
Publicado por: ny0x en 17 Julio 2009, 01:33 am
pues ni modo si quieres averiguarlo tendras que usar ingenieria inversa o hacer tu propio metodo  :xD


Título: Re: Calculadora-Duda
Publicado por: seba123neo en 17 Julio 2009, 01:35 am
Hola, queres que le pida el codigo a microsoft ?? no...mejor hace tu propia calculadora...mientras menos les copies mejor  :xD, empeza probando con 2 operaciones basicas como resta y suma y despues vas a ver que no es dificil...

saludos.


Título: Re: Calculadora-Duda
Publicado por: h0oke en 17 Julio 2009, 01:38 am
 :xD 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


Título: Re: Calculadora-Duda
Publicado por: Skeletron en 17 Julio 2009, 01:54 am
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


Título: Re: Calculadora-Duda
Publicado por: cobein en 17 Julio 2009, 02:39 am
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.


Título: Re: Calculadora-Duda
Publicado por: h0oke en 17 Julio 2009, 02:45 am
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?


Título: Re: Calculadora-Duda
Publicado por: cobein en 17 Julio 2009, 03:11 am
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.



Título: Re: Calculadora-Duda
Publicado por: h0oke en 17 Julio 2009, 03:13 am
Me sorprendes cobein  ::).

Bien, ahora que lo mencionas, en vb se pueden redimensionar los datos estructurados, muchas gracias.

Un saludo.