doppelbreak



  • for(int netz=1; netz<=bildanzahl;++netz) // urprungsindex des sortierten werts anhand des größten werts (biggest_rates[netz][1]) herrausfinden
          {
          for(int index=1; index<=objektanzahl[schichtanzahl];++index)
            {
            if(*sortierabstand[bild][1]==&neuronkernfeuerrate[netz+1][schichtanzahl][index]) // verschiebung beachten, da bei neuronkernfeuerrate ein arbeitsnetz auf 1 liegt also +1
              { // nach true kann die verschachtelte suchschleife abgebrochen werden
              puffer_sortiertnetz=netz;
              break;
              break;
              }
            }
    

    nun hier kommt er nicht zum zweiten break und springt nicht ganz raus.

    die if abrafe ist nur ein mal true, von daher währe es rechenzeitverschwendung
    wenn die schleife dann noch weiterläuft.

    wie kann man das ordentlich machen ?



  • bool bRun = true;
        for(int netz=1; netz<=bildanzahl, bRun;++netz)
        {
          for(int index=1; index<=objektanzahl[schichtanzahl];++index)
          {
            if(*sortierabstand[bild][1]==&neuronkernfeuerrate[netz+1][schichtanzahl][index])
            { // nach true kann die verschachtelte suchschleife abgebrochen werden
              puffer_sortiertnetz=netz;
    
              bRun = false;          // zusätzliche Abbruchbedingung der ersten Schleife erfüllen
              netz = bildanzahl + 1; // oder einfach die normale Abbruchbedingung erfüllen
    
              break;
            }
          }
        }
    


  • danke 🙂



  • Jansen schrieb:

    for(int netz=1; netz<=bildanzahl, bRun;++netz)
    

    Aber dann bitte die Teilbedingungen mit && kombinieren, sonst fällt die "reguläre" Abbruchbedingung der Schleife unter den Tisch 😉

    @fuse: das zweite break wird nie erreicht, weil die innere Schleife nach dem ersten break bereits verlassen wird. Andere Sprachen bieten dazu die Möglichkeit, mehrere Schleifen auf einen Schlag zu verlassen, C(++) leider nicht - da kannst du nur die Abbruchbedingungen für die äußeren Schleifen erfüllen oder mit goto herausgehen (bei sehr tief verschachtelten Schleifen durchaus angebracht).



  • klar ich habmich ebn gefragt ob es bei c++ diese möglichkeit
    gibt von der du sagst daß es sie nicht gibt 🙂


Anmelden zum Antworten