Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Ajuda urgente

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    C / C# Ajuda urgente

    Por favor ajuda !!
    Tenho que criar uma funcao que receba uma expressao matematica e avalie se ela esta correta, usando pilhas.

    Exemplo {[10+(8*2)/2]} e checar se a ordem dos parentes chave e colchetes bate.

    Ate agora fiz isso:

    #include<stdio.h>
    #include<stdlib.h>
    #include<strings.h>

    # define MAX 30

    typedef struct spilha{//minha estrura
    char dados[MAX];
    int topo;
    }tpilha;


    void inicializa(tpilha *p)
    {
    p -> topo = -1;//inicializa a minha pilha em -1
    }

    int funcaoCalcula(tpilha *p,char palavras[30]){
    int i,v;

    for(i=0;palavras[i] !='\0';i++){//esse trecho e fundamental pq ele conta a qtd de letra e as quebra pq se nao tivesse o sistema exibe sujeira
    if(palavras[i] == '{' || palavras[i] == '(' || palavras[i] == '['){
    p->topo++;
    p->dados[p->topo]=palavras[i];
    }//fim if
    else if(palavras[i] == '}' && p->topo == '{' || palavras[i] == ')' && p->topo == '(' || palavras[i] == ']' && p->topo == '[')
    {
    v=p->dados[p->topo];
    p->topo--;
    return 1;
    }//fim else if

    else if(palavras[i] == '}' && p->topo != '{' || palavras[i] == ')' && p->topo != '(' || palavras[i] == ']' && p->topo != '[')
    {
    return 0;
    }
    }//fim for

    }//fim funcao
    int top(tpilha p){
    return p.dados[p.topo];
    }

    void exibeCabecalho()//inicio funcao exibe cabecalho
    {
    printf("****************************************** **************************************");
    printf("* *");
    printf("* ANALIZADOR DE EXPRESSOES MATEMATICAS *");
    printf("* *");
    printf("* *");
    printf("* *");
    printf("****************************************** **************************************");
    printf("\n");
    printf("\n");
    printf("****************************************** **************************************");
    }//fim funcao cabecalho

    int main()
    {

    tpilha p1;
    char nome[30];
    int r;

    inicializa(&p1);//joga p1 para inicializacao
    exibeCabecalho();//chama funcao exibe cabecalho

    printf("DIGITE UMA EXPRESSAO PARA ANALISE !! ->");
    gets(nome);
    funcaoCalcula(&p1,nome);
    if(funcaoCalcula(&p1,nome)==0)
    {
    printf("Sua expressao esta correta !");
    }
    else if(funcaoCalcula(&p1,nome)==1){
    printf("Sua expressao esta incorreta !");
    }
    r=top(p1);
    printf("Topo:%c",r);
    getch();
    }
X
Working...
X