hacker


Ingresar con nombre de usuario, contraseña y duración de la sesión
| Portal Hacker | Editorial | Descargas | Ezine |
Inicio Ayuda Ingresar Registrarse
25 de Julio de 2008, 05:20:25
Noticias: Que importa si no sabes programar, CPH te enseña, solo haz click
Para ver este enlace Registrate o Inicia Sesion
Aquí

+  Foros pOrtal Hacker
|-+  Programacion
| |-+  Programación en general
| | |-+  JAVA (Moderador: kamui23)
| | | |-+  Calculadora Postfija
0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Calculadora Postfija  (Leído 645 veces)
reyborrego
Recien llegado
*
Desconectado Desconectado

Mensajes: 2


Ver Perfil
« : 15 de Diciembre de 2007, 02:14:41 »

Hola necesito ayuda para poder crear una calculadora de notación polaca, con pilas, es mi proyecto para poder aprovar mi curso de programación agradeceria mucho su ayuda.
En línea
FreakMind
NZ2
**
Desconectado Desconectado

Mensajes: 245



Ver Perfil
« Respuesta #1 : 15 de Diciembre de 2007, 08:45:09 »

Buenas


Exactamente en QUE necesitas ayuda?


Salu2, FreakMind
En línea


Connoisseurs of C semantics find C++ inferior to ++C

reyborrego
Recien llegado
*
Desconectado Desconectado

Mensajes: 2


Ver Perfil
« Respuesta #2 : 15 de Diciembre de 2007, 10:37:20 »

hola necesito que me expliquen como hacer el código o me ayuden a hacerlo, y poder entenderlo completamente gracias.
En línea
FreakMind
NZ2
**
Desconectado Desconectado

Mensajes: 245



Ver Perfil
« Respuesta #3 : 15 de Diciembre de 2007, 10:41:42 »

Buenas


Sabes utilizar los conceptos de pilas y arboles binarios? Preferiblement e en vectores, sino con estructuras dinamicas tambien sirve. Eso seria el primer paso que necesitas hacer


Salu2, FreakMind
En línea


Connoisseurs of C semantics find C++ inferior to ++C

Spoofing
Recien llegado
*
Desconectado Desconectado

Mensajes: 2


Ver Perfil
« Respuesta #4 : 09 de Enero de 2008, 07:52:00 »

Es un problema bastante facil, pero necesitas manejar los conceptos de nodo y pila.

Como funciona?

Recorrer la expresión de izquierda a derecha y para cada termino hacer:

Sí el término es un valor, introducirlo en una pila
Sí el término es un operador:

Sacar dos operandos de la pila
Aplicar el operador
Meter el resultado en la pila


Bueno aqui lo acabo de programar:



Esta sera la clase nodo, el nodo estara compuesto de un valor entero y el puntero al siguiente nodo

class Nodo {
        //guardar como Nodo.java
   public int Valor;
   public Nodo Siguiente;

   //Constructor por defecto
   
   public Nodo() {

      this.Valor= 0;
      this.Siguiente = null;

   }


}

Ahora la clase pila:

class Pila {
        //guardar como Pila.java
   public Nodo tope;

         //constructor por defecto
   public Pila() {
   this.tope = null;

   }


   public void AgregarPila(int valor) {

      Nodo aux = new Nodo();
      aux.Valor = valor;
      aux.Siguiente = null;


      if (tope == null) {
            tope = aux;
         }

      else {
         aux.Siguiente = tope;
         tope = aux;
      }



   }

   public int SacarPila() {
      int a = tope.Valor;
      
      //**Aqui solo desreferenciam os el tope no necesitamos de algo como un dispose u otro
      ya que java se encarga de liberar la memoria basura ***//
      tope = tope.Siguiente;
      return a;
   }

   


}


Ahora la clase principa debe ser algo asi:

import java.io.*;
import java.lang.*;

public class calcpost {
                //Guardar como calcpost.java
      public static void main(String args[]) throws IOException {


      Pila mipila = new Pila();

      String linea = " ";

      int aux;

      BufferedReader teclado = new BufferedReader ( new InputStreamRea der( System.in) );

      while ( linea != null ) {

            System.out.println("Ingrese operacion en notacion postfija, ejemplo: 35*67*+ (q para salir)");
            linea = teclado.readLi ne();

               for ( int i=0; i < linea.length(); i++) {


                  char temp = linea.charAt(i);


                  switch (temp) {

                     case 'q' : System.exit(0); break;

                     case '+' :  aux = mipila.SacarPi la() +  mipila.SacarPi la();
                              mipila.AgregarPila(aux);
                              break;

                        case '*' :  aux = mipila.SacarPi la() *  mipila.SacarPi la();
                                 mipila.AgregarPila(aux);
                                 break;




                     default     :

                              String s = temp+"";
                              int x = Integer.parseI nt(s);

                              mipila.AgregarPila(x);
                              break;


                     } //cierra switch

                  } //cierra for

                  System.out.println(mipila.SacarPi la() + "");



         } // cierra while


   } //cierra main

} // cierra clase


Falta implementar el - y el / pero se hace igual.

Saludos !
« Última modificación: 10 de Enero de 2008, 06:34:49 por Spoofing » En línea
FreakMind
NZ2
**
Desconectado Desconectado

Mensajes: 245



Ver Perfil
« Respuesta #5 : 11 de Enero de 2008, 04:29:14 »

En realidad creo que hay que tenes algo mas de cuidado, ya que no es solo "
Sí el término es un valor, introducirlo en una pila
Sí el término es un operador:
Sacar dos operandos de la pila
Aplicar el operador
Meter el resultado en la pila


Existen diferentes prioridades entre operadores, que hay que tomarlas en cuenta. De todas formas, el algoritmo se modifica solo un poco.
Realmente la unica calculadora asi que hice esta en C, por lo que les servira demasiado.

Salu2, FreakMind
En línea


Connoisseurs of C semantics find C++ inferior to ++C

Spoofing
Recien llegado
*
Desconectado Desconectado

Mensajes: 2


Ver Perfil
« Respuesta #6 : 11 de Enero de 2008, 05:13:33 »

suponemos que es una expresion correctamente ingresada en postfija, además solo intente mostrar el concepto por eso tampoco tiene manejo de errores saludos Cheesy
« Última modificación: 11 de Enero de 2008, 05:19:25 por Spoofing » En línea
Páginas: [1] Ir Arriba Imprimir 
« anterior próximo »
Ir a:  


Ingresar con nombre de usuario, contraseña y duración de la sesión

Powered by SMF 1.1.5 | SMF © 2006-2008, Simple Machines LLC hacker

Juegos gratis - Articulos PHP - Juegos - Trucos - Letras - Juegos - Juegos Online