<?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[Sortierfunktion.... wie geht das ?!]]></title><description><![CDATA[<p>hallo leute.... hab ein kleines problem.... und zwar das untere programm was ich hier geschrieben habe.... wurde vom dozenten ein wenig geändert.... (das dick geschriebene) was ich nochmal unten rausgeholt habe....</p>
<p>mein problem ist.... das programm soll ja verschiedene zahlen die man eingibt sortieren von klein nach gross.... nun hat der dozent das dick geschriebene eine zeile versetzt unter das <strong>if (p_max &gt; 0 )</strong> dann hat er es richtig soertiert ...</p>
<p>nun die frage wieso ?! ist das so ? wenn das dick geschriebene vor dem <strong>if (p_max &gt; 0 )</strong> ist soritiert er gross nach klein und wenn das dick geschriebene hinter <strong>if (p_max &gt; 0 )</strong> ist sortiert er es von klein nach goss.... könnte mir jemand ne antw. dazu schreiben ist ziiemlich driegend..... <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>
<p>danke für eure hilfe....</p>
<pre><code class="language-cpp"># include &lt;iostream&gt;
using namespace std;

void main()  
{
	int vektorHugo[50], i, max;

	void func_sort(int[],int); //Funktionsprototyp----welche werte und in welcher reihenfolge die werte übergeben werden

	cout&lt;&lt; &quot;Geben sie die anzahl an werten ein (max 50):&quot;;
	cin &gt;&gt; max;

	for(i=0; i&lt;max; i++)
	{   
		cout&lt;&lt;endl;
		cout&lt;&lt; &quot;Geben sie die zu sortierende Zahl ein:&quot;;//Einlesen der Zahlen in Vektor
        cin &gt;&gt; vektorHugo[i];

	}

	func_sort(vektorHugo,max);

	cout &lt;&lt; endl;
}

void func_sort(int p_vektorHugo[50], int p_max)
{
	int Temp = 0,Zaehler;

	//1. Es wird das Maximum der aktuellen Reihe gesucht.
    int vergleich = 0;

	for ( Zaehler = 0; Zaehler &lt; p_max; Zaehler++ )
	{
		if( p_vektorHugo[vergleich]&lt;p_vektorHugo[Zaehler]) {
			vergleich = Zaehler;
		}
	}

	//2. Das gefundene Maximum wird mit dem jeweils letzten Wert der aktuellen Reihe vertauscht.
    Temp = p_vektorHugo[p_max-1];//erklärung:block
	p_vektorHugo[p_max-1] = p_vektorHugo[vergleich];
	p_vektorHugo[vergleich] = Temp;

	//3. Die aktuelle Reihe wird um den letzten Wert verkürzt.
	p_max--; //Kürzen des Vektors

	if (p_max &gt; 0 )//rekursivbedingung(f,ruft sich selbst solange auf bis reihe nicht mehr kürzbar ist)
	func_sort(p_vektorHugo, p_max);
	cout &lt;&lt; p_vektorHugo[p_max] &lt;&lt; &quot;\t&quot;;
}
</code></pre>
<p><strong>func_sort(p_vektorHugo, p_max);<br />
cout &lt;&lt; p_vektorHugo[p_max] &lt;&lt; &quot;\t&quot;;</strong></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/132345/sortierfunktion-wie-geht-das</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 10:46:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/132345.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 10 Jan 2006 08:36:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Sortierfunktion.... wie geht das ?! on Tue, 10 Jan 2006 08:36:30 GMT]]></title><description><![CDATA[<p>hallo leute.... hab ein kleines problem.... und zwar das untere programm was ich hier geschrieben habe.... wurde vom dozenten ein wenig geändert.... (das dick geschriebene) was ich nochmal unten rausgeholt habe....</p>
<p>mein problem ist.... das programm soll ja verschiedene zahlen die man eingibt sortieren von klein nach gross.... nun hat der dozent das dick geschriebene eine zeile versetzt unter das <strong>if (p_max &gt; 0 )</strong> dann hat er es richtig soertiert ...</p>
<p>nun die frage wieso ?! ist das so ? wenn das dick geschriebene vor dem <strong>if (p_max &gt; 0 )</strong> ist soritiert er gross nach klein und wenn das dick geschriebene hinter <strong>if (p_max &gt; 0 )</strong> ist sortiert er es von klein nach goss.... könnte mir jemand ne antw. dazu schreiben ist ziiemlich driegend..... <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>
<p>danke für eure hilfe....</p>
<pre><code class="language-cpp"># include &lt;iostream&gt;
using namespace std;

void main()  
{
	int vektorHugo[50], i, max;

	void func_sort(int[],int); //Funktionsprototyp----welche werte und in welcher reihenfolge die werte übergeben werden

	cout&lt;&lt; &quot;Geben sie die anzahl an werten ein (max 50):&quot;;
	cin &gt;&gt; max;

	for(i=0; i&lt;max; i++)
	{   
		cout&lt;&lt;endl;
		cout&lt;&lt; &quot;Geben sie die zu sortierende Zahl ein:&quot;;//Einlesen der Zahlen in Vektor
        cin &gt;&gt; vektorHugo[i];

	}

	func_sort(vektorHugo,max);

	cout &lt;&lt; endl;
}

void func_sort(int p_vektorHugo[50], int p_max)
{
	int Temp = 0,Zaehler;

	//1. Es wird das Maximum der aktuellen Reihe gesucht.
    int vergleich = 0;

	for ( Zaehler = 0; Zaehler &lt; p_max; Zaehler++ )
	{
		if( p_vektorHugo[vergleich]&lt;p_vektorHugo[Zaehler]) {
			vergleich = Zaehler;
		}
	}

	//2. Das gefundene Maximum wird mit dem jeweils letzten Wert der aktuellen Reihe vertauscht.
    Temp = p_vektorHugo[p_max-1];//erklärung:block
	p_vektorHugo[p_max-1] = p_vektorHugo[vergleich];
	p_vektorHugo[vergleich] = Temp;

	//3. Die aktuelle Reihe wird um den letzten Wert verkürzt.
	p_max--; //Kürzen des Vektors

	if (p_max &gt; 0 )//rekursivbedingung(f,ruft sich selbst solange auf bis reihe nicht mehr kürzbar ist)
	func_sort(p_vektorHugo, p_max);
	cout &lt;&lt; p_vektorHugo[p_max] &lt;&lt; &quot;\t&quot;;
}
</code></pre>
<p><strong>func_sort(p_vektorHugo, p_max);<br />
cout &lt;&lt; p_vektorHugo[p_max] &lt;&lt; &quot;\t&quot;;</strong></p>
]]></description><link>https://www.c-plusplus.net/forum/post/962407</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/962407</guid><dc:creator><![CDATA[Mike_2k]]></dc:creator><pubDate>Tue, 10 Jan 2006 08:36:30 GMT</pubDate></item><item><title><![CDATA[Reply to Sortierfunktion.... wie geht das ?! on Tue, 10 Jan 2006 09:20:18 GMT]]></title><description><![CDATA[<p>Der sortiert immer von klein nach groß, nur unterscheidet sich die Reihenfolge der Ausgaben je nachdem, wo du das &quot;cout&lt;&lt;...&quot; hinsetzt.</p>
<pre><code>sort_1(v,n)
{
  //finde Maximum und setze es ans Ende

  n--;
  cout&lt;&lt;v[n];          //gibt aktuell größten Wert aus
  if(n&gt;0) sort_1(v,n); //sortiert Restliste
}
-&gt; Werte werden rückwärts ausgegeben

