Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Risolvere una espressione
Forum - C# / VB.NET - Risolvere una espressione

Avatar
I)eathBringer (Normal User)
Pro


Messaggi: 127
Iscritto: 11/08/2008

Segnala al moderatore
Postato alle 16:17
Lunedì, 11/08/2008
Ciao a tutti!
Sto creando un programma in vb.net il quale, inserendo un'espressione numerica(per esempio: "(1+2)/3=") la converta in linguaggio di codice e che quindi sia in grado di risolverla (seguendo l'esempio precedente dovrebbe dare come risultato 1).
Devo programmarmi ogni singola operazione o esiste un modo per risolvere l'espressione(utilizzando anche variabili) con pochi comandi?
Grazie in anticipo!

Ultima modifica effettuata da I)eathBringer il 11/08/2008 alle 16:21
PM Quote
Avatar
punkettone90 (Member)
Expert


Messaggi: 279
Iscritto: 16/05/2007

Segnala al moderatore
Postato alle 18:04
Lunedì, 11/08/2008
a prima vista ti consiglierei di usare la ricorsione :k:

PM Quote
Avatar
I)eathBringer (Normal User)
Pro


Messaggi: 127
Iscritto: 11/08/2008

Segnala al moderatore
Postato alle 19:36
Lunedì, 11/08/2008
Scusa ma potresti farmi un esempio?

PM Quote
Avatar
Mte90 (Member)
Guru


Messaggi: 1144
Iscritto: 25/03/2008

Segnala al moderatore
Postato alle 20:25
Lunedì, 11/08/2008
direi che devi usare le regex per elaborare i dati ma non finisci più...

PM Quote
Avatar
I)eathBringer (Normal User)
Pro


Messaggi: 127
Iscritto: 11/08/2008

Segnala al moderatore
Postato alle 21:18
Lunedì, 11/08/2008
Scusate ma come dovrei impostare il codie per fare ciò che ho chiesto?

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 11:22
Martedì, 12/08/2008
Ti suggerisco di usare la Notazione Polacca. E' un tipo di notazione usata per risolvere le espressioni e pensata apposta per essere "interpretata" da codice. Essa consiste nel posizionare l'operatore prima e i due operandi dopo. Seguendo questa semplice regola, l'espressione:

(1 + 2 ) / 3

diventa:

/ + 1 2 3

Il tuo programma leggerà "/", quindi dovrà prendere due operandi per fare la divisione, ma quello che viene dopo è un +, perciò significa che il primo operando è il risultato di un'altra operazione, un'addizione. Quindi prenderà il +, i due numeri successivi (1 e 2), li sommerà, e poi dividerà il risultato per 3.

Per passare dalla notazione normale a quella polacca devi per forza usare le espressioni regolari.
Ma, usando le espressioni regolari, puoi anche direttamente valutare le espressioni con una funzione ricorsiva, come suggerito prima. Se hai il libro di Balena, trovi un esempio a pag.576, altrimenti consulta la mia guida, al capitolo Espressioni Regolari:
http://totem.altervista.org/guida/versione2

PM Quote