[Erledigt] Verschachtelte for-Schleifen



  • Hallo,

    ich beschäftige mich gerade mit Such- und Sortieralgorithmen. Die beinhalten ja oft verschachtelte for-Schleifen.
    Im INet bin ich jetzt auf ein Konstrukt gestoßen, was ich vorher noch nicht gesehen habe.

    #include <iostream>
    using namespace std;
    
    int main() 
    {
    	for (int i = 0; i < 3; i++) 
    	for (int j = 0; j < 5; j++)
    	{
    		cout << i << "     " << j << endl;
    	}
    
    	return 0;
    }
    

    Ich finde diese Anordnung sehr übersichtlich.
    Was haltet ihr davon?
    Ist es "kein Standard", schlechter Stil oder gut?
    Gibt es einen Nachteil gegenüber der "in sich" verschachtelten Variante?



  • Kann man schon machen, allerdings würde ich persönlich doch noch einen Einzug machen, damit ganz klar ist, bis wohin das geht.

    So:

    #include <iostream>
    using namespace std;
    
    int main()
    {
        for (int i = 0; i < 3; i++)
          for (int j = 0; j < 5; j++)
          {
              cout << i << "     " << j << endl;
          }
    
        return 0;
    }
    

    Wenn es solche Verschachtelungen sind, dann mache ich das auch so, weil die zusätzlichen Klammern das ganze nur unnötig aufblähen. (aber bei erweiterung immer dran denken die wieder hin zu machen!).



  • Du musst halt halt aufpassen, dass die erste Schleife nur für die zweite gilt, also was nach der "}" - Klammer der 2. for-Schleife kommt nicht in der ersten ist.

    Aber Nachteile hat diese Art der Verschachtelung sonst nicht 😉



  • Verändere die Einrückung und schon ist es wieder übersichtlich.

    #include <iostream>
    using namespace std;
    
    int main()
    {
        for (int i = 0; i < 3; i++)
            for (int j = 0; j < 5; j++)
            {
                cout << i << "     " << j << endl;
            }
    
        return 0;
    }
    

    Die geschweiften Klammern kann man weglassen, wenn man innerhalb der Schleife nur einen Ausdruck hat, in diesem Fall nur die innere for-Schleife.
    Man könnte auch die andere Klamemr weglassen.



  • Vielen Dank für das Feedback.

    Im Zusammenhang mit if-Anweisungen lasse ich die Klammern auch weg, sofern nur eine Anweisung folgt. Bei der geschachtelten for-Schleife kam mir das Konstrukt jedoch ungewöhnlich (aber übersichtlich) vor.

    Wie schon angemerkt, muss man natürlich bei einer Erweiterung aufpassen.

    Ich habe eben ein paar ("unübersichtliche") Algorithmen entsprechend geändert. Der Code ließt sich wie ein Roman 🙂

    Ich werde den Beitrag als "Erledigt" markieren.
    Vielen Dank.


Log in to reply