Salve vi posto una procedura che è parte di un programmino che sto sviluppando
int ritornoMenu;
stringa nome;
cout<<"\n Inserisci il nome da cercare\n";
cin>>nome;
bool presente = false;
while(l!=0||presente){
if(strcmp(nome,l->nome)==0){
presente=true;
cout<<"\n Nome presente \n";
cout<<"\nScheda di "<<l->nome<<" "<<l->cognome<<"\n";
cout<<"\nNome = ";
cout<<l->nome<<endl;
cout<<"\nCognome = ";
cout<<l->cognome<<endl;
cout<<"\nAnni = ";
cout<<l->eta<<endl;
cout<<"\nTipologia di visita = ";
cout<<l->visita<<endl;
}
else{
presente=false;
}
l=l->next;
}
if(!presente)
cout<<"\nNome non presente";
cout<<"\nPremere 1 per tornare al menu\n";
cin>>ritornoMenu;
if(ritornoMenu==1)
esci=false;
}
non capisco perchè in ogni caso mi mostra il cout finale
if(!presente)
cout<<"\nNome non presente";
logicamente dovrebbe funzionare così:
bool presente = false;
fin quando non finisce la lista o presente è vero**
se trovi il nome : presente = true
altrimenti :presente = false
il problema è che quando trova il nome, comunque continua la verifica, non esce dal ciclo **
la cosa strana è che se metto la condizione ** con !presente, la cosa funziona, ma il programma va in errore di sistema, anche se secondo logica non dovrebbe andare (secondo la MIA logica !!)