ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Infijo A Postfijo

jahenu26 de Noviembre de 2012

314 Palabras (2 Páginas)471 Visitas

Página 1 de 2

#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 }

};

int prioridad (char op1,char op2) {

int i,j;

switch (op1) {

case '+' : i = 0; break;

case '-' : i = 1; break;

case '*' : i = 2; break;

case '/' : i = 3; break;

case '^' : i = 4; break;

}

switch (op2) {

case '+' : j = 0; break;

case '-' : j = 1; break;

case '*' : j = 2; break;

case '/' : j = 3; break;

case '^' : j = 4; break;

}

return (m [i][j]);

}

char tope (struct LIFO p){

return ( p.a [p.t -1] );

}

void init_pila

...

Descargar como (para miembros actualizados) txt (3 Kb)
Leer 1 página más »
Disponible sólo en Clubensayos.com