Schleife... mit Bedingung.



  • Hallo,

    ich stehe gerade ein bischen auf dem schlauch...

    Habe eine schleife die ein Array durchläuft und prüft ob ein gewisser wert vorhanden ist.

    for( int i=0; i<pBS->clientNumber(); i++ ) {
         if(data==pUsers[i]->getUser_ID()){
                pUsers[i]->registerd=true;
                break;
         }
    }
    

    wenn der wert nicht im array ist soll eine Funktion ausgeführt werden. Wie mache ich das jetzt?



  • Du könntest am Ende der Schleife abfragen, welchen Wert i schließlich hat (OK, mit einer Schleifen-lokalen Variablen geht das nicht, aber das ist kein größeres Problem):

    int i;
    for(i=0;i<pBS->ClientNumber();++i)
    {
      if(data==pUsers[i]->getUser_ID()){
        pUsers[i]->registerd=true;
        break;
      }
    }
    if(i==pBS->ClientNumber())
      cout<<"Client nicht gefunden"<<endl;
    

    Die Alterantive wäre es, den richtigen Eintrag mit find()/find_if() zu suchen und dessen Rückgabewert auszuwerten.



  • einfache möglichkeit ist sowas:

    bool found = false; // wurde es gefunden?
    for(int i = 0; i < xx; i++)
    {
      if(irgendwas)
      {
        found = true;
        break;
      }
    }
    
    if(!found)
      Machwas();
    

    vielleicht geht bei dir auch std::find, kA wie deine datensturktur ist, dann ist das eleganter.

    edit: mist ein paar sekunden 🙂



  • mal davon ausgegangen, dass registered zuvor den wert false hatte einfach nach der schleife prüfen ob die membervariable == true ist.



  • Danke!


Anmelden zum Antworten