Oppure

Loading
12/08/10 7:24
XBarboX
Salve,
sto creando una calcolatrice in java. Però devo ancora pensare a un buon algoritmo per la soluzione dell'equazione data in input.
Faccio subito un esempio per far capire tutti cosa ho intenzione di fare:

input: 10+(20/2)^2
output: 110

In definitiva mi servirebbe una funziona che data una stringa("1+1";) ritorna un double con il risultato dell'equazione.

Per il momento ho pensato a una funzione ricorsiva:

1)Esegui il calcolo con precedenza maggiore (Es: faccio prima la divisione e non la somma)
2)Se è rimasto ancora qualche operazione richiamami
Altrimenti risultato = ConvertiStringInDouble(parametro);

Calcola("10+20*1-10";);
Calcola("10+20-10";);
Calcola("30-10";);
Calcola("20";);
ris = ConvertiStringInDouble("20";);

Spero di essermi spiegato abbastanza bene :D

In conclusione:
Questo metodo va bene? Esiste un'altro metodo più semplice?
Insomma datemi qualche consiglio utile :rotfl:

Grazie a tutti.
aaa
12/08/10 8:54
eddiewrc
rappresenta l'espressione sotto forma di albero.
utilizza le interfacce per dare una discendenza comune ai vari operatori e alle variabili e implementa la risoluzione in maniera ricorsiva.
aaa
12/08/10 10:11
XBarboX
Scusa però non riesco a capire bene cosa intendi... come faccio a mettere un'equazione in un albero?
Potresti giusto fare un esempio?
aaa
12/08/10 10:17
nihal
Un'altra soluzione può essere quella di convertire l'espressione in Notazione Polacca Inversa, che è un tipo di notazione postfissa in cui gli operatori vengono dopo gli operandi (vedi pagina di Wikipedia). In questo modo, fai uno stack con gli operatori e uno con gli operandi, prendi l'operatore più in alto e l'operando più in alto, fai l'operazione e inserisci il risultato nello stack degli operandi e così via... Non so se mi sono spiegato 8-|
aaa
12/08/10 11:17
XBarboX
Postato originariamente da nihal:

Un'altra soluzione può essere quella di convertire l'espressione in Notazione Polacca Inversa, che è un tipo di notazione postfissa in cui gli operatori vengono dopo gli operandi (vedi pagina di Wikipedia). In questo modo, fai uno stack con gli operatori e uno con gli operandi, prendi l'operatore più in alto e l'operando più in alto, fai l'operazione e inserisci il risultato nello stack degli operandi e così via... Non so se mi sono spiegato 8-|

Ottimo, adesso vedo se riesco a implementare il tutto
aaa
12/08/10 19:53
netarrow
se vuoi un esempio con notazione polacca inversa c'è questo progetto: pierotofy.it/pages/projects/…
Ultima modifica effettuata da netarrow 12/08/10 19:53
aaa
11/12/10 22:37
gigisoft
Postato originariamente da XBarboX:

Scusa però non riesco a capire bene cosa intendi... come faccio a mettere un'equazione in un albero?
Potresti giusto fare un esempio?


Salve,
tempo fa feci un programma che, trasformando un'espressione in un albero, ne calcolava il risultato;
e' tra i miei programmi su PieroTofy, e' in Delphi, ma non dovresti trovare troppe difficolta' a comprenderne il funzionamento.
Ciao. :k:

Luigi
aaa