En c pasar de infija a postfija
Hola a todos. Estoy deseperada pues no doy hecho este programa. Os agradecería muchisisisimo que me ayudarias. Si teneis ya hecho alguno pues aun mejor.
Gracias y os necesito
Gracias y os necesito
De que programa hablas? infija? postfija? Se supone que es de dominio publico? Quizas si te explicas mas alguien te pueda ayudar
esto es pichanga ya lo tengo hecho.Es tan solo usar pilas y listas,pueden ser circulares, o simplemente una abierta,debes informarte sobre la notacion polaca inversa o notacion posfija, es facil.Para que la quieres........
# include<iostream.h>
# include<string.h>
# include<conio.h>
void main(){
clrscr();
char epos[1000],pila[1000],*ei;
char sim;
int i=0,tope=0,f=0,a,jerarquia,jerarquia1;
gotoxy(5,5);cout<<" Expresion Infija : ";cin>>ei;
a=strlen(ei);
for(i=0;i<a;i++){
sim=ei[i];
if(sim!='*' && sim!='/' && sim!='+' && sim!='-' && sim!='^' && sim!='('&& sim!=')'){
epos[f]=sim; f++;
}
if(sim=='('){
tope++;
pila[tope]=sim;
}
if(sim==')'){
while(pila[tope]!='('){
epos[f]=pila[tope];
f++; tope--;
}
tope--;
}
if(sim=='+' || sim=='-' || sim=='*' || sim=='/' || sim=='^'){
if(tope>0){
if(sim=='+' || sim=='-'){
jerarquia=0;
}
if(sim=='*' || sim=='/'){
jerarquia=1;
}
if(sim=='^'){
jerarquia=2;
}
if(pila[tope]=='+' || pila[tope]=='-'){
jerarquia1=0;
}
if(pila[tope]=='*' || pila[tope]=='/'){
jerarquia1=1;
}
if(pila[tope]=='^'){
jerarquia1=2;
}
while(tope>0 && pila[tope]!='(' && jerarquia<=jerarquia1){
epos[f]=pila[tope]; f++; tope--;
if(pila[tope]=='+' || pila[tope]=='-'){
jerarquia1=0;
}
if(pila[tope]=='*' || pila[tope]=='/'){
jerarquia1=1;
}
if(pila[tope]=='^'){
jerarquia1=2;
}
}
tope++;
pila[tope]=sim;
}
if(tope==0 || pila[tope]=='('){
tope++;
pila[tope]=sim;
}
}
}
while(tope>0){
epos[f]=pila[tope]; f++; tope--;
}
gotoxy(5,7);cout<<" Expresion Posfija : ";
for(i=0;i<f;i++){
cout<<epos[i];}
gotoxy(5,9);cout<<"Alumno: Samuel Elias grupo 2-2 escuela de informatica C.";
getch();
}
# include<string.h>
# include<conio.h>
void main(){
clrscr();
char epos[1000],pila[1000],*ei;
char sim;
int i=0,tope=0,f=0,a,jerarquia,jerarquia1;
gotoxy(5,5);cout<<" Expresion Infija : ";cin>>ei;
a=strlen(ei);
for(i=0;i<a;i++){
sim=ei[i];
if(sim!='*' && sim!='/' && sim!='+' && sim!='-' && sim!='^' && sim!='('&& sim!=')'){
epos[f]=sim; f++;
}
if(sim=='('){
tope++;
pila[tope]=sim;
}
if(sim==')'){
while(pila[tope]!='('){
epos[f]=pila[tope];
f++; tope--;
}
tope--;
}
if(sim=='+' || sim=='-' || sim=='*' || sim=='/' || sim=='^'){
if(tope>0){
if(sim=='+' || sim=='-'){
jerarquia=0;
}
if(sim=='*' || sim=='/'){
jerarquia=1;
}
if(sim=='^'){
jerarquia=2;
}
if(pila[tope]=='+' || pila[tope]=='-'){
jerarquia1=0;
}
if(pila[tope]=='*' || pila[tope]=='/'){
jerarquia1=1;
}
if(pila[tope]=='^'){
jerarquia1=2;
}
while(tope>0 && pila[tope]!='(' && jerarquia<=jerarquia1){
epos[f]=pila[tope]; f++; tope--;
if(pila[tope]=='+' || pila[tope]=='-'){
jerarquia1=0;
}
if(pila[tope]=='*' || pila[tope]=='/'){
jerarquia1=1;
}
if(pila[tope]=='^'){
jerarquia1=2;
}
}
tope++;
pila[tope]=sim;
}
if(tope==0 || pila[tope]=='('){
tope++;
pila[tope]=sim;
}
}
}
while(tope>0){
epos[f]=pila[tope]; f++; tope--;
}
gotoxy(5,7);cout<<" Expresion Posfija : ";
for(i=0;i<f;i++){
cout<<epos[i];}
gotoxy(5,9);cout<<"Alumno: Samuel Elias grupo 2-2 escuela de informatica C.";
getch();
}
