<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[for-Schleifen zusammenfassen]]></title><description><![CDATA[<p>Hallo,</p>
<p>in meinem Programm habe ich folgendes:</p>
<pre><code class="language-cpp">for (int i = 0; i &lt; Count; i++)
{
    for (int j = 0; j &lt; Count; j++)
    {
        for (int k = 0; k &lt; Count; k++)
        {
            for (int l = 0; l &lt; Count; l++)
            {
                for (int m = 0; m &lt; Count; m++)
                {
                	//hier werden i,j,k,l,m benutzt
                }
            }
        }
    }
}
</code></pre>
<p><strong>Gibt es da keine Möglichkeit dies zusammen zu fassen?</strong><br />
Eine große for-Schleife nützt mir ja nichts da ich i,j,k,l,m brauche.</p>
<p>Danke im Voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/146337/for-schleifen-zusammenfassen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 03 Sep 2026 16:35:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/146337.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 06 May 2006 20:38:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to for-Schleifen zusammenfassen on Sat, 06 May 2006 20:38:20 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>in meinem Programm habe ich folgendes:</p>
<pre><code class="language-cpp">for (int i = 0; i &lt; Count; i++)
{
    for (int j = 0; j &lt; Count; j++)
    {
        for (int k = 0; k &lt; Count; k++)
        {
            for (int l = 0; l &lt; Count; l++)
            {
                for (int m = 0; m &lt; Count; m++)
                {
                	//hier werden i,j,k,l,m benutzt
                }
            }
        }
    }
}
</code></pre>
<p><strong>Gibt es da keine Möglichkeit dies zusammen zu fassen?</strong><br />
Eine große for-Schleife nützt mir ja nichts da ich i,j,k,l,m brauche.</p>
<p>Danke im Voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1052269</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1052269</guid><dc:creator><![CDATA[Gustav]]></dc:creator><pubDate>Sat, 06 May 2006 20:38:20 GMT</pubDate></item><item><title><![CDATA[Reply to for-Schleifen zusammenfassen on Sat, 06 May 2006 21:03:05 GMT]]></title><description><![CDATA[<p>schreib doch eine kleine rekursive Funktion, der du am Anfang i, j, k, l, m übergibst und die sich dann immerwieder selbst aufruft (mit erhöhten werten).Weist du wie ich das meine oder brauchst du ein Beispiel?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1052279</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1052279</guid><dc:creator><![CDATA[newbii]]></dc:creator><pubDate>Sat, 06 May 2006 21:03:05 GMT</pubDate></item><item><title><![CDATA[Reply to for-Schleifen zusammenfassen on Sat, 06 May 2006 21:05:17 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>hab vielleicht vergessen zu sagen das die Anzahl der for-Schleifen individuell sein sollte.</p>
<p>Danke im Voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1052281</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1052281</guid><dc:creator><![CDATA[Gustav]]></dc:creator><pubDate>Sat, 06 May 2006 21:05:17 GMT</pubDate></item><item><title><![CDATA[Reply to for-Schleifen zusammenfassen on Sat, 06 May 2006 21:07:40 GMT]]></title><description><![CDATA[<p>Dann würde ich es erstrecht mit einer rekursiven Funktion machen, der du ein Array übergibst, in das so lang ist, wie du for Schleifen haben willst. Ausßerdem übergib am besten noch die Länge des Arrays.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1052283</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1052283</guid><dc:creator><![CDATA[MaxDemian]]></dc:creator><pubDate>Sat, 06 May 2006 21:07:40 GMT</pubDate></item><item><title><![CDATA[Reply to for-Schleifen zusammenfassen on Sat, 06 May 2006 21:20:45 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>mh da bräuchte ich dann glaub ich doch ein Beispiel?<br />
So was in der Art brauche ich, aber theoretisch auch für 100 Schleifen:</p>
<pre><code class="language-cpp">for (int i = 0; i &lt; Count; i++) 
{ 
    for (int j = 0; j &lt; Count; j++) 
    { 
        for (int k = 0; k &lt; Count; k++) 
        { 
            for (int l = 0; l &lt; Count; l++) 
            { 
                for (int m = 0; m &lt; Count; m++) 
                { 
                   printf (&quot;%i%i%i%i%i&quot;,i,j,k,l,m);
                } 
            } 
        } 
    } 
}
</code></pre>
<p>Danke im Voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1052289</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1052289</guid><dc:creator><![CDATA[Gustav]]></dc:creator><pubDate>Sat, 06 May 2006 21:20:45 GMT</pubDate></item><item><title><![CDATA[Reply to for-Schleifen zusammenfassen on Sat, 06 May 2006 21:30:24 GMT]]></title><description><![CDATA[<p>man könnte auch sowas machen:</p>
<pre><code class="language-cpp">const size_t number = 10;
int counter[number+1];     //das array ist jetzt um 1 größer 
// als nötig gemacht, um die endabfrage einfacher zu machen :rolling_eyes:
zero( counter, number+1 ); //die funktion ist trivial...
do
{
  //mach was mit deinen counter[i]
  add1( counter, number+1 );
}
while( !counter[number] );

// und add1 sieht so in der art aus:

void add1( int *counter, int size )
{
  int *end = counter + size-1;
  ++(*counter);
  while( counter != end )
  {
    if(*counter == Count )
    {
       *counter = 0;
       ++counter;
       ++(*counter);
    }
  }  
}
</code></pre>
<p>das ist jetzt ziemlich hässlich, und u.u. ist auch ein böser fehler drin, aber du verstehst, was ich meine? einfach einen array basteln, und eine funktion, die das array als zahl zur basis Count auffasst und immer eins addiert... im prinzip genau so schön/hässlich wie die rekursionsmethode, nur ohne die stackverschwendung <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    />.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1052293</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1052293</guid><dc:creator><![CDATA[2464497a-43db-46ad-898f-f]]></dc:creator><pubDate>Sat, 06 May 2006 21:30:24 GMT</pubDate></item><item><title><![CDATA[Reply to for-Schleifen zusammenfassen on Sat, 06 May 2006 21:41:28 GMT]]></title><description><![CDATA[<p>Falls die Schleifen rel. wenig machen ist eine Rekusion nicht zu empfehlen, da es sonst saulahm wird und evtl. ein Stack-Overflow kommt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1052300</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1052300</guid><dc:creator><![CDATA[bluecode]]></dc:creator><pubDate>Sat, 06 May 2006 21:41:28 GMT</pubDate></item><item><title><![CDATA[Reply to for-Schleifen zusammenfassen on Sat, 06 May 2006 21:43:34 GMT]]></title><description><![CDATA[<p>Wieso kommt es zu einem Stack-Overflow, wenn die Funktion wenig macht?</p>
<p>Sry, ich bin noch nicht so ganz fit in Sachen Speicher.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1052302</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1052302</guid><dc:creator><![CDATA[MaxDemian]]></dc:creator><pubDate>Sat, 06 May 2006 21:43:34 GMT</pubDate></item><item><title><![CDATA[Reply to for-Schleifen zusammenfassen on Sat, 06 May 2006 21:49:31 GMT]]></title><description><![CDATA[<p>Für jeden Aufruf wird ein eigener Stackframe erstellt und des braucht Zeit und Platz. Sobald die Funktion sehr wenig macht, wird dieser Overhead schnell &quot;spürbar&quot;, v.a. wenn man die Funktion dann auch noch ständig wieder aufruft und zum Stack overflow kommts evtl. weil, wenn eine Funktion sich ständig selber aufruft der Stackverbraucht immer größer wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1052304</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1052304</guid><dc:creator><![CDATA[bluecode]]></dc:creator><pubDate>Sat, 06 May 2006 21:49:31 GMT</pubDate></item><item><title><![CDATA[Reply to for-Schleifen zusammenfassen on Sat, 06 May 2006 22:04:47 GMT]]></title><description><![CDATA[<p>Was meinst du mit &quot;spürbar&quot;? Das der Verbrauch extrem steigt? Aber würde er das nicht auch bei einer größeren Funktion (bzw sogar noch mehr? )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1052319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1052319</guid><dc:creator><![CDATA[MaxDemian]]></dc:creator><pubDate>Sat, 06 May 2006 22:04:47 GMT</pubDate></item><item><title><![CDATA[Reply to for-Schleifen zusammenfassen on Sat, 06 May 2006 22:16:30 GMT]]></title><description><![CDATA[<p>MaxDemian schrieb:</p>
<blockquote>
<p>Was meinst du mit &quot;spürbar&quot;? Das der Verbrauch extrem steigt? Aber würde er das nicht auch bei einer größeren Funktion (bzw sogar noch mehr? )</p>
</blockquote>
<p>Nehmen wir mal an du rufst eine Funktion mit einem Parameter (unsigned int) auf, dann werden beim Funktionsaufruf 8 byte (4 für die Rücksprungadresse, 4 für den integer) auf den Stack gepusht. Anschließend machst du in der Funktion ein (sinnloses) erhöhen der übergebenen integer variable. Das macht einen 4byte move. Anschließend wird zurückgesprungen, das macht wieder 8 byte (4 für die Integervariable welche einfach gepopt wird und 4 für die Rücksprungadresse).<br />
Insgesamt werden 8 + 4 + 8 = 20 byte in den speicher geschrieben bzw. gelsen. Nun ist der Overhead aber (8 + <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_sunglasses"
      title="8)"
      alt="😎"
    /> / 20, d.h. 4/5 = 80%. Je mehr du jetzt in der Funktion machst desto kleiner wird der Anteil des Overheads an der Speichernutzung =&gt; der Overhead wird immer weniger spürbar mit der Zunahme der größe der Funktion</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1052324</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1052324</guid><dc:creator><![CDATA[bluecode]]></dc:creator><pubDate>Sat, 06 May 2006 22:16:30 GMT</pubDate></item><item><title><![CDATA[Reply to for-Schleifen zusammenfassen on Sat, 06 May 2006 22:27:00 GMT]]></title><description><![CDATA[<p>Super, klasse erklärt. Danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1052326</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1052326</guid><dc:creator><![CDATA[MaxDemian]]></dc:creator><pubDate>Sat, 06 May 2006 22:27:00 GMT</pubDate></item><item><title><![CDATA[Reply to for-Schleifen zusammenfassen on Sun, 07 May 2006 11:08:15 GMT]]></title><description><![CDATA[<p>EDIT: Hatte einen Denkfehler drinn, hab es überarbeitet.</p>
<p>Ich hab mal was mit Templates zusammen gebastelt, vielleicht hilft das ja:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

template &lt;int Int&gt;
struct Int2Type {
    enum {
        value = Int
    };
};

template &lt;int Fors&gt;
class MegaFor : public MegaFor&lt;Fors - 1&gt; {
    public:
        using MegaFor&lt;Fors - 1&gt;::Value;
        bool Done() {
            if(MegaFor&lt;Fors - 1&gt;::Done()) {
                bool result = (i == Count_);
                if(result) {
                    i = 0;
                } else {
                    ++i;
                }
                return result;
            }
            return false;
        }
        MegaFor(int Count) : MegaFor&lt;Fors - 1&gt;(Count), Count_(Count - 1), i(0) {}
        template &lt;int n&gt;
        int v() {
            return Value(Int2Type&lt;Fors - n&gt;());
        }
    protected:
        int Value(Int2Type&lt;Fors&gt;) {
            return i;
        }
    private:
        int Count_;
        int i;
};

template &lt;&gt;
class MegaFor&lt;0&gt; {
    public:
        MegaFor(int) { }
        void Value();
        bool Done() {
            return true;
        }
};

int main() {
    MegaFor&lt;3&gt; f(4); // 3 = Anzahl der For-Schleifen, 4 = Anzahl Durchläufe pro Schleife
    do {
        std::cout &lt;&lt; f.v&lt;0&gt;() &lt;&lt; &quot; &quot; // Die Zahl sagt, welches i wir haben wollen,
                  &lt;&lt; f.v&lt;1&gt;() &lt;&lt; &quot; &quot; //  also von welcher Schleife
                  &lt;&lt; f.v&lt;2&gt;() &lt;&lt; &quot; &quot; &lt;&lt; std::endl;
    } while(!f.Done());

    /* ist das gleiche wie:
    for(int i = 0; i &lt; 4; ++i) {
        for(int j = 0; j &lt; 4; ++j) {
            for(int k = 0; k &lt; 4; ++k) {
                std::cout &lt;&lt; i &lt;&lt; &quot; &quot; &lt;&lt; j &lt;&lt; &quot; &quot; &lt;&lt; k &lt;&lt; std::endl;
            }
        }
    }*/
}
</code></pre>
<p>Ausgabe:</p>
<pre><code>0 0 0
0 0 1
0 0 2
0 0 3
0 1 0
0 1 1
0 1 2
0 1 3
0 2 0
0 2 1
0 2 2
0 2 3
0 3 0
0 3 1
0 3 2
0 3 3
1 0 0
1 0 1
1 0 2
1 0 3
1 1 0
1 1 1
1 1 2
1 1 3
1 2 0
1 2 1
1 2 2
1 2 3
1 3 0
1 3 1
1 3 2
1 3 3
2 0 0
2 0 1
2 0 2
2 0 3
2 1 0
2 1 1
2 1 2
2 1 3
2 2 0
2 2 1
2 2 2
2 2 3
2 3 0
2 3 1
2 3 2
2 3 3
3 0 0
3 0 1
3 0 2
3 0 3
3 1 0
3 1 1
3 1 2
3 1 3
3 2 0
3 2 1
3 2 2
3 2 3
3 3 0
3 3 1
3 3 2
3 3 3
</code></pre>
<p>100 und mehr Schleifen sind dann damit auch möglich. Hier ein Beispiel für 4 Schleifen, die bis 6 zählen:</p>
<pre><code class="language-cpp">int main() {
    MegaFor&lt;4&gt; f(6);
    do {
        std::cout &lt;&lt; f.v&lt;0&gt;() &lt;&lt; &quot; &quot; // Die Zahl sagt, welches i wir haben wollen,
                  &lt;&lt; f.v&lt;1&gt;() &lt;&lt; &quot; &quot; //  also von welcher Schleife 
                  &lt;&lt; f.v&lt;2&gt;() &lt;&lt; &quot; &quot;
                  &lt;&lt; f.v&lt;3&gt;() &lt;&lt; std::endl;
    } while(!f.Done());
}
</code></pre>
<p>Da sollte das gleiche rauskommen, als hätte man vier for-schleifen benutzt, mit i &lt; 6.</p>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1052351</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1052351</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Sun, 07 May 2006 11:08:15 GMT</pubDate></item><item><title><![CDATA[Reply to for-Schleifen zusammenfassen on Sun, 07 May 2006 17:18:12 GMT]]></title><description><![CDATA[<p>Vielen Dank für die zahlreichen Beteiligungen und das Template.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1052820</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1052820</guid><dc:creator><![CDATA[Gustav]]></dc:creator><pubDate>Sun, 07 May 2006 17:18:12 GMT</pubDate></item><item><title><![CDATA[Reply to for-Schleifen zusammenfassen on Mon, 08 May 2006 11:36:40 GMT]]></title><description><![CDATA[<p>Mit dem C++Builder 5 Professional bekomme ich in Zeile:</p>
<pre><code class="language-cpp">using MegaFor&lt;Fors - 1&gt;::Value;
</code></pre>
<p>folgenden Compilerfehler:</p>
<blockquote>
<p>F1004 Interner Compiler-Fehler at 0x12542d7 with base 0x1200000</p>
</blockquote>
<p>Kann mir jemand weiterhelfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1053301</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1053301</guid><dc:creator><![CDATA[Gustav]]></dc:creator><pubDate>Mon, 08 May 2006 11:36:40 GMT</pubDate></item><item><title><![CDATA[Reply to for-Schleifen zusammenfassen on Mon, 08 May 2006 14:27:25 GMT]]></title><description><![CDATA[<p>Versuch dann mal folgendes:</p>
<pre><code class="language-cpp">template &lt;int Fors&gt; 
class MegaFor : public MegaFor&lt;Fors - 1&gt; { 
    public: 
        //using MegaFor&lt;Fors - 1&gt;::Value;  // auskommentieren
        bool Done() { 
            if(MegaFor&lt;Fors - 1&gt;::Done()) { 
                bool result = (i == Count_); 
                if(result) { 
                    i = 0; 
                } else { 
                    ++i; 
                } 
                return result; 
            } 
            return false; 
        } 
        MegaFor(int Count) : MegaFor&lt;Fors - 1&gt;(Count), Count_(Count - 1), i(0) {} 
        template &lt;int n&gt; 
        int v() { 
            return MegaFor&lt;Fors - n&gt;::Value(Int2Type&lt;Fors - n&gt;()); // hier Typ einfügen
        } 
    public: // statt protected
        int Value(Int2Type&lt;Fors&gt;) { 
            return i; 
        } 
    private: 
        int Count_; 
        int i; 
};
</code></pre>
<p>Evtl. reicht es auch aus, einfach nur die using-Anweisung auszukommentieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1053454</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1053454</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Mon, 08 May 2006 14:27:25 GMT</pubDate></item></channel></rss>