Ir para conteúdo
Fórum Script Brasil
  • 0

Notação Polonesa INFIXA p/ POSFIXA


Thiago de Paula Beserra

Pergunta

Ola pessoal...

Estou quebrando a cabeca aqui pra fazer esse algoritmo.

Queria saber se esta faltando algo ai no algoritmo, se tem bug, e como mostrar o resultado na tela.

Peço a ajuda do pessoal ai. Desde já agradeço!

Grato!!!

/* programa notação polonesa */
#include <stdio.h>
#include <conio.h>
#include <string.h>
#define MAX 100

struct no
{
    char info[MAX];
    int topo;    
};

typedef struct no pilha;

pilha P;

void inicializa()
{
    P.topo = -1;   
}

int vazia()
{
    return P.topo == -1;   
}

int cheia()
{
    return P.topo == MAX - 1;   
}

void push(char x)
{
    P.topo++;
    P.info[P.topo] = x;   
}

char pop()
{
    int aux = P.info[P.topo];
    P.topo--;
    
    return aux;   
}

int converte(char x)
{
    switch(x)
    {
        case '0': return 0; break;
        case '2': return 2; break;
        case '3': return 3; break;
        case '4': return 4; break;
        case '5': return 5; break;
        case '6': return 6; break;
        case '7': return 7; break;
        case '8': return 8; break;
        case '9': return 9; break;    
    }   
}

int operacao(char op, int x1, int x2)
{
    switch(op)
    {
        case '+': return x1 + x2; break;   
        case '-': return x1 - x2; break;
        case '*': return x1 * x2; break;
        case '/': return x1 / x2; break;
    }       
}

//Inicio do programa
int main()
{
    int n, x1, x2, r;
    
    printf("Expressao: ");
    gets(P.info);     
    n = strlen(P.info);
    
    for (int i = 0; i < n - 1; i++)
    {
        if (P.info[i] == '0' || P.info[i] == '1' || P.info[i] == '2' || P.info[i] == '3' || P.info[i] == '4' || P.info[i] == '5' || P.info[i] == '6' || P.info[i] == '7' || P.info[i] == '8' || P.info[i] == '9')
            push(converte(P.info[i]));
        else
        {
            x1 = pop();
            x2 = pop();
            r = operacao(P.info[i], x1, x2);
            push(r);       
        }
    }
    getch();
}
//Fim do programa

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...