sort_1(v,n)
{
  //finde Maximum und setze es ans Ende

  n--;
  if(n&gt;0) sort_1(v,n); //sortiert Restliste
  cout&lt;&lt;v[n];          //gibt aktuell größten Wert aus
}
-&gt; Werte werden vorwärts ausgegeben
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/962437</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/962437</guid><dc:creator><![CDATA[CStoll (off)]]></dc:creator><pubDate>Tue, 10 Jan 2006 09:20:18 GMT</pubDate></item><item><title><![CDATA[Reply to Sortierfunktion.... wie geht das ?! on Tue, 10 Jan 2006 15:21:40 GMT]]></title><description><![CDATA[<p>versteh ich nicht....</p>
<p>das mit dem sortieren verstehe ich.... aber ich verstehe nur nicht wenn ich das<br />
<strong>func_sort(p_vektorHugo, p_max);<br />
cout &lt;&lt; p_vektorHugo[p_max] &lt;&lt; &quot;\t&quot;;</strong></p>
<p>unter das <strong>if (p_max &gt; 0 )</strong> schreibe dann sortiert er richtig ansonsten sortiert er ja von gross nach klein.... das war mein prob und ist es immer noch</p>
]]></description><link>https://www.c-plusplus.net/forum/post/962786</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/962786</guid><dc:creator><![CDATA[Mike_2k]]></dc:creator><pubDate>Tue, 10 Jan 2006 15:21:40 GMT</pubDate></item><item><title><![CDATA[Reply to Sortierfunktion.... wie geht das ?! on Tue, 10 Jan 2006 17:09:21 GMT]]></title><description><![CDATA[<p>Ich glaube, Du hast da ein Problem mit dem Prinzip der Rekursion.</p>
<p>1. Wenn Du die Zahl ausgibst, BEVOR der rekursive Aufruf gemacht wird, dann wird das Programm die höchste Zahl ausgeben, die es bis dahin ermittelt hat, danach die Funktion rekursiv erneut starten, und dann im wiederum die grösste bis dahin ermittelte Zahl ausgeben, etc.<br />
Als Beispiel folgende Funktion:</p>
<pre><code class="language-cpp">void func1(int n)
{
   cout &lt;&lt; n &lt;&lt; endl;
   if (n&gt;0) func1(n-1);
}
</code></pre>
<p>Wenn Du im Programm diese Funktion mit func1(10) aufrufst, geschieht folgendes:<br />
Die Funktion gibt als erstes die Zahl n (im diesem Fall wäre das 10) aus, danach ruft sie sich selbst auf und zieht dabei 1 von n ab, falls n grösser als 0 ist. Nun wird wiederum n ausgegeben (jetzt 9) und wieder ruft sich die Funktion rekursiv auf, etc. Die Ausgabe wird also von 10 an rückwärts bis 0 zählen.</p>
<p>2. Wenn Du die Zahl ausgibst, NACHDEM der rekursive Aufruf gemacht wurde, dann wird die Funktion solange ohne Ausgabe aufgerufen, bis die Abbruchbedingung erreicht ist. Dann gibt das Programm die ermittelte Zahl aus (das ist jetzt die kleinste Zahl...) und springt zurück zur aufrufenden Funktion, und arbeitet diese weiter ab. Dort steht jetzt wieder die Anweisung zur Ausgabe einer Zahl, usw. bis Du wieder beim ersten Funktionsaufruf gelandet bist, in dem dann die grösste Zahl ausgegeben wird.<br />
Analog zu oben kann man als Beispiel schreiben:</p>
<pre><code class="language-cpp">void func2(int n)
{
   if (n&gt;0) func2(n-1);
   cout &lt;&lt; n &lt;&lt; endl;
}
</code></pre>
<p>Wenn man diese Funktion mit func2(10) aufruft, dann zählt die Ausgabe aufwärts von 0 bis 10. Denn zuerst wird immer func2(n-1) aufgerufen, bis n==0 ist. Und erst dann wird n ausgegeben. In diesem Fall ist natürlich die erste Ausgabe 0.</p>
<p>Dein Sortieralgorithmus hat vollkommen richtig sortiert, d.h. die Elemente sind am Schluss tatsächlich von klein nach gross angeordnet. Du kannst das überprüfen, indem Du in der main-Funktion nach dem Sortieren noch alle Elemente des Arrays ausgibst:</p>
<pre><code class="language-cpp">for(i=0; i&lt;max; ++i)
      cout &lt;&lt; vektorHugo[i] &lt;&lt; endl;
</code></pre>
<p>Die sind jetzt alle schön von klein nach gross sortiert.</p>
<p>Gruss, Andreas</p>
]]></description><link>https://www.c-plusplus.net/forum/post/962892</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/962892</guid><dc:creator><![CDATA[Andreas2]]></dc:creator><pubDate>Tue, 10 Jan 2006 17:09:21 GMT</pubDate></item></channel></rss>