Jump to content

Recommended Posts

Posted

Boas,

Eu estive a pensar como funciona a calculadora do google, e cheguei a isto:

se no campo de texto tem "+" então,

tudo que está antes do "+" + tudo o que está depois do "+"

mas depois pensei, será a maquina do google tão complexa? Já que numa linha, se faz uns 20 cálculos ao mesmo tempo e depois ainda as regras da multiplicação, divisão (etc...)

então pergunto o sistema do google funciona + - assim?

Posted

está a perguntar como é que o Google faz o parsing de uma expressão numérica?

não me parece que seja assim, normalmente usam-se gramática para fazer o parsing deste tipo de coisas (tal como para um compilador fazer o parsing de um programa). depois existem vários algoritmos (alguns um pouco complexo) que resolvem o problema de forma relativamente eficiente.

caso queiras investigar um pouco mais sobre o assunto...

o que é uma gramática: http://en.wikipedia.org/wiki/Context-free_grammar

links para vários tipos de parsers: http://en.wikipedia.org/wiki/Parsing#Examples_of_parsers

Posted

Já vi vários algoritmos na resolução de equações deste tipo e curiosamente vi sempre com base nas gramáticas tal como o Rui Carlos referiu, mas um que me deixou bastante intrigado foi um de operações infixas, cujos operadores aparecem antes dos elementos operandos...

Sobre a tua pergunta em concreto..., vou tentar encontrar o programa em PROLOG que fiz numa aula prática que mostra bem como resolver equações destas 😛

Se não me esquecer depois coloco aqui 😛

abraços, HecKel

Posted

Ainda bem que reabres isto 😞 Tinha-me esquecido do que prometi... ?

(isto é PROLOG)

polinomio(N) :- number(N), !.
polinomio(X) :- atom(X), !.
polinomio(-P) :- !, polinomio(P).
polinomio(P1+P2) :- !, polinomio(P1), polinomio(P2).
polinomio(P1-P2) :- !, polinomio(P1), polinomio(P2).
polinomio(P1*P2) :- !, polinomio(P1), polinomio(P2).
polinomio(P/C) :- !, number(C), polinomio(P).
polinomio(P^N) :- !, integer(N), N >= 0, polinomio(P).

Apenas verifica se a expressão é um polimónio..., não faz o seu cálculo, mas acho que dá para ter uma ideia de como funciona...

abraços, HecKel

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.