Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
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);
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.
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
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
Ottimo, adesso vedo se riesco a implementare il tutto
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.