}}}}} bei verschachtelten funktionen vereinfachen?



  • Hallo allerseits,

    Ich programmiere einen Solver, der im 3-dimensionalen Raum "irgendwas" berechnet.

    for(x[1]=0;x[1]<10,x[1]++) // x boxes
        {for(x[2]=0;x[2]<10,x[2]++) // y box
    	{for(x[3]=0;x[3]<10,x[3]++) // zbox
    	    {for(x[4]=0;x[4]<10,x[4]++) // time
    		{for(x[5]=0;x[5]<10,x[5]++) // element1
    		    {for(x[6]=0;x[5]<10,x[5]++) // element2
    			CalculateSomething(x)
    }}}}}}
    

    Ich fürchtem ich muss da noch zwei zusätzliche ebenen Einbauen.
    Ich würde "}}}}}}" gerne durch irgendein Konstrukt der Form
    "for(i=0;i<6;i++) { } }"
    ersetzen.
    Gibt es einen Weg wie man mit #define, oder ähnlichem einen Befehl }(6) erstellen kann, der die 6 (oder mehr) Klammern einfügt.
    (Am Besten wäre es, wenn so viele Klammern eingefügt werden, wie gebraucht werden.)

    P.S.: Mir ist bewusst, das dies sehr schlechter Programmierstil ist.



  • Macht es keinen Sinn die inneren Schleifen in Funktionen auszulagern?

    Das was du da vorhast kann ich nicht empfehlen, und so übel sehen die 6 '}' im Kontext gar nicht aus, das herrlich üble sind ja die for-Schleifen.

    MfG SideWinder



  • Gehen tut das schon:

    #define SECHS_KLAMMERN }}}}}}
    


  • Wozu brauchst du denn soviele Klammern? Solange du nur eine Anweisung nach der Schleife hast brauchst du doch garnicnt klammern. Gucks du hier:

    for(x[1]=0;x[1]<10,x[1]++)           // x boxes
      for(x[2]=0;x[2]<10,x[2]++)         // y box
        for(x[3]=0;x[3]<10,x[3]++)       // zbox
          for(x[4]=0;x[4]<10,x[4]++)     // time
            for(x[5]=0;x[5]<10,x[5]++)   // element1
              for(x[6]=0;x[5]<10,x[5]++) // element2
                 CalculateSomething(x)
    


  • Semikolon vergessen nach der Funktion.



  • for(x[6]=0;x[5]<10 --> , <-- x[5]++)
    

    ja und die Atribute der Schleibe werden du ; getrennt und nicht durch ,



  • Hast recht, also hier nochmal eine neue Version:

    for(x[1]=0; x[1]<10: x[1]++)           // x boxes
      for(x[2]=0; x[2]<10: x[2]++)         // y box
        for(x[3]=0; x[3]<10; x[3]++)       // zbox
          for(x[4]=0; x[4]<10: x[4]++)     // time
            for(x[5]=0; x[5]<10; x[5]++)   // element1
              for(x[6]=0; x[6]<10; x[6]++) // element2
                 CalculateSomething(x);
    

    vielleicht so doch übersichtlicher

    for(x[1]=0; x[1]<10: x[1]++) // x boxes
    for(x[2]=0; x[2]<10: x[2]++) // y box
    for(x[3]=0; x[3]<10; x[3]++) // zbox
    for(x[4]=0; x[4]<10: x[4]++) // time
    for(x[5]=0; x[5]<10; x[5]++) // element1
    for(x[6]=0; x[6]<10; x[6]++) // element2
      CalculateSomething(x);
    

    Ich glaube bei der letzten Schleife wurde vergessen den Index auf 6 zu setzen.


Anmelden zum Antworten