Perche' questo codice non esce mai dal ciclo?
Dove mi sto perdendo?
codice:char conferma; do { std::cout<<"\nVuoi veramente uscire? s = si n = no\n"; std::cin>>conferma; }while(conferma != 's' || conferma != 'n');
Perche' questo codice non esce mai dal ciclo?
Dove mi sto perdendo?
codice:char conferma; do { std::cout<<"\nVuoi veramente uscire? s = si n = no\n"; std::cin>>conferma; }while(conferma != 's' || conferma != 'n');
C'è qualche conflitto nella logica di funzionamento di quella condizione.
In generale, a prescindere dal linguaggio di programmazione, l'operatore OR logico (||) interrompe la verifica se la prima espressione risulta essere vera. Per cui non ci sarà bisogno di verificare la seconda espressione dal momento che il risultato sarà comunque vero.
Esaminiamo quindi quella condizione.
La prima espressione è conferma != 's'. In questo caso sarà chiaramente valutato il valore di conferma, se non è uguale ad 's' allora l'intera condizione è vera, per cui il ciclo continua.
Supponiamo invece che conferma sia uguale ad 's', quindi sarà valutata la seconda espressione conferma != 'n'. Questa espressione risulterà ovviamente vera in questo caso, per cui il ciclo continua.
Come puoi vedere, il ciclo continuerà comunque in qualsiasi caso.
Dovrai quindi rivedere quella condizione. Sinceramente non ho capito però quando vuoi che si esca dal ciclo.
Installa Forum HTML.it Toolset per una fruizione ottimale del Forum
Dovrai usare && al posto di ||
No MP tecnici (non rispondo nemmeno!), usa il forum.
Ringrazio nuovamente chi mi ha dato una mano, ma se avessi preso un angolino di pezzo di carta, avessi messo nero su bianco il ragionamento fatto da KillerWorm, che qui riporto...
non avrei perso xxx ore (mi vergogno a mettere quanto tempo ho realmente perso in prove, riprove, modifiche, ecc...).
Grazie ancora.
P.S. : ma perche' l'emoticon 'Mannaggia li pescetti' non mi viene visualizzata? Grazie