Autor
|
Tema: calculadora por jerarquia ()*/+- ...C#... (Leído 48,423 veces)
|
h0oke
Desconectado
Mensajes: 2.059
Coder ~
|
Una pila (stack en inglés) es una lista ordinal o estructura de datos en la que el modo de acceso a sus elementos es de tipo LIFO (del inglés Last In First Out, último en entrar, primero en salir) que permite almacenar y recuperar datos. Se aplica en multitud de ocasiones en informática debido a su simplicidad y ordenación implícita en la propia estructura. Representación gráfica de una pila
Para el manejo de los datos se cuenta con dos operaciones básicas: apilar (push), que coloca un objeto en la pila, y su operación inversa, retirar (o desapilar, pop), que retira el último elemento apilado. A eso me refería. es un reto??? xD Yo también lo vi de esa manera. Este tema, lo había analizado en VB, y cobein me recomendó lo de la pila. Un saludo!
|
|
|
En línea
|
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
Una pila (stack en inglés) es una lista ordinal o estructura de datos en la que el modo de acceso a sus elementos es de tipo LIFO (del inglés Last In First Out, último en entrar, primero en salir) que permite almacenar y recuperar datos. Se aplica en multitud de ocasiones en informática debido a su simplicidad y ordenación implícita en la propia estructura. Representación gráfica de una pila
Para el manejo de los datos se cuenta con dos operaciones básicas: apilar (push), que coloca un objeto en la pila, y su operación inversa, retirar (o desapilar, pop), que retira el último elemento apilado. A eso me refería. Entonces si, es la clase generica xD es un reto??? xD Yo también lo vi de esa manera. Este tema, lo había analizado en VB, y cobein me recomendó lo de la pila. Un saludo! Yo tengo que hacerlo en vb.net (que es en donde lo necesito para el proyecto que estoy haciendo). Pensaba hacerlo de esta manera 1- Dividir por terminos (a travez de una o tres expresiones regulares) dividir llaves, corchetes, parentesis; multiplicacion y division; suma y resta 2 - Analizar las ecuaciones ( yo lo necesito, pero no ecuaciones con X, sino con palabras claves, ej: A200 seria un valor que ya tengo en una tabla) 3 - Resolver la ecuacion mas "baja" (la que se debe resolver primero xD) y de ahi ir subiendo... se entiende??? xD despues planteo codigo
|
|
|
En línea
|
|
|
|
h0oke
Desconectado
Mensajes: 2.059
Coder ~
|
Dividir por terminos (a travez de una o tres expresiones regulares) dividir llaves, corchetes, parentesis; multiplicacion y division; suma y resta Exacto, solo hace falta saber matemáticas. Comienzas a recorrer la pila, ten en cuenta que el primero es el último, {} luego [] () ... / * ... + y - , y mientras recorres lo resuelves. Ahora con respecto a lo de ecucaciones, si unicamente son valores que están en una tabla, no es muy difícil, si en realidad son ecuaciones, tendrás que recurrir a métodos para averigurar la complejidad de dicha ecucación y utilizar algún método de algebra avanzada para hacer eficiente tu programa, hace un tiempo hice un programa en Pascal para resolver ecuaciones por el método de Gauss, pero luego perdí el código. Un saludo!
|
|
|
En línea
|
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
Dividir por terminos (a travez de una o tres expresiones regulares) dividir llaves, corchetes, parentesis; multiplicacion y division; suma y resta Exacto, solo hace falta saber matemáticas. Comienzas a recorrer la pila, ten en cuenta que el primero es el último, {} luego [] () ... / * ... + y - , y mientras recorres lo resuelves. No entiendo como lo harias con una pila
|
|
|
En línea
|
|
|
|
h0oke
Desconectado
Mensajes: 2.059
Coder ~
|
Una pila, es simplemente una lista o array.
Es como si tendrías esto:
{'(','1','+','3',')'};
El primer dato a analizar será ')'.
Espero no estar equivocado.
|
|
|
En línea
|
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
Una pila, es simplemente una lista o array.
Es como si tendrías esto:
{'(','1','+','3',')'};
El primer dato a analizar será ')'.
Espero no estar equivocado.
estas bien, y si eso lo se, pero no entiendo la logica de analizar una pila xD
|
|
|
En línea
|
|
|
|
h0oke
Desconectado
Mensajes: 2.059
Coder ~
|
Que en la pila no tendrás una limitación de compilación, sino la tendrás cuando estés dentro del programa; por algo es una ventaja del programador trabajar con memoria dinámica. No se trata de lógica, sino de aprovechar los recursos de una pc, es simplemente un "array dinámico".
|
|
|
En línea
|
|
|
|
fuenteRea
Desconectado
Mensajes: 2.709
Volver a ser un niño
|
pila, lista, cola, arboles etc, son lo mismo.
pila--> El ultimo elemento que entra es el primero en salir. Ejemplo
apliar(2); apliar(3); apliar(4); en la pila tenemos 4-3-2 si quieremos mostrar los elementos de la pila mostraremos el 4 luego el 3 y luego el 2.
lista es lista y punto jaja
cola--> El ultumo que entra es el ultimo en salir (como en la cola del cine, por orden de entrada).
encolar(2); encolar(3); encolar(4); en la cola la tenemos 2-3-4 si quieremos mostrar los elementos de la pila mostraremos el 4 luego el 3 y luego el 2.
Lo bueno de las pilas es que te permite usar recusividad muy facilmente. Al contrario que la cola.
un saludo!!º
|
|
|
En línea
|
Una rosa es una rosa...
|
|
|
h0oke
Desconectado
Mensajes: 2.059
Coder ~
|
Cita a wikipedia: En programas de aplicación escrito en un lenguaje de alto nivel, una pila puede ser implementada de manera eficiente, ya sea usando vectores o listas enlazadas. Expresión de evaluación y análisis sintáctico sintaxis
Se calcula empleando la notación polaca inversa utilizando una estructura de pila para los posibles valores. Las expresiones pueden ser representadas en prefijo, infijo, postfijo. La conversión de una forma de la expresión a otra forma necesita de una pila. Muchos compiladores utilizan una pila para analizar la sintaxis de las expresiones, bloques de programa, etc. Antes de traducir el código de bajo nivel. La mayoría de los lenguajes de programación son de contexto libre de los idiomas que les permite ser analizados con máquinas basadas en la pila.
Por ejemplo, el cálculo: ((1 + 2) * 4) + 3, puede ser anotado como en notación postfija con la ventaja de no prevalecer las normas y los paréntesis necesarios:
1 2 + 4 * 3 +
La expresión es evaluada de izquierda a derecha utilizando una pila:
* Apilar cuando se enfrentan a un operando y * Desafilar dos operandos y evaluar el valor cuando se enfrentan a una operación. * Apilar el resultado.
Espero que eso aclare las dudas
|
|
|
En línea
|
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
thedoctor77 se usar estructuras de datos.
Lo que no entendia la logica de las pilas. Pero hay un error jeje..... que pasa si yo meto para calcular 6 + (8 + 3) - [6 * (3 + 2) + 5] * (2 * 10 / 5) + (5 * ((2 * 6) + 2)
habria que ordenarlos, xq de la forma que emplea Seu¥ creo que no funcionaria porque no esta ordenada
|
|
|
En línea
|
|
|
|
|
|