Ir para o conteúdo
Anonym

[Dúvida] Calculadora do Google (Resolvido)

Mensagens Recomendadas

Anonym    0
Anonym

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?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Rui Carlos    311
Rui Carlos

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HecKel    52
HecKel

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 :P

Se não me esquecer depois coloco aqui :P

abraços, HecKel

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HecKel    52
HecKel

Ainda bem que reabres isto :( Tinha-me esquecido do que prometi... :eek:

(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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade