Infijo A Postfijo
Enviado por jahenu • 26 de Noviembre de 2012 • 314 Palabras (2 Páginas) • 447 Visitas
#include <stdio.h>
#include <conio.h>
#include <string.h>
#define MAXIMO 100
struct LIFO {
int t;
char a[100];
};
int main (){
char posfijo [100],infijo[100];
int i;
void in_a_pos (char *infijo,char *posfijo);
printf ("De expresion escrita correctamente en infijo.\n");
printf ("Este programa no trabaja expresiones con Parentesis \n");
gets (infijo);
i = strlen (infijo);
infijo [i] = '#';
infijo [i+1] = '\0';
in_a_pos (infijo,posfijo);
printf ("%s %s ",infijo,posfijo);
}
void in_a_pos (char *infijo,char *posfijo) {
struct LIFO pila;
int operando (char c);
int prioridad (char op1,char op2);
char tope (struct LIFO p);
void init_pila (struct LIFO *p);
int pila_vacia (struct LIFO *p);
void ins_pila (struct LIFO *p,char s);
void retira_pila (struct LIFO *p,char *s);
int i,j;
char elemento;
i=0;
j=-1;
init_pila (&pila);
while (infijo [i] != '#') {
if (operando (infijo [i]) )
posfijo [++j] = infijo [i++];
else {
while (!pila_vacia (&pila) &&
prioridad (tope (pila),infijo [i] ) ) {
retira_pila (&pila,&elemento);
posfijo [++j] = elemento;
}
ins_pila (&pila,infijo [i++]);
}
}
while (!pila_vacia (&pila) ) {
retira_pila (&pila,&elemento);
posfijo [++j] = elemento;
}
posfijo [++j] = '\0';
}
int operando (char c) {
return ( c != '+' &&
c != '-' &&
c != '*' &&
c != '/' &&
c != '^' );
}
static int m[5][5] = {
{ 1,1,0,0,0 },
{ 1,1,0,0,0 },
{ 1,1,1,1,0 },
{ 1,1,1,1,0 },
{ 1,1,1,1,1 }
...