Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [C] Espressione logica memorizzata in una stringa

    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:

    codice:
    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!

  2. #2
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    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, comunque non mi è molto chiara la tua domanda

  3. #3
    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!

  4. #4
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Quindi 'a', 'b' e 'c' sono etichette di variabili che sono memorizzate dal programma ?

  5. #5
    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 )

    Intanto grazie

  6. #6
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Non sono sicuro, ma mi sa che ti tocca scandirti tutta la stringa.

  7. #7
    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.
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Come temevo .. purtroppo non ho un'idea sugli parser .. mi toccherà arrangiarmi
    Grazie per la dritta comunque!

  9. #9
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.