Despues de tanto esfuerzo lo pude hacer me lo calificaron y ps para los que no quieran estar matándose como yo les dejo el código import java.util.Scanner;
import javax.swing.JOptionPane;
public class AnalizadorIJ{
public static char x[];
public static String invertida,postfija,nueva
; public static char a[];
public static char pila[];
public static int tope,i,cont,j,a1,a2,k,l,n,m;
{
invertida="";
nueva="";
x=a.toCharArray();
for(int p=x.length-1;p>=0;p--)
{
invertida
=invertida
+String.
valueOf(x
[p
]); }
x=invertida.toCharArray();
for (int p=0;p<x.length;p++)
{
if (x[p]==')')
{x[p]='(';
nueva
=nueva
+String.
valueOf(x
[p
]);} else if(x[p]=='(')
{x[p]=')';
nueva
=nueva
+String.
valueOf(x
[p
]);} else
nueva
=nueva
+String.
valueOf(x
[p
]); }
return(nueva);
}
{
entrefija="("+entrefija+")";
tope=-1;
postfija="";
pila=new char[250];
a=entrefija.toCharArray();
tope=Cabecera.pushPila(pila,tope,'#');
for(i=0;i<a.length;i++)
{
if(a[i]=='(')
{
tope=Cabecera.pushPila(pila,tope,a[i]);
}
else if(a[i]==')')
{
cont=tope;
while(pila[cont]!='(')
{
postfija
=postfija
+String.
valueOf(pila
[cont
]); tope=Cabecera.popPila(pila,tope);
cont--;
}
if (tope!=0)
tope=Cabecera.popPila(pila,tope);
}
else if(Cabecera.evaluar(a[i])==4)
{
postfija
=postfija
+String.
valueOf(a
[i
]); }
else
{
cont=tope;
while(pila[cont]!='('&&Cabecera.evaluar(pila[cont])>=Cabecera.evaluar(a[i]))
{
postfija
=postfija
+String.
valueOf(pila
[cont
]); tope=Cabecera.popPila(pila,tope);
cont--;
}
tope=Cabecera.pushPila(pila,tope,a[i]);
}
}
return(postfija);
}
public static void tercerpa
(String cade
) {
System.
out.
println(invierte
(pofija
(invierte
(cade
))));
}
public static void main
(String args
[]) {
AnalizadorIJ uno=new AnalizadorIJ();
Scanner ent
=new Scanner
(System.
in); System.
out.
println("Inserta la exprecion en infijo: "); System.
out.
println("En prefijo es: "); uno.tercerpa(pre);
}
}
import java.util.LinkedList;
import java.util.*;
public class AnalizadorIP{
private Pila pila;
public AnalizadorIP() {
Operador ope;
ope=new Operador("^",4,5);PROCEDENCIA.add(ope);
ope=new Operador("%",3,4);PROCEDENCIA.add(ope);
ope=new Operador("*",2,2);PROCEDENCIA.add(ope);
ope=new Operador("/",2,2);PROCEDENCIA.add(ope);
ope=new Operador("+",1,1);PROCEDENCIA.add(ope);
ope=new Operador("-",1,1);PROCEDENCIA.add(ope);
ope=new Operador("(",0,5);PROCEDENCIA.add(ope);//inicial y maximo
pila=new Pila();
}
public boolean valExpre
(String expre
){ Pila p=new Pila();
for(int i=0;i<expre.length();i++){
char x=expre.charAt(i);
if(x=='(' | x=='[' | x=='{')
p.apilar(x);
else{
if(x==')' | x==']' | x=='}')
{ if(p.vacia()==true) return false;
char c=p.desApilar().toString().charAt(0);
if( (x==')' & c!='(') | (x==']' & c!='[') | (x=='}' & c!='{'))
return false;
}
}
}
return p.vacia();
}
if(valExpre(expre)==false) return null;
for(int c=0;c<expre.length();c++){
char x;int hcer=-1;
x=expre.charAt(c);
if(operador(x)==true) hcer=323;//si es operador direcciona al caso
if(x==')' ) hcer=324;//si es de cierre,
switch(hcer){
case 323:
while(pila.vacia()==false) {
if(pdp(pila.tope.datos)>=pfp(x))
expPostfija.add(pila.desApilar());
else
break;
}
pila.apilar(x);
break;
case 324:
while(pila.tope.datos.toString().charAt(0)!='(' )
expPostfija.add(pila.desApilar());
pila.desApilar(); //para q ignore el parentesis (
break;
default:
expPostfija.add(x);
}
}
while(pila.vacia()==false)
expPostfija.add(pila.desApilar());
return cnvCad(expPostfija);
}
public boolean operador
(Object c
) { for(int i=0;i<PROCEDENCIA.size();i++){
Operador op=(Operador)PROCEDENCIA.get(i);
if(op.OPE.equals(c.toString())) return true;
}
return false;
}
for(int i=0;i<PROCEDENCIA.size();i++){
Operador op=(Operador)PROCEDENCIA.get(i);
if(op.OPE.equals(c.toString())) return op.PDP;
}
return -1;
}
for(int i=0;i<PROCEDENCIA.size();i++){
Operador op=(Operador)PROCEDENCIA.get(i);
if(op.OPE.equals(c.toString())) return op.PFP;
}
return -1;
}
for(int i=0;i<ls.size();i++)
cad=cad+ls.get(i).toString().charAt(0);
return cad;
}
{ for(int i=0;i<ls.size();i++)
System.
out.
print(ls.
get(i
).
toString().
charAt(0)); }
public static void main
(String Args
[]) {
Scanner ent
=new Scanner
(System.
in); System.
out.
println("Inserte la exprecion en infijo: "); AnalizadorIP AS = new AnalizadorIP();
System.
out.
println("La sentencia es: "+AS.
valExpre(expresion
)); String expPostfija
=AS.
aPostfija(expresion
); if(expPostfija==null)
System.
out.
println("Expresion invalida..."); else
System.
out.
println(" En PostFijo es: "+expPostfija
); }
}[code=java]
import javax.swing.JOptionPane;
class Cabecera
{
public static int eva;
public static int pushPila(char pila[],int tope,char dato)
{
if (tope<pila.length)
{
tope++;
pila[tope]=dato;
return (tope);
}
else
JOptionPane.
showMessageDialog(null,
"pila llena ... OverFlow"); return (tope);
}
public static int popPila(char pila[],int tope)
{
if (tope!=-1)
{
pila[tope]=0;
tope--;
return (tope);
}
else
JOptionPane.
showMessageDialog(null,
"Pila vacia ... underflow"); return (tope);
}
public static int ver(char pila[],int tope)
{
int i;
for(i=tope;i>=0;i--)
{
s+="posicion "+i+" = "+pila[i]+'\n';
}
return tope;
}
public static int evaluar(char a)
{
if (a=='+'||a=='-')
{
eva=1;
}
else if(a=='/'||a=='*')
{
eva=2;
}
else if (a=='^')
{
eva=3;
}
else if (a=='('||a==')')
eva=5;
else
{
eva=4;
}
return eva;
}
}
public class Nodo{
/*****Propiedades**************/
public Nodo siguiente;
public Nodo anterior;
/*****Constructores************/
datos =valor;
siguiente =anterior= null;
}
/*****Inicio***METODOS*********/
public Object getElemento
(){return datos
;} public Nodo getSig(){return siguiente;}
public Nodo getAnt(){return anterior; }
/*****Fin******METODOS*********/
}
public class Operador
{ public String OPE
;//operador que se esta representando public int PDP;//prioridad dentro de la pila
public int PFP;//prioridad fuera de la pila
public Operador
(String ope,
int pd,
int pf
){ OPE=ope;
PDP=pd;
PFP=pf;
}
}
public class Pila{
public Nodo tope;
public Pila(){
tope=null;
}
public boolean vacia (){
return tope == null;//==hace la compararcion de primernodo con null
}
public void apilar
(Object dato
){ Nodo p=new Nodo(dato);
p.datos=dato;
p.siguiente=tope;
tope=p;
}
//if(vacia()) return ' ';
Nodo p=tope;
dat=p.datos;
tope=tope.siguiente;
p=null;
return dat;
}
public void imprimir(){
if (vacia()){
System.
out.
println("La pila esta vacia..."); }
else{
Nodo Actual=tope;
do{
System.
out.
print(Actual.
getElemento().
toString()+" "); Actual=Actual.siguiente;
}while(Actual != null);
System.
out.
println();//imprime un salto de linea }
}
/* public static void main(String[]args){
Pila p=new Pila();
p.apilar("1");
p.apilar("2");
p.apilar("3");
p.apilar("4");
p.imprimir();
p.desApilar();
p.imprimir();*/
}
import javax.swing.JOptionPane;
import java.awt.*;
class Procesos
{
public static String postfija
; public static char a[],b[],c[],d[],e[],f[];
public static char pila[],pila1[],pila2[];
public static int tope,i,cont,j,a1,a2,k,l,n,m;
public static boolean t=false,lp;
{
entrefija="("+entrefija+")";
tope=-1;
postfija="";
pila=new char[250];
a=entrefija.toCharArray();
tope=Cabecera.pushPila(pila,tope,'#');
for(i=0;i<a.length;i++)
{
if(a[i]=='(')
{
tope=Cabecera.pushPila(pila,tope,a[i]);
dos.
addItem(String.
valueOf(a
[i
])); cinco.
addItem(String.
valueOf(a
[i
])); }
else if(a[i]==')')
{
cont=tope;
while(pila[cont]!='(')
{
postfija
=postfija
+String.
valueOf(pila
[cont
]); tres.
addItem(String.
valueOf(pila
[cont
])); seis.
addItem(String.
valueOf(pila
[cont
])); tope=Cabecera.popPila(pila,tope);
cinco.remove(cont);
cont--;
}
if (tope!=0)
cinco.remove(tope);
tope=Cabecera.popPila(pila,tope);
}
else if(Cabecera.evaluar(a[i])==4)
{
tres.
addItem(String.
valueOf(a
[i
])); seis.
addItem(String.
valueOf(a
[i
])); postfija
=postfija
+String.
valueOf(a
[i
]); }
else
{
cont=tope;
while(pila[cont]!='('&&Cabecera.evaluar(pila[cont])>=Cabecera.evaluar(a[i]))
{
tres.
addItem(String.
valueOf(pila
[cont
])); seis.
addItem(String.
valueOf(pila
[cont
])); postfija
=postfija
+String.
valueOf(pila
[cont
]); tope=Cabecera.popPila(pila,tope);
cinco.remove(cont);
cont--;
}
dos.
addItem(String.
valueOf(a
[i
])); cinco.
addItem(String.
valueOf(a
[i
])); tope=Cabecera.pushPila(pila,tope,a[i]);
}
uno.
addItem(String.
valueOf(a
[i
])); cuatro.
addItem(String.
valueOf(a
[i
])); }
letra.setText(postfija);
}
public static boolean vercadena
(String pp
) {
if(balanceo(pp)==true&&entrefija(pp)==true)
{
b=pp.toCharArray();
for(j=0;j<b.length;j++)
{
if (b[j]=='A'||b[j]=='B'||b[j]=='C'||b[j]=='D'||b[j]=='E'||b[j]=='F'||b[j]=='G'||b[j]=='H'||b[j]=='I'||b[j]=='J'||b[j]=='K'||b[j]=='L'||b[j]=='M'||b[j]=='N'||b[j]=='Ñ'||b[j]=='O'||b[j]=='P'||b[j]=='Q'||b[j]=='R'||b[j]=='S'||b[j]=='T'||b[j]=='U'||b[j]=='V'||b[j]=='W'||b[j]=='X'||b[j]=='Y'||b[j]=='Z'||b[j]=='+'||b[j]=='-'||b[j]=='*'||b[j]=='/'||b[j]=='^'||b[j]=='('||b[j]==')')
{
t=true;
}
else
{
j=b.length;
t=false;
}
}
}
return t;
}
public static boolean balanceo
(String cadena
) {
c=cadena.toCharArray();
for(k=0;k<c.length;k++)
{
if(c[k]=='(')
a1=a1+1;
else if (c[k]==')')
a2=a2+1;
}
if (a1==a2)
return true;
else
return false;
}
public static boolean entrefija
(String algo
) {
d=quita(algo).toCharArray();
for(l=1;l<d.length-1;l++)
{
if (signo(d[l-1])==1&&signo(d[l])==2&&signo(d[l+1])==1)
{
lp=true;
}
else if (signo(d[l-1])==2&&signo(d[l])==1&&signo(d[l+1])==2)
{
lp=true;
}
else
{
l=d.length-1;
lp=false;
}
}
return lp;
}
{
e=a.toCharArray();
for( n=0;n<e.length;n++)
{
if (Cabecera.evaluar(e[n])!=5)
}
return ha;
}
public static int signo(char al)
{
int f;
if (al=='*'||al=='/'||al=='+'||al=='-'||al=='^')
f=2;
else
f=1;
return f;
}
}
[/code]