<?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[Dynamische Anzahl an for-schleifen?]]></title><description><![CDATA[<p>Hallo zusammen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Vlt. hab ich gerade einfach nur ein Brett vor dem Kopf... folgende Problemstellung:</p>
<p>Ich habe einen Vektor, der Zeiger auf Objekte vom Typ Parameter speichert. Jeder Parameter hat einen min- und max-Wert sowie eine Schrittweite &quot;stepwidth&quot;. Der Vektor kann beliebig viele dieser Parameter enthalten. Ich möchte jetzt gerne folgendes irgendwie dynamisch lösen:</p>
<pre><code class="language-cpp">std::vector&lt;Parameter*&gt; vecParam;
        vecParam.push_back(a);
        vecParam.push_back(b);
        vecParam.push_back(c);

        for(int i=a-&gt;min; i&lt;=a-&gt;max; i+=a-&gt;stepwidth) {
            for(int j=b-&gt;min; j&lt;=b-&gt;max; j+=b-&gt;stepwidth) {
                for(int k=c-&gt;min; k&lt;=c-&gt;max; k+=c-&gt;stepwidth) {
                    std::cout&lt;&lt;i&lt;&lt;&quot;\t&quot;&lt;&lt;j&lt;&lt;&quot;\t&quot;&lt;&lt;k&lt;&lt;std::endl;
                }
            }
        }
</code></pre>
<p>Es sind 3 Zeiger auf Parameter im Vektor und es werden alle Kombinationen durchprobiert. Jetzt kann der Vektor aber auch 5 oder 7 oder 19 Zeiger enthalten, die dann alle wie oben durchlaufen werden sollen.</p>
<p>Ist die Lösung so simpel, dass ich sie nicht erkenne <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> Oder würdet ihr einen anderen Ansatz wählen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/272797/dynamische-anzahl-an-for-schleifen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 28 Aug 2026 15:44:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/272797.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 25 Aug 2010 12:32:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Dynamische Anzahl an for-schleifen? on Wed, 25 Aug 2010 12:32:30 GMT]]></title><description><![CDATA[<p>Hallo zusammen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Vlt. hab ich gerade einfach nur ein Brett vor dem Kopf... folgende Problemstellung:</p>
<p>Ich habe einen Vektor, der Zeiger auf Objekte vom Typ Parameter speichert. Jeder Parameter hat einen min- und max-Wert sowie eine Schrittweite &quot;stepwidth&quot;. Der Vektor kann beliebig viele dieser Parameter enthalten. Ich möchte jetzt gerne folgendes irgendwie dynamisch lösen:</p>
<pre><code class="language-cpp">std::vector&lt;Parameter*&gt; vecParam;
        vecParam.push_back(a);
        vecParam.push_back(b);
        vecParam.push_back(c);

        for(int i=a-&gt;min; i&lt;=a-&gt;max; i+=a-&gt;stepwidth) {
            for(int j=b-&gt;min; j&lt;=b-&gt;max; j+=b-&gt;stepwidth) {
                for(int k=c-&gt;min; k&lt;=c-&gt;max; k+=c-&gt;stepwidth) {
                    std::cout&lt;&lt;i&lt;&lt;&quot;\t&quot;&lt;&lt;j&lt;&lt;&quot;\t&quot;&lt;&lt;k&lt;&lt;std::endl;
                }
            }
        }
</code></pre>
<p>Es sind 3 Zeiger auf Parameter im Vektor und es werden alle Kombinationen durchprobiert. Jetzt kann der Vektor aber auch 5 oder 7 oder 19 Zeiger enthalten, die dann alle wie oben durchlaufen werden sollen.</p>
<p>Ist die Lösung so simpel, dass ich sie nicht erkenne <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> Oder würdet ihr einen anderen Ansatz wählen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1944209</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1944209</guid><dc:creator><![CDATA[Dynamiker]]></dc:creator><pubDate>Wed, 25 Aug 2010 12:32:30 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Anzahl an for-schleifen? on Wed, 25 Aug 2010 12:35:17 GMT]]></title><description><![CDATA[<p>Das würde ich mit einer Rekursion lösen. Geht jetzt ein Licht auf oder sagt dir das nichts?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1944211</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1944211</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 25 Aug 2010 12:35:17 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Anzahl an for-schleifen? on Wed, 25 Aug 2010 12:57:19 GMT]]></title><description><![CDATA[<p>Rekursion ist mit definitiv ein Begriff, aber ich kann gerade den Bezug nicht herstellen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> noch keine <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /></p>
<p>Momentan versuche ich, einer Funktion den Vektor und einen index mitzugeben, also</p>
<pre><code class="language-cpp">void Rek(std::vector&lt;Parameter*&gt; vecParam, int index) {
</code></pre>
<p>Das geht wohl soweit auch erstmal, allerdings hab ich dann ja z.B. auf unterster Rekursionsebene nicht alle Werte zur Verfügung. Ich muss ja weiterhin mit den Werten arbeiten</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1944229</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1944229</guid><dc:creator><![CDATA[Dynamiker]]></dc:creator><pubDate>Wed, 25 Aug 2010 12:57:19 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Anzahl an for-schleifen? on Wed, 25 Aug 2010 13:05:19 GMT]]></title><description><![CDATA[<p>Dann solltest du nicht nur einen Index als Parameter mitgeben, sondern einen Container voll Indizes.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1944237</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1944237</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Wed, 25 Aug 2010 13:05:19 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Anzahl an for-schleifen? on Wed, 25 Aug 2010 13:20:03 GMT]]></title><description><![CDATA[<p>Oder eine andere (vermutlich bessere) Idee: Du machst dir so eine Art Klasse für große Zahlen. Nur die einzelnen Ziffern haben nicht immer den selben Wertebereich sondern eben den der am Anfang in deinen Parametern steckt. Und dann zählst du einfach immer um eins hoch. Wenn eine Ziffer dabei ihren Wertebereich überschreitet, so fangt sie wieder von vorn an und schickt ihrerseits ein Signal an die nächste Ziffer, sich um eins zu erhöhen.</p>
<p>Das müsste eigentlich ziemlich gut gehen und wäre vermutlich effektiver als die Rekursion (wobei Effizienz bei Konsolenausgabe vernachlässigbar ist, aber vielleicht willst du ja mal was anderes damit machen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1944244</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1944244</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 25 Aug 2010 13:20:03 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Anzahl an for-schleifen? on Wed, 25 Aug 2010 13:57:24 GMT]]></title><description><![CDATA[<p>Jetzt bezogen auf deine aktuelle ausgabe:<br />
Gib ihm einfach einen std::vector&lt;int&gt; mit, in dem die aktuelle funktion ihren aktuellen wert pusht und dann übergibt ....</p>
<pre><code class="language-cpp">typedef std::vector&lt;int&gt; intvec;
....
void Rek(std::vector&lt;Parameter*&gt; vecParam, int index, intvec veci);
</code></pre>
<p>der index ist dann das aktuelle element deines parameter-vectors.<br />
Ich kann mir vorstellen, dass mein vorschlag etwas unschön ist, aber es sollte funktionieren.</p>
<p>wenn du dann statt der ausgabe nach dem rekursiven durchlauf mit den ergebnissen weiterarbeiten möchtest, müsstest du noch einen vector&lt;intvec&gt; machen und referenz mit übergeben...</p>
<p>... naja nur n vorschlag <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";D"
      alt="😉"
    /><br />
und wenn ich schwachsinn verzapfe: sagen ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1944264</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1944264</guid><dc:creator><![CDATA[VECTORianer]]></dc:creator><pubDate>Wed, 25 Aug 2010 13:57:24 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Anzahl an for-schleifen? on Wed, 25 Aug 2010 15:51:27 GMT]]></title><description><![CDATA[<p>Hier mal ein Tipp</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;ostream&gt;
#include &lt;vector&gt;
using namespace std;

bool increment(vector&lt;int&gt; &amp; v)
{
  int pos = v.size();
  while (pos&gt;0 &amp;&amp; v[pos-1]++==2) v[--pos]=0;
  return pos&gt;0; // OK? (kein Ueberlauf)
}

int main()
{
  const int ziffern = 3;
  vector&lt;int&gt; aktuell (ziffern);
  do {
    for (int k=0; k&lt;ziffern; ++k) cout&lt;&lt;aktuell[k];
    cout &lt;&lt; endl;
  } while (increment(aktuell));
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1944309</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1944309</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Wed, 25 Aug 2010 15:51:27 GMT</pubDate></item></channel></rss>