while schleife



  • Hi,

    eine kleine frag: hab innerhalb einer while-schleife eine for-schleife installiert. In dieser befindet sich eine if-abfrage, wenn diese zutrifft soll wieder an den anfang der while-schleife gesprungen werden...

    wie realisiere ich das am besten?

    while(...)
    {
      i++; 
    
      for(j=0; j<4; j++)
      {
         if(TBL[j][i].Access = OK)
            continue;
      }
    
      if(i >= TBL_MAX)
      {
        //...
      }
    }
    

    D.h. wenn die if-Abfrage zutrifft, dann soll die zweite if-Abfrage gar nicht mehr abgefragt werden sondern gleich wieder i++ und wieder die for-schleife durchgelaufen werden.

    TBL_MAX etc sind alles defines.

    gruß
    torben



  • Umstrukturieren oder goto. Wenn irgendjemand über deinen Code meckern könnte dann Umstrukturieren oder ein Ja/Nein-Flag. Eventuell ist return auch eine Option.



  • bool bContinue;
    while(...)
    {
      bContinue=false;
      i++; 
    
      for(j=0; j<4; j++)
      {
         if(TBL[j][i].Access = OK)
            bContinue=true;
            continue;
      }
      if(!bContinue) {
        if(i >= TBL_MAX)
        {
          //...
        }
      }
    }
    


  • while(...)
    {
      i++;
      if(i == TBL_MAX)
        break;  // Break the while loop if i is too big
    
      for(j=0; j<4; j++)
      {
         if(TBL[j][i].Access == OK)
           break;  // Leave 'for' loop, continue with 'while' loop
         ... // Access != OK --> next j
      }
    }
    

    🙂



  • _matze schrieb:

    bool bContinue;
    while(...)
    {
      bContinue=false;
      i++; 
    
      for(j=0; j<4; j++)
      {
         if(TBL[j][i].Access = OK)
            bContinue=true;
            continue;
      }
      if(!bContinue) {
        if(i >= TBL_MAX)
        {
          //...
        }
      }
    }
    

    müsste man das nicht so schreiben:

    if(TBL[j][i].Access = OK){
            bContinue=true;
            break;
         }
    


  • guggst du?! schrieb:

    müsste man das nicht so schreiben:

    if(TBL[j][i].Access = OK){
            bContinue=true;
            break;
         }
    

    nein. das ist immer noch eine zuweisung.
    🙂



  • guggst du?! schrieb:

    _matze schrieb:

    bool bContinue;
    while(...)
    {
      bContinue=false;
      i++; 
    
      for(j=0; j<4; j++)
      {
         if(TBL[j][i].Access = OK)
            bContinue=true;
            continue;
      }
      if(!bContinue) {
        if(i >= TBL_MAX)
        {
          //...
        }
      }
    }
    

    müsste man das nicht so schreiben:

    if(TBL[j][i].Access = OK){
            bContinue=true;
            break;
         }
    

    Ja, ja, hast ja Recht! Flüchtigkeitsfehler... 😃



  • _matze schrieb:

    Flüchtigkeitsfehler... 😃

    welchen meinst du denn?
    🙂



  • slipofpen-freak schrieb:

    _matze schrieb:

    Flüchtigkeitsfehler... 😃

    welchen meinst du denn?
    🙂

    Klammer und break. War nicht mein Tag... 😉


Anmelden zum Antworten