<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>infijo &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/infijo/</link>
	<description>Feed of posts on WordPress.com tagged "infijo"</description>
	<pubDate>Fri, 04 Dec 2009 20:37:05 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[Java Infijo a Posfijo]]></title>
<link>http://linkcode.wordpress.com/2008/04/29/java-infijo-a-posfijo/</link>
<pubDate>Wed, 30 Apr 2008 05:48:42 +0000</pubDate>
<dc:creator>Link X</dc:creator>
<guid>http://linkcode.wordpress.com/2008/04/29/java-infijo-a-posfijo/</guid>
<description><![CDATA[Bueno, ya conociendo el algoritmo, se puede hacer en Java: class converpostultima{ public static voi]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Bueno, ya conociendo el algoritmo, se puede hacer en Java:</p>
<pre class="brush: java;">
class converpostultima{
 public static void main (String args[])
  {

    String expr = new String(&quot;&quot;);
    String exprpost = new String(&quot;&quot;);
    char ch;
    int max;
    System.out.print(&quot;Dame la Expresion en Infijo: &quot;);
    expr =Leer.dato();
    max=expr.length();
    operapilaschar obj1 = new operapilaschar(max);
    System.out.println();
    System.out.println();
    System.out.println(&quot;La Expresion en Postfijo es :&quot;);
    obj1.push('('); // inserta '(' a la PILA
    expr+=')'; // inserta ')' al final de Q
    for (int i=0;i=precedencia(ch) &amp;#38;&amp;#38; obj1.pila[obj1.tope]!='('))
 	  	   {
 	  	    obj1.pop();
 	  	    exprpost+=obj1.dret;
 	  	   }
 	  	   obj1.push(ch);
                break;
 	case ')': while (obj1.pila[obj1.tope] != '(')
 	          {
 	  	    obj1.pop();
 	  	    exprpost+=obj1.dret;
 	  	  }
 	  	   obj1.pop();
 	  	  break;
 	  	  default : exprpost+=ch;
    } 	       	    	                     

  }
  while (!(obj1.pila_Vacia(obj1.tope)))
    {
      obj1.pop();
      if (obj1.dret!= '(')
      exprpost+=obj1.dret;
    }
  System.out.println(exprpost);
} 	

 public static int precedencia(char ch)
 {
 	int aux = 0;
 	switch (ch)
 	 {
 	 	case '^' : aux = 4;
 	 	           break;
 	 	case '*' : case '/' : aux = 3;
 	 	           break;
 	 	case '+' : case '-' : aux = 2;
 	 	           break;
 	 	case '(' : aux = 1;
 	 	           break;
 	 }
 	 return aux;
 }
}
</pre>
<p>Cabe aclarar que el código no lo hice yo, si no que me lo pasaron para entender el algoritmo.</p>
<p><!--more--></p>
<p>Aquí esta la clase operapilaschar</p>
<pre class="brush: java;">
class operapilaschar

  {

    public static char dret;

    public static int max;

    public static char pila[];

    public static int tope = -1;

    public operapilaschar()

      {

 	max=20;

 	pila=new char [max];

      }

    public operapilaschar(int n)

      { 

 	 max=n-1;

 	 pila = new char [max];

      } 	 	

 public static boolean pila_Llena(int tope,int max)

  {

  	 boolean llena;

  	 if (tope==max)

  	      llena=true;

  	    else

  	      llena=false;

  	 return llena;

  }	        

 public static boolean pila_Vacia(int tope)

  {

 	 boolean vacia;

 	 if (tope == -1)

 	    vacia=true;

 	   else

 	    vacia=false;

 	 return vacia;

  }

 public static void push(char dato)

 {

 	if(pila_Llena(tope,max))

 	  System.out.println(&quot;!Cuidado!, Desbordamiento!!!!!&quot;);

 	   else

 	     {

 	     	tope++;

 	     	pila[tope]=dato;// pone el nuevo dato en la pila

 	     }

 }	     	

public static void pop()

 {

 	if (pila_Vacia(tope))

 	   System.out.println(&quot;!Cuidado!, Subdesbordamiento!!!!!&quot;);

 	else {

 		  dret=pila[tope];

 	      tope--;

 	      }// actualiza tope y se elimina elemento en el tope

 }

public static boolean compara(int dret,int ch)

 {

	if (dret=='(' &amp;#38;&amp;#38; ch==')' &amp;#124;&amp;#124; dret=='{' &amp;#38;&amp;#38; ch=='}' &amp;#124;&amp;#124; dret=='[' &amp;#38;&amp;#38; ch==']')

	  return true;

	  else 

	  return false;

 }

 public static void estado()

  {

  	int i;

  	System.out.println(&quot; El estado de la pila es : &quot;);

  	System.out.println(&quot; --------------------------&quot;);

  	for(i=0;i&amp;#60;=tope;i++)

  	 {

  	 	System.out.println(&quot;pila[&quot;+i+&quot;] : &quot;+pila[i]);

  	 }

  }
}</pre>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Infijo a Posfijo]]></title>
<link>http://linkcode.wordpress.com/2008/04/14/infijo-a-posfijo/</link>
<pubDate>Tue, 15 Apr 2008 01:06:03 +0000</pubDate>
<dc:creator>Link X</dc:creator>
<guid>http://linkcode.wordpress.com/2008/04/14/infijo-a-posfijo/</guid>
<description><![CDATA[Bueno, ya después del programa de pilas que puse hace poco (es el articulo pasado), sigue lo de pasa]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Bueno, ya después del programa de pilas que puse hace poco (es el articulo pasado), sigue lo de pasar una expresión infija a posfija (luego pongo la de posfija a infija) que también se hace mediante pilas, pero en esta se hace manualmente (es decir, lápiz y papel). Aquí están los pasos (algoritmo) que hay que seguir:</p>
<blockquote><p>
ALGORITMO: POLACA(Q,P). Suponemos que Q es una expresión aritmética escrita en notación infija. Este algoritmo encuentra su expresión postfija P.</p>
<p>1.- Meter &#8220;(&#8221; en PILA y añadir &#8220;)&#8221; al final de Q.<br />
2.- Examinar Q de izquierda a derecha y repetir los pasos 3 a 6 para cada elemento de Q hasta que la PILA esté vacía.<br />
3.- Si se encuentra PARÉNTESIS IZQ., meterlo en PILA.<br />
4.- Si se encuentra un OPERADOR  entonces:<br />
(a) Repetidamente sacar de PILA y añadir a P cada operador (de la cima de PILA) que tenga la misma precedencia o mayor que el operador.<br />
(b) Añadir OPERADOR  a PILA.<br />
[FIN de condicional]<br />
5.- Si se encuentra un PARÉNTESIS DER., entonces:<br />
(a) Repetidamente sacar de PILA y añadir a P cada operador (de la cima de PILA) hasta que se encuentre un paréntesis izquierdo.<br />
(b) Eliminar el PARÉNTESIS IZQ.(no añadir el paréntesis izquierdo a P).<br />
[Fin de condicional]<br />
6.- Si se encuentra un OPERANDO, añadirlo a P.</p>
<p>[Fin del Bucle]<br />
7.- Salir.
</p></blockquote>
<p>Los operadores siguen la siguiente jerarquía (El de arriba es el que tiene mayor jerarquía hasta abajo el que tiene la menor):<br />
^<br />
* /<br />
+ -<br />
(</p>
<p>Ejemplo:</p>
<p>                                                                      A+(X/Y)*B^C<br />
<a href='http://linkcode.files.wordpress.com/2008/04/cuadro.png'><img src="http://linkcode.wordpress.com/files/2008/04/cuadro.png" alt="Cuadro infijo a posgijo" width="371" height="215" class="aligncenter size-full wp-image-178" /></a></p>
<p>Este es un ejemplo demasiado sencillo, pero explica los pasos a seguir, y como se puede ver en la ultima fila de la tabla esta el resultado.</p>
</div>]]></content:encoded>
</item>

</channel>
</rss>
