Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rafael.t.a

[Resolvido] calcular uma função matemática

Recommended Posts

Pessoal, como faço para receber uma função ex: 2 * x^2 + 3, receber o valor de x e calcular o valor da função??

 

A função e o x são dados pelo usuário... em C...

Compartilhar este post


Link para o post
Compartilhar em outros sites

são fornecidos pelo usuário, ok, mas qual tipo de dado o usuário fornece?

 

uma string do tipo "2*x - 3*x²"??

 

Se for uma string vai ser mais difícil...

O que você ja tem pronto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem que ser uma string, ou tem outra forma de receber essa função???

 

ainda não tenho nada pronto, esse é o ponto de partida...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não vai ser nada fácil...

 

você tem algumas opções:

Converter a expresão matemática para a notação polonesa e interpretar...

Jogar a expressão numa árvore binária e interpretar...

Ou simplesmente interpretar seguindo as regras da matemática que você ja conhece. (essa última opção na minha opinião é a mais trabalhosa).

 

Como você precisa de funções matemáticas e não simples expressões, eu aconselho a você ir pela notação polonesa (POSTFIX), primeiro converta a função da notação que usamos (INFIX) para a notação polonesa (POSTFIX), guarde essa nova expressão, pois para efetuar a interpretação de uma expresão posix é muito simples e rápido.

 

Há muito material na net sobre o assunto!

Se precisar de ajuda com o código, poste ai!

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

se a função for exatamente essa q você passou n é tao complicado, agora se isso foi um exemplo do q pode vir, concordo com o Victor

Não vai ser nada fácil...

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, consegui resolver o problema para funções simples como a de cima...

 

Agora tenho outro problema. Se usuário entrar com:

ex: sin(2x) + 10*lnx

não vai dar para interpretar, pois são funções matemáticas...

 

Alguma outra idéia???

Compartilhar este post


Link para o post
Compartilhar em outros sites

E por acaso adição e subtração são funções biológicas?? o.O

 

Da pra interpretar sim! :P

 

Na minha calculadora, fiz assim:

Eu substituo essas funções por apenas uma letra, por exemplo:

sin -> s

cos -> c

ln -> n

log -> l

e assim vai...

 

Na hora de interpretar, pensa neles como operadores matemáticos de máxima prioridade, que requerem apenas um operando (aquele que vm logo a seguir deles)

 

a sua expressão seria interpretada dessa forma:

s(2*x) + 10*l(x)

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Matutando aki eu fiz de outra forma:

 

Fiz um switch para ele montar a função, ficou um código grande, mas resolveu...

 

E por acaso adição e subtração são funções biológicas?? o.O

Se você levar para o lado da genética, são funções biológicas, também não sabia, mais mentindo uma amiga minha que faz biologia me disse.

 

Valeu...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.