Calcolo espressione arimetica Java

di Anonimizzato22886 il
8 risposte
Salve gente, sono uno studente di informatica del 4 anno e devo sviluppare un codice in Java per scuola che,
data un'espressione aritmetica (es. (3*4):2+11*(4:2)-8 ) mi restituisca il risultato tenendo conto delle parentesi
e della priorità degli operatori(* e : si svolgono prima di + e -).

Sono giorni che provo a scrivere un'algorimo ma non riesco propio a buttare giu nulla di concreto sembra essere impossibile.. ho bisogno di un'idea.
Se qualcuno avesse un idea di come fare o cosa devo studiare per riuscire a svilupparlo mi salverebbe davvero la vita.

Vi ringrazio in anticipo.. Tiziano

8 Risposte

  • Hai provato a fare una ricerca in inglese del tipo "java evaluate math expression" ?
  • oregon ha scritto:


    Non riesci proprio perché non hai affrontato l'argomento in teoria. E' un esercizio del professore o lo hai scelto tu? Non è banale.

    Si tratta di scrivere un "parser ricorsivo delle espressioni", tenendo presente la distinzione tra

    Espressione
    Termine
    Fattore
    Numero
    Cifra

    Ad esempio, leggi

    http://blog.roboblob.com/2014/12/16/recursive-descent-parser-for-arithmetic-expressions-with-real-numbers/

    Si, è un esercizio del professore.. è un sacco complicato. Però diamine non voglio presentarmi senza nulla lunedi e neanche voglio copiare il codice di qualcun altro su stackoverflow e altri..

    Ho letto piu volte l'articolo che mi hai mandato mi ha davvero aiutato a darmi un idea piu astratta e completa del problema grazie davvero.
    Ma dando un occhiata al sorgente completo alla fine è veramente tanta roba la maggior parte sono istruzioni che non ho mai visto.
    Ci potrà essere un modo piu semplice per realizzare questa calcolatrice magari in modo iterativo e non ricorsivo?

    Grazie dell' aiuto.
  • 0) NON E' UN SACCO COMPLICATO: e' estremamente banale. Per uno del QUARTO anno, questa robbbba dovrebbe essere normale amministrazione

    1) NO, non c'e' un modo "PIU' SEMPLICE", QUESTO e' il modo SEMPLICE

    2) NO, non c'e un modo ITERATIVO perche' per LORO NATURA le espressioni sono RICORSIVE

    3) NON E' tanta roba: ci sono funzioncine in croce.

    Se al QUARTO anno ti spaventi per quattro righe di codice messe in croce, che cosa farai quandro dovrai mettere le mani su decine/centinaia di migliaia di righe di codice?

    Ti butti dalla finestra?

    Cambi lavoro?

    Sei sicuro che informatica faccia per te?
  • Si, io amo l'informatica specialmente la programmazione, ma sono nuovo alla programmazione a oggetti ho studiato un anno C ed ora gia mi trovo spaesato con un linguaggio oop poi come ha detto oregon non è un esercizio banale..
  • Probabilmente il prof si accontenterà dell'impostazione, non sarà necessario un codice funzionante, d'altra parte non ha molto senso rifare daccapo e peggio cose che esistono già fatte.
    Mi sembra che in questo caso la programmazione ad oggetti c'entri poco.
  • @patel, SAPER fare qualcosa vuol dire CAPIRE come si fa, CAPIRE in quali contesti puo' esser utile, CAPIRE com potrebbe essere migliorato.

    E magari, in un certo contesto, serve QUALCOSA DEL GENERE, ma NON ESATTAMENTE QUELLO, quindi, saperlo fare vuol dire essere in grado di fare quel qualcosa del genere
  • I prof non sono mica nati ieri, sanno benissimo che esiste google e stackoverflow, quindi proporre un lavoro senza averlo capito è un suicidio
Devi accedere o registrarti per scrivere nel forum
8 risposte