PDA

Visualizza la versione completa : [C] Espressione logica memorizzata in una stringa


catyabde
08-01-2012, 19:29
Salve a tutti!
Mi serverebbe una dritta per un programma a cui sto lavorando .. Avendo memorizzato in un array di caratteri una espressione logica, come posso fare in modo che l'IF lo legge come condizione?

Esempio:



char stringa [100] = "(!a && b) || (!b && c)";
int a = 0;
int b = 0;
int c = 1;

if (stringa)
printf ("Assegnamento di verità corretto!");



Scusate la poca chiarezza, spero che qualcuno di voi riesca ad aiutarmi! :confused:

ramy89
08-01-2012, 19:51
Come condizione in che senso? Perchè devi specificare che valore vuoi dare a quella stringa, potresti considerare il valore di una stringa come tutti i suoi valori ascii sommati tra di loro (basterebbe una semplice funzione).
Se invece vuoi controllare che una stringa sia uguale ad un' altra, puoi usare strcmp (http://www.cplusplus.com/reference/clibrary/cstring/strcmp/), comunque non mi è molto chiara la tua domanda :confused:

catyabde
08-01-2012, 20:05
Il problema è che vorrei proprio che lo intendesse
if((!a && b) || (!b && c))

Per farti capire meglio: Devo fare un programma in cui l'utente digita una formula logica e che restituisca i valori delle variabili per cui quella formula è vera.
Di conseguenza pensavo di provare tutte le possibili combinazioni di valori per le variabili e controllarle con un if .. ma dato che la formula logica è digitata dall'utente non posso sapere a priori la condizione!

Spero di averti chiarito meglio il mio problema!

ramy89
08-01-2012, 20:18
Quindi 'a', 'b' e 'c' sono etichette di variabili che sono memorizzate dal programma ?

catyabde
08-01-2012, 20:25
Beh sì, speravo di trovare un modo per farlo così.
La mia difficoltà consiste nel far capire all'if che stringa non lo deve considerare come stringa, ma come condizione (sempre se si può fare :dhò: )

Intanto grazie :)

ramy89
08-01-2012, 20:34
Non sono sicuro, ma mi sa che ti tocca scandirti tutta la stringa.

MItaly
08-01-2012, 20:39
Non puoi chiedere alla if di fare una cosa del genere, il codice C++ viene compilato dal compilatore in codice macchina, per cui dopo la compilazione variabili, espressioni e tutto il resto smettono di esistere. Ti devi scrivere (o trovare già fatto in una libreria) un parser di espressioni.

catyabde
08-01-2012, 22:46
Come temevo .. purtroppo non ho un'idea sugli parser .. mi toccherà arrangiarmi :madai!?:
Grazie per la dritta comunque!

MItaly
09-01-2012, 00:04
:ciauz:

Loading