<?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[if in for-Anweisung]]></title><description><![CDATA[<p>Hallo @all!</p>
<p>Als absoluter C++-Anfänger habe ich eine (hoffentlich nicht allzu dämliche) Frage, da Google und Forums-Suche mir nichts gebracht haben:</p>
<p>Ich möchte in einem Programm eine for-Schleife durchlaufen, wobei aber das Inkrement davon abhängig sein soll, wo sich das Argument gerade befindet.</p>
<p>Beispiel: ich möchte um x um 2 inkrementieren, wenn x durch 5 glatt teilbar ist, ansonsten soll um 1 inkrementiert werden.</p>
<p>Naiverweise denke ich jetzt daran, so was wie z. B.</p>
<pre><code>if ( i%5 == 0 ) i += 2;
else i++;
</code></pre>
<p>in den Anweisungsteil der for-Schleife zu packen. Aber wie geht das?<br />
Wenn ich das &quot;einfach so&quot; reinschreibe, gibts nur eine Fehlermeldungen, z. B. dass eine Klammer &quot;)&quot; erwartet wurde.</p>
<p>Oder macht man so was nicht mit for-Schleifen? Gibt es dafür vielleicht eine bessere Lösung in C++?</p>
<p>Wäre für eine &quot;Blutige-Anfänger&quot;-kompatible Erklärung sehr dankbar <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=";-)"
      alt="😉"
    /></p>
<p>Gruß<br />
ds</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/332213/if-in-for-anweisung</link><generator>RSS for Node</generator><lastBuildDate>Tue, 28 Apr 2026 09:34:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/332213.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 15 Apr 2015 21:21:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to if in for-Anweisung on Wed, 15 Apr 2015 21:21:55 GMT]]></title><description><![CDATA[<p>Hallo @all!</p>
<p>Als absoluter C++-Anfänger habe ich eine (hoffentlich nicht allzu dämliche) Frage, da Google und Forums-Suche mir nichts gebracht haben:</p>
<p>Ich möchte in einem Programm eine for-Schleife durchlaufen, wobei aber das Inkrement davon abhängig sein soll, wo sich das Argument gerade befindet.</p>
<p>Beispiel: ich möchte um x um 2 inkrementieren, wenn x durch 5 glatt teilbar ist, ansonsten soll um 1 inkrementiert werden.</p>
<p>Naiverweise denke ich jetzt daran, so was wie z. B.</p>
<pre><code>if ( i%5 == 0 ) i += 2;
else i++;
</code></pre>
<p>in den Anweisungsteil der for-Schleife zu packen. Aber wie geht das?<br />
Wenn ich das &quot;einfach so&quot; reinschreibe, gibts nur eine Fehlermeldungen, z. B. dass eine Klammer &quot;)&quot; erwartet wurde.</p>
<p>Oder macht man so was nicht mit for-Schleifen? Gibt es dafür vielleicht eine bessere Lösung in C++?</p>
<p>Wäre für eine &quot;Blutige-Anfänger&quot;-kompatible Erklärung sehr dankbar <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=";-)"
      alt="😉"
    /></p>
<p>Gruß<br />
ds</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450404</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450404</guid><dc:creator><![CDATA[ds]]></dc:creator><pubDate>Wed, 15 Apr 2015 21:21:55 GMT</pubDate></item><item><title><![CDATA[Reply to if in for-Anweisung on Wed, 15 Apr 2015 21:25:16 GMT]]></title><description><![CDATA[<p>Sorry, Schreibfehler.<br />
Ich meinte natürlich &quot;ich möchte <strong>i um 2</strong> inkrementieren...&quot;</p>
<p>ds</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450406</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450406</guid><dc:creator><![CDATA[ds]]></dc:creator><pubDate>Wed, 15 Apr 2015 21:25:16 GMT</pubDate></item><item><title><![CDATA[Reply to if in for-Anweisung on Wed, 15 Apr 2015 21:27:36 GMT]]></title><description><![CDATA[<p>und natürlich &quot;wenn <strong>i durch 5</strong> glatt teilbar ist, ...&quot;</p>
<p>ds</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450408</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450408</guid><dc:creator><![CDATA[ds]]></dc:creator><pubDate>Wed, 15 Apr 2015 21:27:36 GMT</pubDate></item><item><title><![CDATA[Reply to if in for-Anweisung on Wed, 15 Apr 2015 21:46:56 GMT]]></title><description><![CDATA[<p>Beispielsweise so:</p>
<pre><code>for(int i = 0; i &lt; 100; i += (i%5 == 0) ? 2:1)
</code></pre>
<p>Es gibt aber noch tausend andere Möglichkeiten, so etwas aufzuschreiben. Dies dürfte eine recht nachvollziehbare und gut abänderbare Möglichkeit sein.</p>
<p>Falls du es nicht kennst:</p>
<pre><code>X ? Y : Z
</code></pre>
<p>Dieser Ausdruck hat den Wert Y, wenn X wahr ist und den Wert Z andernfalls.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450411</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450411</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 15 Apr 2015 21:46:56 GMT</pubDate></item><item><title><![CDATA[Reply to if in for-Anweisung on Wed, 15 Apr 2015 21:49:32 GMT]]></title><description><![CDATA[<p>3 Möglichkeiten fallen mir da ein:</p>
<p>1. Ternärer Operator:</p>
<pre><code>for (int i = 0; i &lt; 100; i += (i % 5 == 0) ? 2 : 1)
{
}
</code></pre>
<p>2. Für dem Wahnsinn anheim Gefallene:</p>
<pre><code>for (int i = 0; i &lt; 100; i += 2 - std::min(i % 5, 1))
{
}
</code></pre>
<p>3. Einfach in den Schleifenkörper schreiben:</p>
<pre><code>for (int i = 0; i &lt; 100; )
{
   if (i % 5 == 0)
      i += 2;
   else
      i++;
}
</code></pre>
<p>Ich persönlich würde Variante 3 empfehlen. Es ist nichts verwerfliches dabei, das Hochzählen der Laufvariable im Schleifenkörper zu erledigen - besonders wenn es ein bedingtes Hochzählen ist. Ebenso fördert es die Lesbarkeit und macht deine Intentionen besser klar.</p>
<p>Gruss,<br />
Finnegan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450412</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450412</guid><dc:creator><![CDATA[Finnegan]]></dc:creator><pubDate>Wed, 15 Apr 2015 21:49:32 GMT</pubDate></item><item><title><![CDATA[Reply to if in for-Anweisung on Wed, 15 Apr 2015 21:51:35 GMT]]></title><description><![CDATA[<pre><code>for( schleifenkopf )
{
   if( bedingung )
   {
      dein code;
   }
   else
   {
      whatever;
   }

   usw;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2450413</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450413</guid><dc:creator><![CDATA[Brabbel]]></dc:creator><pubDate>Wed, 15 Apr 2015 21:51:35 GMT</pubDate></item><item><title><![CDATA[Reply to if in for-Anweisung on Wed, 15 Apr 2015 22:01:52 GMT]]></title><description><![CDATA[<p>Vielen Dank für alle vorgeschlagenen Lösungen!</p>
<p>Da ich mich gerade durch die Anfänge von C++ und die auf dem Web zugänglichen Tutorials kämpfe, kannte ich den Ausdruck X ? Y : Z noch nicht. Klingt aber sehr elegant.</p>
<p>Die ganze if...else-Geschichte in den Schleifenkörper zu packen, kam mir auch schon in den Sinn; ich dachte aber, das sei eher &quot;unelegant&quot; oder verpönt, da ich in Programmbeispielen bisher immer nur die Inkrementierungsanweisungen im Schleifenkopf gesehen habe, besonders, wenn die Inkrementierungen einen regelmäßigen Charakter haben.</p>
<p>Aber ich lerne natürlich gern dazu <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>Nochmals besten Dank!<br />
ds</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450414</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450414</guid><dc:creator><![CDATA[ds]]></dc:creator><pubDate>Wed, 15 Apr 2015 22:01:52 GMT</pubDate></item><item><title><![CDATA[Reply to if in for-Anweisung on Wed, 15 Apr 2015 22:16:18 GMT]]></title><description><![CDATA[<p>ds schrieb:</p>
<blockquote>
<p>Da ich mich gerade durch die Anfänge von C++ und die auf dem Web zugänglichen Tutorials kämpfe,</p>
</blockquote>
<p>Es ist bis heute kein brauchbares C++-Tutorial im Netz bekannt. Tutorials werden meistens von fortgeschrittenen Anfängern geschrieben, wenn sie selber glauben, sie wären gut und müssten ihr Wissen mit der Welt teilen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450417</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450417</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 15 Apr 2015 22:16:18 GMT</pubDate></item><item><title><![CDATA[Reply to if in for-Anweisung on Wed, 15 Apr 2015 22:32:52 GMT]]></title><description><![CDATA[<blockquote>
<p>Es ist bis heute kein brauchbares C++-Tutorial im Netz bekannt.</p>
</blockquote>
<p>1. Geh' auf <a href="http://amazon.de" rel="nofollow">amazon.de</a><br />
2. Kauf' dir den Primer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450419</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450419</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Wed, 15 Apr 2015 22:32:52 GMT</pubDate></item><item><title><![CDATA[Reply to if in for-Anweisung on Wed, 15 Apr 2015 22:44:43 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Es ist bis heute kein brauchbares C++-Tutorial im Netz bekannt. Tutorials werden meistens von fortgeschrittenen Anfängern geschrieben, wenn sie selber glauben, sie wären gut und müssten ihr Wissen mit der Welt teilen.</p>
</blockquote>
<p>So was habe ich befürchtet, schon allein, weil es irgendwie &quot;danach riecht&quot;, dass jeder Tutorial-Autor seine Weisheiten als die Alleingültigen darstellt, die Tutorials aber dennoch irgendwie Unterschiede aufweisen, obwohl sie sich auf gemeinsame Standards berufen.</p>
<p>Arcoth schrieb:</p>
<blockquote>
<p>1. Geh' auf <a href="http://amazon.de" rel="nofollow">amazon.de</a><br />
2. Kauf' dir den Primer</p>
</blockquote>
<p>Ich vermute, du meinst den von Stanley B. Lippman ?!</p>
<p>Gruß<br />
ds</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450421</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450421</guid><dc:creator><![CDATA[ds]]></dc:creator><pubDate>Wed, 15 Apr 2015 22:44:43 GMT</pubDate></item><item><title><![CDATA[Reply to if in for-Anweisung on Wed, 15 Apr 2015 23:03:04 GMT]]></title><description><![CDATA[<p>Finnegan schrieb:</p>
<blockquote>
<p>2. Für dem Wahnsinn anheim Gefallene:</p>
<pre><code>for (int i = 0; i &lt; 100; i += 2 - std::min(i % 5, 1))
{
}
</code></pre>
</blockquote>
<p>Nein Wahnsinn wäre sowas:</p>
<pre><code>for (int i = 0; i &lt; 100; [&amp;i]{ if (i%5 == 0) i+=2; else ++i; }())
{
    // ...
}
</code></pre>
<p>EDIT: wobei man unten ja noch schnell nachvollziehen kann was das bedeutet / tut <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450422</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450422</guid><dc:creator><![CDATA[5cript]]></dc:creator><pubDate>Wed, 15 Apr 2015 23:03:04 GMT</pubDate></item><item><title><![CDATA[Reply to if in for-Anweisung on Thu, 16 Apr 2015 05:09:33 GMT]]></title><description><![CDATA[<p>Richtiger Wahnsinn geht so:</p>
<pre><code>i += 2 - (i % 5 != 0)
</code></pre>
<p>Alles andere brancht immer noch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450430</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450430</guid><dc:creator><![CDATA[nobrancher]]></dc:creator><pubDate>Thu, 16 Apr 2015 05:09:33 GMT</pubDate></item><item><title><![CDATA[Reply to if in for-Anweisung on Thu, 16 Apr 2015 14:06:44 GMT]]></title><description><![CDATA[<p>Es geht auch elegant:</p>
<pre><code>for (int i = 0; i &lt; 100; ++i)
{
   if (i % 5 == 0)
      ++i;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2450506</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450506</guid><dc:creator><![CDATA[coder777]]></dc:creator><pubDate>Thu, 16 Apr 2015 14:06:44 GMT</pubDate></item><item><title><![CDATA[Reply to if in for-Anweisung on Thu, 16 Apr 2015 14:18:34 GMT]]></title><description><![CDATA[<p>Finnegan schrieb:</p>
<blockquote>
<p>3. Einfach in den Schleifenkörper schreiben:</p>
<pre><code>for (int i = 0; i &lt; 100; )
{
   if (i % 5 == 0)
      i += 2;
   else
      i++;
}
</code></pre>
<p>Ich persönlich würde Variante 3 empfehlen. Es ist nichts verwerfliches dabei, das Hochzählen der Laufvariable im Schleifenkörper zu erledigen - besonders wenn es ein bedingtes Hochzählen ist. Ebenso fördert es die Lesbarkeit und macht deine Intentionen besser klar.</p>
</blockquote>
<p>coder777 schrieb:</p>
<blockquote>
<p>Es geht auch elegant:</p>
<pre><code>for (int i = 0; i &lt; 100; ++i)
{
   if (i % 5 == 0)
      ++i;
}
</code></pre>
</blockquote>
<p>Finde ich die schlechteste Lösung:</p>
<pre><code>for (int i = 0; i &lt; 100; ++i)
{
   machWasmitZBArray(a[i]);
   if (i % 5 == 0)
      ++i;
   unuebersichtlicherCode();
   nach3MonatenIstAufgefallenDassAmEndeNochWasGemachtWerdenMuss(a[i]); // Bähm!
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2450509</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450509</guid><dc:creator><![CDATA[Jockelx]]></dc:creator><pubDate>Thu, 16 Apr 2015 14:18:34 GMT</pubDate></item><item><title><![CDATA[Reply to if in for-Anweisung on Thu, 16 Apr 2015 14:44:45 GMT]]></title><description><![CDATA[<p>Jockelx  schrieb:</p>
<blockquote>
<p>Finde ich die schlechteste Lösung:</p>
</blockquote>
<p>Macht aber keinen Sinn. Wenn du Finnegans Code so einrahmen würdest, würde das genauso passieren (sogar eher).<br />
Und wer weiß, vielleicht will man in a[i] sogar in dem Fall den um 1 erhöhten Wert zum Überspringen des Feldes. Da ist 1 oder 2 schlimmer.</p>
<p>Der Punkt: Je weniger Zeilen, desto übersichtlicher.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450512</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450512</guid><dc:creator><![CDATA[coder777]]></dc:creator><pubDate>Thu, 16 Apr 2015 14:44:45 GMT</pubDate></item><item><title><![CDATA[Reply to if in for-Anweisung on Thu, 16 Apr 2015 15:08:40 GMT]]></title><description><![CDATA[<p>Ich meinte sowohl Finnegans 3.Lösung als auch deine (mit dem selben Argument), als schlechteste Lösung.<br />
Lohnt aber auch nicht wirklich darüber zu streiten.<br />
Ich würde den Index jedenfalls wenn es irgendwie geht nur im Kopf ändern und nicht im Rumpf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450516</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450516</guid><dc:creator><![CDATA[Jockelx]]></dc:creator><pubDate>Thu, 16 Apr 2015 15:08:40 GMT</pubDate></item><item><title><![CDATA[Reply to if in for-Anweisung on Thu, 16 Apr 2015 15:47:11 GMT]]></title><description><![CDATA[<p>Was ist denn mit sowas hier?</p>
<pre><code>for(int i = 0; i &lt; N; i++)
{
    if ( i%5 == 0 )
        continue;

    // do shit...
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2450521</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450521</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Thu, 16 Apr 2015 15:47:11 GMT</pubDate></item><item><title><![CDATA[Reply to if in for-Anweisung on Thu, 16 Apr 2015 15:54:31 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>Was ist denn mit sowas hier?</p>
<pre><code>for(int i = 0; i &lt; N; i++)
{
    if ( i%5 == 0 )
        continue;

    // do shit...
}
</code></pre>
</blockquote>
<p>Damit Jockelx keinen Code reinklemmen kann</p>
<pre><code>for(int i = 0; i &lt; N; i++)
{if(i%5==0)continue;
    // do shit...
}
</code></pre>
<p><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/2450522</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450522</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 16 Apr 2015 15:54:31 GMT</pubDate></item><item><title><![CDATA[Reply to if in for-Anweisung on Thu, 16 Apr 2015 17:01:50 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">for (int i = 0; i &lt; N; i++) 
    if (i % 5)
        DoShit();
</code></pre>
<p>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450526</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450526</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 16 Apr 2015 17:01:50 GMT</pubDate></item><item><title><![CDATA[Reply to if in for-Anweisung on Thu, 16 Apr 2015 17:12:58 GMT]]></title><description><![CDATA[<p>Uih.</p>
<p>&quot;Ich möchte um x um 2 inkrementieren, wenn x durch 5 glatt teilbar ist, ansonsten soll um 1 inkrementiert werden.&quot;</p>
<p>gemacht zu</p>
<p>&quot;Beispiel: ich möchte die nicht durch 5 teilbaren Zahlen haben.&quot;</p>
<p>Das gewinnt natürlich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450527</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450527</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 16 Apr 2015 17:12:58 GMT</pubDate></item></channel></rss>