<?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[drei Integer-Werte einzugeben]]></title><description><![CDATA[<p>Nun besitze ich &gt;&gt;Einführung in die Programmierung mit C++ Bjarne Stroustrup<br />
und hab neue Herausforderungen:<br />
Schreiben sie ein Programm das den Benutzer auffordert, drei<br />
Integer-Werte einzugeben, und dann die Werte in numerischer Reihenfolge getrennt durch Komma ausgibt. Wenn der Benutzer die Werte 10 4 6 eingibt, sollte die Ausgabe „4, 6, 10“. Wenn zwei Werte gleich sind<br />
sollten sie zusammen stehen; d.h., die Eingabe 4 5 4 sollte „4, 4, 5“ ergeben.</p>
<p>Die Lösung wird Anfänger - Niveau sein, aber für mich zu hoch.<br />
Zu viel if und was mach ich mit else, Operatoren müssen auch rein. <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="😕"
    /></p>
<p>Brauche einige Tips <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
Viele Dank im Voraus</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

int main()
{
    cout &lt;&lt; &quot;geben sie drei int werte ein\n&quot;;
    int wertTest1,wertTest2,wertTest3;

    cin&gt;&gt;wertTest1&gt;&gt;wertTest2&gt;&gt;wertTest3;
 //??????????????????????????????????????   
        if (wertTest1&lt;wertTest2)
        if (wertTest2&lt;wertTest3)
        if (wertTest1&lt;wertTest2)
//???????????????????????????????????????
    cout&lt;&lt;wertTest1&lt;&lt;&quot; , &quot;&lt;&lt;wertTest2&lt;&lt;&quot; , &quot;&lt;&lt;wertTest3&lt;&lt;'\n';
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/328036/drei-integer-werte-einzugeben</link><generator>RSS for Node</generator><lastBuildDate>Wed, 08 Jul 2026 16:09:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/328036.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 18 Sep 2014 13:19:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to drei Integer-Werte einzugeben on Thu, 18 Sep 2014 13:19:14 GMT]]></title><description><![CDATA[<p>Nun besitze ich &gt;&gt;Einführung in die Programmierung mit C++ Bjarne Stroustrup<br />
und hab neue Herausforderungen:<br />
Schreiben sie ein Programm das den Benutzer auffordert, drei<br />
Integer-Werte einzugeben, und dann die Werte in numerischer Reihenfolge getrennt durch Komma ausgibt. Wenn der Benutzer die Werte 10 4 6 eingibt, sollte die Ausgabe „4, 6, 10“. Wenn zwei Werte gleich sind<br />
sollten sie zusammen stehen; d.h., die Eingabe 4 5 4 sollte „4, 4, 5“ ergeben.</p>
<p>Die Lösung wird Anfänger - Niveau sein, aber für mich zu hoch.<br />
Zu viel if und was mach ich mit else, Operatoren müssen auch rein. <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="😕"
    /></p>
<p>Brauche einige Tips <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
Viele Dank im Voraus</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

int main()
{
    cout &lt;&lt; &quot;geben sie drei int werte ein\n&quot;;
    int wertTest1,wertTest2,wertTest3;

    cin&gt;&gt;wertTest1&gt;&gt;wertTest2&gt;&gt;wertTest3;
 //??????????????????????????????????????   
        if (wertTest1&lt;wertTest2)
        if (wertTest2&lt;wertTest3)
        if (wertTest1&lt;wertTest2)
//???????????????????????????????????????
    cout&lt;&lt;wertTest1&lt;&lt;&quot; , &quot;&lt;&lt;wertTest2&lt;&lt;&quot; , &quot;&lt;&lt;wertTest3&lt;&lt;'\n';
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2418169</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2418169</guid><dc:creator><![CDATA[juhu123]]></dc:creator><pubDate>Thu, 18 Sep 2014 13:19:14 GMT</pubDate></item><item><title><![CDATA[Reply to drei Integer-Werte einzugeben on Thu, 18 Sep 2014 13:30:27 GMT]]></title><description><![CDATA[<p>Paar Tipps für Google:</p>
<p>std::vector<br />
std::sort<br />
std::copy in Verbindung mit std::ostream_iterator</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2418170</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2418170</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Thu, 18 Sep 2014 13:30:27 GMT</pubDate></item><item><title><![CDATA[Reply to drei Integer-Werte einzugeben on Thu, 18 Sep 2014 13:33:30 GMT]]></title><description><![CDATA[<p>Soll das nur mit if / else usw. gelöst werden oder wie weit bist du in dem Buch`?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2418171</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2418171</guid><dc:creator><![CDATA[unsure_110]]></dc:creator><pubDate>Thu, 18 Sep 2014 13:33:30 GMT</pubDate></item><item><title><![CDATA[Reply to drei Integer-Werte einzugeben on Thu, 18 Sep 2014 13:35:36 GMT]]></title><description><![CDATA[<p>daddy_felix schrieb:</p>
<blockquote>
<p>Paar Tipps für Google:</p>
<p>std::vector<br />
std::sort<br />
std::copy in Verbindung mit std::ostream_iterator</p>
</blockquote>
<p>Um drei Werte zu sortieren reichen drei bedingte Swaps ohnehin völlig aus. Wieso du bei einer fixen Anzahl an Werten mit einem <code>std::vector</code> ankommst verstehe ich nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2418173</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2418173</guid><dc:creator><![CDATA[Apfelkuchen um 4]]></dc:creator><pubDate>Thu, 18 Sep 2014 13:35:36 GMT</pubDate></item><item><title><![CDATA[Reply to drei Integer-Werte einzugeben on Thu, 18 Sep 2014 13:42:17 GMT]]></title><description><![CDATA[<p>juhu123 schrieb:</p>
<blockquote>
<p>Die Lösung wird Anfänger - Niveau sein, aber für mich zu hoch.<br />
Zu viel if und was mach ich mit else, Operatoren müssen auch rein. <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="😕"
    /></p>
</blockquote>
<p>Ja, aber mehr als ein bisschen if brauchst du auch nicht.</p>
<p>Die Lösung sollte ungefähr so aussehen: Vergleiche zwei Werte und vertausche sie, falls sie in der falschen Reihenfolge stehen. Du musst dir überlegen, welche Werte du vergleichen musst und wie oft du vergleichen musst, um sicher zu sein, dass du alle Möglichkeiten erwischt hast. Es kann sich anbieten, sich das ganze als Entscheidungsbaum aufzuzeichnen.</p>
<p>std::vector, std::sort usw. würde ich an der Stelle vermeiden, das ist nicht Sinn der Übung.</p>
<p>Alternativ kannst du auch ein paar (wie viele brauchst du?) ifs hinschreiben, die prüfen, welche der möglichen Anordnungen vorliegt. Die vertauschen-Lösung ist aber das einfachste.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2418176</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2418176</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Thu, 18 Sep 2014 13:42:17 GMT</pubDate></item><item><title><![CDATA[Reply to drei Integer-Werte einzugeben on Thu, 18 Sep 2014 15:26:35 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>juhu123 schrieb:</p>
<blockquote>
<p>Die Lösung wird Anfänger - Niveau sein, aber für mich zu hoch.<br />
Zu viel if und was mach ich mit else, Operatoren müssen auch rein. <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="😕"
    /></p>
</blockquote>
<p>Ja, aber mehr als ein bisschen if brauchst du auch nicht.</p>
<p>Die Lösung sollte ungefähr so aussehen: Vergleiche zwei Werte und vertausche sie, falls sie in der falschen Reihenfolge stehen. Du musst dir überlegen, welche Werte du vergleichen musst und wie oft du vergleichen musst, um sicher zu sein, dass du alle Möglichkeiten erwischt hast. Es kann sich anbieten, sich das ganze als Entscheidungsbaum aufzuzeichnen.</p>
<p>std::vector, std::sort usw. würde ich an der Stelle vermeiden, das ist nicht Sinn der Übung.</p>
<p>Alternativ kannst du auch ein paar (wie viele brauchst du?) ifs hinschreiben, die prüfen, welche der möglichen Anordnungen vorliegt. Die vertauschen-Lösung ist aber das einfachste.</p>
</blockquote>
<p>Mit zwei geht das so, ist aber bestimmt keine saubere Arbeit<br />
und bei drei das reine Chaos<br />
brauche noch einen Tip</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

int main()
{
    cout &lt;&lt; &quot;geben sie drei int werte ein\n&quot;;
    int wertTest1,wertTest2,wertTest3;

    cin&gt;&gt;wertTest1&gt;&gt;wertTest2&gt;&gt;wertTest3;

        if (wertTest1&lt;wertTest2)

            cout&lt;&lt;wertTest1&lt;&lt;&quot; , &quot;&lt;&lt;wertTest2&lt;&lt;'\n';
            else
            {
                cout&lt;&lt;wertTest2&lt;&lt;&quot; , &quot;&lt;&lt;wertTest1&lt;&lt;'\n';
            }

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2418191</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2418191</guid><dc:creator><![CDATA[juhu123]]></dc:creator><pubDate>Thu, 18 Sep 2014 15:26:35 GMT</pubDate></item><item><title><![CDATA[Reply to drei Integer-Werte einzugeben on Thu, 18 Sep 2014 15:37:42 GMT]]></title><description><![CDATA[<p>juhu123 schrieb:</p>
<blockquote>
<p>Mit zwei geht das so, ist aber bestimmt keine saubere Arbeit<br />
und bei drei das reine Chaos</p>
</blockquote>
<p>Das ist schon OK so (mit vernünftiger Einrückung).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2418197</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2418197</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Thu, 18 Sep 2014 15:37:42 GMT</pubDate></item><item><title><![CDATA[Reply to drei Integer-Werte einzugeben on Thu, 18 Sep 2014 16:52:39 GMT]]></title><description><![CDATA[<p>Es geht auch der altbewährte swap-Trick:</p>
<pre><code>if (b &lt; a)
  std::swap(a, b);
if (c &lt; a)
  std::swap(a, c);
if (c &lt; b)
  std::swap(b, c);
// a ist nun der kleinste, b der zweitkleinste, c der größte
</code></pre>
<p><s>Oder geschicktes Nutzen von std::min:<br />
[code=&quot;cpp&quot;]a = std::min(a, b);<br />
a = std::min(a, c);<br />
b = std::min(b, c);[/code]</s></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2418206</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2418206</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Thu, 18 Sep 2014 16:52:39 GMT</pubDate></item><item><title><![CDATA[Reply to drei Integer-Werte einzugeben on Thu, 18 Sep 2014 16:49:04 GMT]]></title><description><![CDATA[<p>Nathan schrieb:</p>
<blockquote>
<p>Oder geschicktes Nutzen von std::min:</p>
<pre><code>a = std::min(a, b);
a = std::min(a, c);
b = std::min(b, c);
</code></pre>
</blockquote>
<p>Das ist keine gute Idee, wenn b &lt; a verlierst Du nach dem ersten Statement den Inhalt von a.</p>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2418212</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2418212</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Thu, 18 Sep 2014 16:49:04 GMT</pubDate></item><item><title><![CDATA[Reply to drei Integer-Werte einzugeben on Thu, 18 Sep 2014 16:52:25 GMT]]></title><description><![CDATA[<p>mgaeckler schrieb:</p>
<blockquote>
<p>Nathan schrieb:</p>
<blockquote>
<p>Oder geschicktes Nutzen von std::min:</p>
<pre><code>a = std::min(a, b);
a = std::min(a, c);
b = std::min(b, c);
</code></pre>
</blockquote>
<p>Das ist keine gute Idee, wenn b &lt; a verlierst Du nach dem ersten Statement den Inhalt von a.</p>
</blockquote>
<p>Arg, stimmt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2418215</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2418215</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Thu, 18 Sep 2014 16:52:25 GMT</pubDate></item><item><title><![CDATA[Reply to drei Integer-Werte einzugeben on Fri, 19 Sep 2014 06:57:48 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>std::vector, std::sort usw. würde ich an der Stelle vermeiden, das ist nicht Sinn der Übung.</p>
</blockquote>
<p>Nein? Woher soll ich wissen, was Sinn der Übung ist?</p>
<p>Apfelkuchen um 4 schrieb:</p>
<blockquote>
<p>Wieso du bei einer fixen Anzahl an Werten mit einem <code>std::vector</code> ankommst verstehe ich nicht.</p>
</blockquote>
<p>Weil man dann nicht alles anpassen muss, wenn sich die Zahl ändert oder sogar variabel wird?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2418281</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2418281</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Fri, 19 Sep 2014 06:57:48 GMT</pubDate></item><item><title><![CDATA[Reply to drei Integer-Werte einzugeben on Fri, 19 Sep 2014 07:33:25 GMT]]></title><description><![CDATA[<p>daddy_felix schrieb:</p>
<blockquote>
<p>Bashar schrieb:</p>
<blockquote>
<p>std::vector, std::sort usw. würde ich an der Stelle vermeiden, das ist nicht Sinn der Übung.</p>
</blockquote>
<p>Nein? Woher soll ich wissen, was Sinn der Übung ist?</p>
</blockquote>
<p>Musstest du nie Aufgaben dieser Art lösen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2418289</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2418289</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 19 Sep 2014 07:33:25 GMT</pubDate></item><item><title><![CDATA[Reply to drei Integer-Werte einzugeben on Fri, 19 Sep 2014 09:27:30 GMT]]></title><description><![CDATA[<p>Zum Vergleich mal die saubere Lösung (ungetestet):</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;array&gt;
#include &lt;algorithm&gt;

int main()
{
	std::cout &lt;&lt; &quot;geben sie drei int werte ein\n&quot;;
	std::array&lt;int, 3&gt; elements;
	for (int &amp;e : elements)
	{
		std::cin &gt;&gt; e;
		//Fehlerbehandlung?
	}
	std::sort(begin(elements), end(elements));
	std::copy(begin(elements), end(elements), std::ostream_iterator&lt;int&gt;(std::cout, &quot;, &quot;));
	std::cout &lt;&lt; '\n';
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2418303</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2418303</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Fri, 19 Sep 2014 09:27:30 GMT</pubDate></item><item><title><![CDATA[Reply to drei Integer-Werte einzugeben on Fri, 19 Sep 2014 08:23:45 GMT]]></title><description><![CDATA[<p>[quote=&quot;Bashar&quot;][quote=&quot;juhu123&quot;]<br />
Mit zwei geht das so, ist aber bestimmt keine saubere Arbeit<br />
und bei drei das reine Chaos [/quote]<br />
Das ist schon OK so (mit vernünftiger Einrückung).[/quote]</p>
<p>Der Sinn der Aufgabe ist mir schon klar, es wird um den logischen Einsatz der Operatoren gehen. <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="😕"
    /><br />
Aber was ich hier mache ist totaler Käse. Den Käse erspare ich euch.</p>
<p>Es müssen wahrscheinlich mehrere Operatoren richtig verbunden werde. Darin bin ich leider nicht gut (keine Erfahrung) <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
brauche noch einen Tipp, Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2418306</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2418306</guid><dc:creator><![CDATA[juhu123]]></dc:creator><pubDate>Fri, 19 Sep 2014 08:23:45 GMT</pubDate></item><item><title><![CDATA[Reply to drei Integer-Werte einzugeben on Fri, 19 Sep 2014 08:29:33 GMT]]></title><description><![CDATA[<p>Herzlichen Glückwunsch an die üblichen Verdächtigen, die hier wieder einmal gezeigt haben, wie ach so gut sie C++ können. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /> Und nun bitte leise sein und die Leute erklären lassen, die nicht vorhaben, sich zu profilieren, sondern dem TE tatsächlich helfen möchten (z.B. Bashar).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2418309</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2418309</guid><dc:creator><![CDATA[nerdrage]]></dc:creator><pubDate>Fri, 19 Sep 2014 08:29:33 GMT</pubDate></item><item><title><![CDATA[Reply to drei Integer-Werte einzugeben on Fri, 19 Sep 2014 09:47:41 GMT]]></title><description><![CDATA[<p>Wie weit bist du in dem Buch.<br />
Darfst /Kannst du für die Aufgabe eine Funktion benutzen? z.B. ein selbst gemachtes swap oder nur vergleichen und if else ?</p>
<p>Du hast ja schon gezeigt wie es mit 2 Werten geht, versuch das Vorgehen mit 3 Werten auszubauen. bzw, zeig mal was du schon hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2418320</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2418320</guid><dc:creator><![CDATA[unsure_110]]></dc:creator><pubDate>Fri, 19 Sep 2014 09:47:41 GMT</pubDate></item><item><title><![CDATA[Reply to drei Integer-Werte einzugeben on Fri, 19 Sep 2014 09:49:29 GMT]]></title><description><![CDATA[<blockquote>
<p>Es müssen wahrscheinlich mehrere Operatoren richtig verbunden werde. Darin bin ich leider nicht gut (keine Erfahrung)<br />
brauche noch einen Tipp, Danke</p>
</blockquote>
<p>Tipps sind wie von Nathan , swap (evtl. selbst gemacht) nutzen oder eben das if Konstrukt ausbauen.</p>
<p>Oder willst du lieber eine komplette Lösung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2418321</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2418321</guid><dc:creator><![CDATA[unsure110]]></dc:creator><pubDate>Fri, 19 Sep 2014 09:49:29 GMT</pubDate></item><item><title><![CDATA[Reply to drei Integer-Werte einzugeben on Fri, 19 Sep 2014 10:24:55 GMT]]></title><description><![CDATA[<p>Ich finde die Aufgabe ziemlich schwierig für einen Anfänger. Ich wüsste auf Anhieb auch nicht wie man drei Zahlen mit Vergleichen und Vertauschen am besten in die richtige Reihenfolge bringt. Natürlich kann man das durch Herumprobieren lösen, aber was soll das? Ich kann das systematisch herleiten, aber das kann ein Programmieranfänger nicht.</p>
<p>Ich habe die Aufgabe mal ohne <code>std::sort</code> gelöst. Ich hoffe man kann das nachvollziehen (also als fortgeschrittener Mitleser).</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;array&gt;
#include &lt;algorithm&gt;
#include &lt;cassert&gt;

template &lt;class RandomAccessIterator&gt;
void bubble_sort(RandomAccessIterator begin, RandomAccessIterator end)
{
  //Ist für n=3 gut genug.
  //Kann man ein wenig effizienter umsetzen, aber das ist hier auch egal.
  for (RandomAccessIterator i = begin; i != end; ++i)
  {
    if ((i + 1) == end)
    {
      break;
    }
    for (RandomAccessIterator k = begin; (k + 1) != end; ++k)
    {
      if (k[0] &gt; k[1])
      {
        std::swap(k[0], k[1]);
      }
    }
  }
}

void unrolled_bubble_sort(std::array&lt;int, 3&gt; &amp;elements)
{
  //Ich habe manuell Inlining von bubble_sort(begin(elements), end(elements)) durchgeführt,
  //Schleifen und toten Code entfernt.
  if (elements[0] &gt; elements[1])
  {
    std::swap(elements[0], elements[1]);
  }
  if (elements[1] &gt; elements[2])
  {
    std::swap(elements[1], elements[2]);
  }
  if (elements[0] &gt; elements[1])
  {
    std::swap(elements[0], elements[1]);
  }
#if 0 //Diese Vergleiche wurden in bubble_sort gemacht, sind aber redundant.
  if (elements[1] &gt; elements[2])
  {
    std::swap(elements[1], elements[2]);
  }
  if (elements[0] &gt; elements[1])
  {
    std::swap(elements[0], elements[1]);
  }
  if (elements[1] &gt; elements[2])
  {
    std::swap(elements[1], elements[2]);
  }
#endif
}

void test_sort()
{
  //probiere alle 6 Möglichkeiten durch, um unrolled_bubble_sort zu testen (dass die Funktion für {1, 2, 2} etc korrekt ist, sehe ich so)
  std::array&lt;int, 3&gt; elements = {{1, 2, 3}};
  do
  {
    auto sorting = elements;
    ::unrolled_bubble_sort(sorting);
    assert(std::is_sorted(begin(sorting), end(sorting)));
  } while (std::next_permutation(begin(elements), end(elements)));
}

int main()
{
  test_sort();

  std::cout &lt;&lt; &quot;geben sie drei int werte ein\n&quot;;
  std::array&lt;int, 3&gt; elements;
  for (int &amp;e : elements)
  {
    std::cin &gt;&gt; e;
    //Fehlerbehandlung?
  }

  //std::sort(begin(elements), end(elements));
  ::unrolled_bubble_sort(elements);

  std::copy(begin(elements), end(elements), std::ostream_iterator&lt;int&gt;(std::cout, &quot;, &quot;));
  std::cout &lt;&lt; '\n';
}
</code></pre>
<p>Existierende Funktionalität der Sprache zum Sortieren zu nutzen halte ich in jeder Hinsicht für die beste Lösung. Es würde mich wundern, wenn das nicht gerade für Stroustrup die optimale Lösung wäre.<br />
Steht die Aufgabe denn vor der Einführung von <code>std::sort</code> in dem Buch?<br />
Es kann natürlich auch sein, dass das Herumprobieren und die damit verbundene Beschäftigung mit Sprache und Werkzeugen die eigentliche Aufgabe sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2418330</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2418330</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Fri, 19 Sep 2014 10:24:55 GMT</pubDate></item><item><title><![CDATA[Reply to drei Integer-Werte einzugeben on Fri, 19 Sep 2014 11:05:45 GMT]]></title><description><![CDATA[<p>Habs ohne kompliziertes Sortieren gepackt, musste aber ganz leicht von der Aufgabenstellung abweichen:</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

int main()
{
    cout &lt;&lt; &quot;geben sie drei int werte zwischen -1Mrd und 1Mrd ein\n&quot;;
    int wertTest1,wertTest2,wertTest3;

    cin&gt;&gt;wertTest1&gt;&gt;wertTest2&gt;&gt;wertTest3;

    for(int i=-1000000000;i&lt;=1000000000;++i)
    {
		if(i==wertTest1) cout&lt;&lt;i&lt;&lt;' ';
		if(i==wertTest2) cout&lt;&lt;i&lt;&lt;' ';
		if(i==wertTest3) cout&lt;&lt;i&lt;&lt;' ';
    }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2418346</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2418346</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 19 Sep 2014 11:05:45 GMT</pubDate></item><item><title><![CDATA[Reply to drei Integer-Werte einzugeben on Fri, 19 Sep 2014 11:13:16 GMT]]></title><description><![CDATA[<pre><code>int a, b, c; 
	int count = 0;

	std::cout &lt;&lt; &quot;Enter 3 Int's : &quot;;
	std::cin &gt;&gt; a &gt;&gt; b &gt;&gt; c ;

	do{
	  count++;

	  if (a &gt; b){
	     std::swap(a, b);
	     std::cout &lt;&lt; &quot;\n Swapped a and b\n&quot;;
	  } else if (b &gt; c){
	  	         std::swap(b, c);
	  	         std::cout &lt;&lt; &quot;\n Swapped b and c\n&quot;;
	  	 } else if(c &lt; a){
	  	 	        std::swap(c, a);
	  	 	        std::cout &lt;&lt; &quot;\nSwapped c and a\n&quot;;
	  	 	}

  	 }while ( ! ( (a &lt;= b) &amp;&amp; (b &lt;= c) &amp;&amp; (c &gt; a) ) );

  	 std::cout &lt;&lt; &quot;In # &quot; &lt;&lt; count &lt;&lt; &quot; # Changes  following Result : \n&quot; &lt;&lt; a &lt;&lt; ',' &lt;&lt; b &lt;&lt; ',' &lt;&lt; c &lt;&lt; &quot;\n&quot;;
</code></pre>
<p>Nicht besonders schön, der c &gt; a zweig ist eigentlich für die Katz , aber so würd ichs jetzt auf die Schnelle angehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2418349</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2418349</guid><dc:creator><![CDATA[maybe]]></dc:creator><pubDate>Fri, 19 Sep 2014 11:13:16 GMT</pubDate></item><item><title><![CDATA[Reply to drei Integer-Werte einzugeben on Fri, 19 Sep 2014 12:36:43 GMT]]></title><description><![CDATA[<p>maybe schrieb:</p>
<blockquote>
<p>Nicht besonders schön, der c &gt; a zweig ist eigentlich für die Katz , aber so würd ichs jetzt auf die Schnelle angehen.</p>
</blockquote>
<p>Gute Idee. Habs ein wenig verbessert. Wenn genau fassen kann, wie weit die Sortierung schon vorangeschritten ist, und das vielleicht sogar aufschreibt, kann man (wie TyRoXx es gemacht hat) Schleifen abrollen und trotzdem genau wissen, daß man korrkt bleibt.</p>
<pre><code>int a, b, c; 
//	int count = 0;//braucht keiner

	std::cout &lt;&lt; &quot;Enter 3 Int's : &quot;;
	std::cin &gt;&gt; a &gt;&gt; b &gt;&gt; c ;

//	do{
//	  count++;

	  if (a &gt; b){
	     std::swap(a, b);
	     std::cout &lt;&lt; &quot;\n Swapped a and b\n&quot;;
	  } //else
//jetzt steht von a,b der größere hinten
	if (b &gt; c){
	  	         std::swap(b, c);
	  	         std::cout &lt;&lt; &quot;\n Swapped b and c\n&quot;;
	  	 } //else 
//und jetzt steht von a,b,c der größte hinten!
//nurnoch a,b in ordnung bringen und wir sind fertig. 
	if(a &gt; b){
	  	 	        std::swap(a, b);
	  	 	        std::cout &lt;&lt; &quot;\nSwapped a and b\n&quot;;
	  	 	}

//  	 }while ( ! ( (a &lt;= b) &amp;&amp; (b &lt;= c) &amp;&amp; (c &gt; a) ) );

  	 std::cout &lt;&lt; &quot;In # &quot; &lt;&lt; count &lt;&lt; &quot; # Changes  following Result : \n&quot; &lt;&lt; a &lt;&lt; ',' &lt;&lt; b &lt;&lt; ',' &lt;&lt; c &lt;&lt; &quot;\n&quot;;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2418351</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2418351</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 19 Sep 2014 12:36:43 GMT</pubDate></item><item><title><![CDATA[Reply to drei Integer-Werte einzugeben on Fri, 19 Sep 2014 11:39:00 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>maybe schrieb:</p>
<blockquote>
<p>Nicht besonders schön, der c &gt; a zweig ist eigentlich für die Katz , aber so würd ichs jetzt auf die Schnelle angehen.</p>
</blockquote>
<p>Gute Idee. Habs ein wenig verbessert. Wenn genau fassen kann, wie weit die Sortierung schon vorangeschritten ist, und das vielleicht sogar aufschreibt, kann man (wie TyRoXx es gemacht hat) Schleifen abrollen und trotzdem genau wissen, daß man korrkt bleibt.</p>
</blockquote>
<p>Jetzt löscht man noch unnötige Debugausgaben:</p>
<pre><code>int a, b, c;
//  int count = 0;//braucht keiner

    std::cout &lt;&lt; &quot;Enter 3 Int's : &quot;;
    std::cin &gt;&gt; a &gt;&gt; b &gt;&gt; c ;

//  do{
//    count++;

      if (a &gt; b){
         std::swap(a, b);
//       std::cout &lt;&lt; &quot;\n Swapped a and b\n&quot;;
      } //else
//jetzt steht von a,b der größere hinten
    if (b &gt; c){
                 std::swap(b, c);
//               std::cout &lt;&lt; &quot;\n Swapped b and c\n&quot;;
         } //else
//und jetzt steht von a,b,c der größte hinten!
//nurnoch a,b in ordnung bringen und wir sind fertig.
    if(a &lt; b){
                    std::swap(a, b);
//                  std::cout &lt;&lt; &quot;\nSwapped a and b\n&quot;;
            }

//       }while ( ! ( (a &lt;= b) &amp;&amp; (b &lt;= c) &amp;&amp; (c &gt; a) ) );

     std::cout &lt;&lt; &quot;In # &quot; &lt;&lt; count &lt;&lt; &quot; # Changes  following Result : \n&quot; &lt;&lt; a &lt;&lt; ',' &lt;&lt; b &lt;&lt; ',' &lt;&lt; c &lt;&lt; &quot;\n&quot;;
</code></pre>
<p>Und schon erhält man das, was ich gepostet habe, nur andersherum:</p>
<p>Nathan schrieb:</p>
<blockquote>
<pre><code>if (b &lt; a)
  std::swap(a, b);
if (c &lt; a)
  std::swap(a, c);
if (c &lt; b)
  std::swap(b, c);
// a ist nun der kleinste, b der zweitkleinste, c der größte
</code></pre>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2418358</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2418358</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Fri, 19 Sep 2014 11:39:00 GMT</pubDate></item><item><title><![CDATA[Reply to drei Integer-Werte einzugeben on Fri, 19 Sep 2014 12:03:33 GMT]]></title><description><![CDATA[<p>Ich find die Lösung von Volkard auch gut. Darauf wär ich nicht gekommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2418362</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2418362</guid><dc:creator><![CDATA[maybe]]></dc:creator><pubDate>Fri, 19 Sep 2014 12:03:33 GMT</pubDate></item></channel></rss>