Problema bool

di il
4 risposte

Problema bool

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 !!)

4 Risposte

  • Re: Problema bool

    Che ne dici di cambiare il while così
     while(l!=0 && !presente)
  • Re: Problema bool

    Ma si deve fermare in un caso o nell'altro,
    non nel primo e nel secondo caso
    ti trovi?
  • Re: Problema bool

    Hem ... no hai proprio ragione !


    mi ero fissato come un cretino
  • Re: Problema bool

    Ciao, ho notato che il codice é un pò ostico, vorrei suggerire alcune modifiche:
    
    int ritornoMenu;
    string nome;
    cout<<"\n Inserisci il nome da cercare\n";
    cin>>nome;
    while(l!=0){
        if(strcmp(nome,l->nome)==0)
            break;
        l=l->next;
    }
    if (l!=0){
        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
        cout<<"\nNome non presente";
    do{
        cout<<\nPremere 1 per tornare al MainMenu.";
        cin>>ritornoMenu;
    }while(ritornoMenu!=1)
    
Devi accedere o registrarti per scrivere nel forum
4 risposte