recf222 Posted October 2, 2012 at 09:53 AM Report #477408 Posted October 2, 2012 at 09:53 AM Boas pessoal da programação, é o seguinte estou-me a iniciar no mundo da programação, por isso estou com sérios problemas para resolver o seguinte exercício. Preciso que me ajudem a fazer um algoritmo que implemente uma máquina de calcular, permitindo que o utilizador possa resolver problemas como o seguinte exemplo: 6+(4-(5x(5+4))).
HappyHippyHippo Posted October 2, 2012 at 10:03 AM Report #477413 Posted October 2, 2012 at 10:03 AM o melhor é fazer a interpretação da string por tokens. depois de teres os tokens, podes criar uma árvore de cálculo que facilmente pode efectuar o cálculo. exemplo: 6+(4-(5x(5+4))) tokens: TOK_NUM(6), TOK_SUM, TOK_OPEN_PAR, TOK_NUM(4), TOK_SUB, TOK_OPEN_PAR, TOK_NUM(5), ... árvore (escrevi dentro das tags code para manter os "aspecto"): TOK_SUM | --------- V V TOK_NUM(6) TOK_SUB | -------- V V TOK_NUM(4) TOK_MUL | ------------ V V TOK_NUM(5) TOK_SUM | ---------- V V TOK_NUM(5) TOK_NUM(4) este tipo de árvore é facilmente interpretada. IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
pmg Posted October 2, 2012 at 10:04 AM Report #477415 Posted October 2, 2012 at 10:04 AM O que é que já fizeste? A gente ajuda-te, mas não te vamos fazer o trabalho. Explica o teu problema, com o código relevante, dizendo o que queres que ele faça e o que é que ele faz em vez do pretendido. Se for um problema de compilação mete a linha em questão e mais algumas para trás juntamente com a mensagem do compilador. What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
Sion Posted October 2, 2012 at 10:29 AM Report #477419 Posted October 2, 2012 at 10:29 AM o melhor é fazer a interpretação da string por tokens. depois de teres os tokens, podes criar uma árvore de cálculo que facilmente pode efectuar o cálculo. exemplo: 6+(4-(5x(5+4))) tokens: TOK_NUM(6), TOK_SUM, TOK_OPEN_PAR, TOK_NUM(4), TOK_SUB, TOK_OPEN_PAR, TOK_NUM(5), ... árvore (escrevi dentro das tags code para manter os "aspecto"): TOK_SUM | --------- V V TOK_NUM(6) TOK_SUB | -------- V V TOK_NUM(4) TOK_MUL | ------------ V V TOK_NUM(5) TOK_SUM | ---------- V V TOK_NUM(5) TOK_NUM(4) este tipo de árvore é facilmente interpretada. Boas Tokens? para um iniciado em programação? não é fruta muito riga? Podes começar pela ideia mais simples de encontrar o ultimo parênteses ( c/ loop) e começar a partir daí.. _________________Cenas pá.
HappyHippyHippo Posted October 2, 2012 at 10:31 AM Report #477420 Posted October 2, 2012 at 10:31 AM Tokens? para um iniciado em programação? não é fruta muito riga? Podes começar pela ideia mais simples de encontrar o ultimo parênteses ( c/ loop) e começar a partir daí.. eu avalio o nível do programador que se está a inicializar pelo nível de dificuldade dos problemas que apresenta. se ele perguntasse como saber a média de um grupo de valores, é uma coisa, uma calculadora é outra. IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
recf222 Posted October 2, 2012 at 05:39 PM Author Report #477461 Posted October 2, 2012 at 05:39 PM Boas,eu não quero que façam o trabalho por mim, apenas preciso de umas luzes para começar, também não sou propriamente um iniciante, já fiz diversos trabalhos algo complicados. Este trabalho é que não consigo resolver, pois também não sei por onde começar. O que são os tokens nunca ouvi falar desta opção em c
HappyHippyHippo Posted October 2, 2012 at 05:50 PM Report #477462 Posted October 2, 2012 at 05:50 PM tokens não são mais do que elementos de informação, não é uma estrutura da linguagem. exemplo: typedef enum { TOK_NUM, TOK_MUL } TokenType; typedef struct Token { TokenType type; double data; struct Token * left_param; struct Token * right_param; } Token; IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
recf222 Posted October 2, 2012 at 07:42 PM Author Report #477473 Posted October 2, 2012 at 07:42 PM Pois,mas eu estava a pensar em resolver com um vetor ou uma string só não estou a ver como vou implementar isto para resolver o meu problema
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now