Jump to content

Resultado de cálculo em expressão aritmética em C (Árvore Binária)


wagner da silva

Recommended Posts

wagner da silva

Olá construí este código em arvore binária mas, está dando erro , apenas preciso fazê-lo apresentar um resultado, que é o numeral 20. alguém poderia me ajudar.

#include <stdio.h>

<typedef struct arv Arv;>
struct arv {
    char op;
    float valor;
<struct arv *esq, *dir;>

};

// Implementar esta função
<float avalia (Arv *a)>
{

<if ((a->esq == NULL) && (a->dir == NULL))>
return a->valor;
else{>

 < if(a->op == ‘+’) return avalia(a->esq) + avalia(a->dir)>
 < if(a->op == ‘-’) return avalia(a->esq) - avalia(a->dir)>
 < if(a->op == ‘*’) return avalia(a->esq) * avalia(a->dir)>
 < if(a->op == ‘/’) return avalia(a->esq) / avalia(a->dir)>
       }


}

<int main(void)>
{
 <   // Árvore para representar a operação: 5 * 3= 15>
    Arv no[3];           // Em vetor
    Arv op, val1, val2;  // Em variáveis

    // Vetor
    no[0].op = '*';
    no[0].esq = &no[1];
    no[0].dir = &no[2];

    no[1].valor    = 5;
    no[2].valor    = 3;

   < printf("Resultado da expressao: %.2f\n", avalia(&no[0]));>

    // Variáveis
    op.op = '*';
    op.esq = &val1;
    op.dir = &val2;

    val1.valor  = 5;
    val2.valor  = 3;

   < printf("Resultado da expressao: %.2f\n", avalia(&op));>
}

 

Edited by wagner da silva
falta de marcação no codigo
Link to post
Share on other sites
wagner da silva
8 horas atrás, HappyHippyHippo disse:

E que erro dá? 

PS : inicializa correctamente todos os nos

Vou te colocar o enunciado pra tu teres uma noção.

 

Elabore um programa em linguagem C que faça a leitura da árvore binária abaixo, executando as expressões aritméticas e imprimindo na tela o resultado do cálculo efetuado. Vale ressaltar que o resultado da expressão da árvore abaixo é o valor 20.

segue o link da arvore binaria, que tenho q fazer por ela, lembrando que os valores dos nós na figura estão corretos mas no meu caso so muda , que o nó esquerdo , o sinal é menos , e o outro sinal é de mais, ok, na figura ta ao contrario, so isso, pra justamente ter o resultado 20.

 

link da figura: http://ads-1s2010-bra-ifsp.blogspot.com/2011/05/questao-epo-arvore-binaria_6273.html

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.