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

ajuda em c


newnoob

Pergunta

3 respostass a esta questão

Posts Recomendados

  • 0
ainda naome sobro tempo pratenta implementa

agora consegui faze mais o menos o que eu quero

#include <stdio.h>
#include <stdlib.h>
#define STACKSIZE 100
#define MAX[100]


struct stack{//definição da estrutura//    
    char S[STACKSIZE];
    int top;
}elements;
    
    //função para verificar se a pilha não esta vazia//
    empty (*ps){
        if (ps->topo==-1){
            return true;
        }
        else {
            return false;
        }
    }
    
    pop(*p){//função para verificar se a pilha não esta vazia//
        if(empty(ps)){
        printf ("underflow");
        exit(1);}
        return (ps->elements[ps->top--);
    }
    
    push(*stack,int top)//função para verificar se a pilha não esta cheia//
    {
        if(stack->top == STACKSIZE 1){
            printf ("\nNao e possivel:PILHA CHEIA(OVERFLOW)!");
            exit (1);
        }else{
            stack->top++;
            stack->elements[stack->top].top);
            return;
        }
    }
    
    stacktop(pstack)//função de retorno de elementos da pilha//
    {
        if(empty(stack){
            printf ("\nPilha vazia!");
            exit(1);
        }
        else{
            return pstack -> elements[pstack->top];
        }
    }
    
    float eval(exp)// função de retorno posfixa
    {
        int c,position;
        float operando1,operando2,value;
        struct stack opndstack;
        opndstack.top=-1;
        for (position = 0(c = exp[position]) != '', position ++){
            if (isdigit©)
            {
                push (&opndstack,(float)(c-'0'));
            }else
            {
                operando2 = pop(&opndstack);
                operando1 = pop(&opndstack);
                value = operando (c,operando1,operando2);
                push(&opndstack,value);
                return pop (opndstack)
            }
        }
    } 
        
    
    int main()// inicio do programa principal//
    {
        char exp[MAX];
        int position = 0;
        while ((exp[position++] = getchar())!='\n');
        exp (--position)= '';
        printf ("\n%s%s","A expressao posfixaoriginal e", exp);
        printf ("\n%f\n", eval(exp)); 
    system ("pause");
    }

alem dele não estar funcionando falta fazer duas coisas que eu não to conseguindo e queria ver se algum pode me ajuda

falta fazer uma função que transforma de infixa praprefixa e uma funcão com switch, case para ordem de precedenci '+','-','/','*','$'

se alguém puder dizer onde esta meu erro no programa e me dar uma ajuda nessas duas funções eu agradeço

valeu

Editado por kuroi
Adicionar tag CODE
Link para o comentário
Compartilhar em outros sites

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,4k
×
×
  • Criar Novo...