<?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[Funktion mittels Rekursion erstellen]]></title><description><![CDATA[<p>Hallo Zusammen,</p>
<p>Habe folgende Aufgaben zu lösen und komme bei der letzten Aufgabe nicht weiter..<br />
Würdet ihr die Aufgabe 4 auch so angehen, oder ist der Ansatz schon komplett falsch?</p>
<p>Die Aufgaben:</p>
<p>1. Funktion 1 (mittels Iteration): void input(int n, int<br />
array[])<br />
Einlesen von n Elementen in den Array von der Tastatur</p>
<p>2. Funktion 2 (mittels Iteration): void output(int n, int<br />
array[])<br />
Formatierte Ausgabe des Arrays aus n Elementen auf dem<br />
Bildschirm</p>
<p>3. Funktion 3 (mittels Iteration): void copy(int quelle[],<br />
int quelle_laenge, int anfang, int anzahl, int<br />
ziel[], int ziel_anfang, int ziel_laenge)<br />
Es soll ein Abschnitt des Arrays quelle (Gesamtlänge<br />
quelle_laenge, Anfang anfang, Anzahl anzahl) in das<br />
Array ziel kopiert werden (überschreibend, ab Element<br />
ziel_anfang, Gesamtlänge ziel_laenge).</p>
<p>4. Funktion 4 (mittels Rekursion): void mischen(int<br />
quelle1[], int quelle1_laenge, int quelle2[],<br />
int quelle2_laenge, int ziel[])<br />
Die Elemente zweier aufsteigend sortierter Arrays quelle1 und<br />
quelle2 sollen zusammengemischt und in einem Array ziel<br />
aufsteigend gespeichert werden.</p>
<p>Idee: Maximum aus quelle1 und quelle2 bestimmen und ans<br />
Ende des Arrays ziel kopieren, dann rekursiv weitermachen<br />
und dabei den Array in dem das Maximum gefunden wurde um<br />
ein Element (das Element am Ende, da die Arrays aufsteigend<br />
sortiert sind) verkürzen, indem der Parameter<br />
quelle1_laenge bzw. quelle2_laenge um 1 vermindert<br />
wird.</p>
<p>Der Code:</p>
<pre><code># include &lt;iostream&gt;

using namespace std;

int input(int const limit, int arr[])
{
int n;

cout &lt;&lt; &quot; Wie viele Elemente wolle Sie einlesen ( maximal &quot;&lt;&lt; 25 &lt;&lt;&quot; ) ? &quot; &lt;&lt; endl;
cin &gt;&gt; n;
cout &lt;&lt; &quot;&quot; &lt;&lt; endl;

	while ( n &gt; limit)
	{
	cout &lt;&lt; &quot; Es koennen nur maximal 25 Elemente eingelesen werden.\n&quot; &lt;&lt; endl; 
	cout &lt;&lt; &quot; Wie viele Elemente wolle Sie einlesen ( maximal &quot;&lt;&lt; 25 &lt;&lt;&quot; ) ? &quot; &lt;&lt; endl;
	cin &gt;&gt; n;
	cout &lt;&lt; &quot;&quot; &lt;&lt; endl;
	}
		for (int i = 0; i &lt; n ; i++)
		{
		cout &lt;&lt; &quot; Bitte geben Sie Element Nummer &quot;&lt;&lt; i+1 &lt;&lt; &quot; ein.&quot;&lt;&lt;endl;
		cin &gt;&gt; arr[i];
		}

cout &lt;&lt; &quot;&quot; &lt;&lt; endl;

return n;
}
void output(int n, int arr[])
{
for(int i = 0; i &lt; n; i++)
    for(int j = i+1; j &lt; n ; j++)
{
        if (arr[i] &gt; arr[j])
		{
            int temp;
            temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
}
cout &lt;&lt; &quot; Die Zahlen sortiert: \n&quot; &lt;&lt; endl;
for(int x = 0; x &lt; n; x++)
    {
        cout &lt;&lt; arr[x] &lt;&lt; &quot; &quot;;	
    }
cout &lt;&lt; &quot;\n&quot; &lt;&lt; endl;

}
void copy(int quelle[],int quelle_laenge, int anfang, int anzahl, int ziel1[], int ziel_anfang, int ziel_laenge)
{
int temparr[3]={};

	for (int i = anfang, j = 0; i &lt; anzahl, j &lt; anzahl; i++, j++)
	{
		temparr[j] = quelle[i];
	}
			for (int l = ziel_anfang-1, k = 0; l &lt; anzahl, k &lt; anzahl; l++, k++)
			{
				ziel1[l] = temparr[k];
			}
					cout &lt;&lt; &quot; Die Zahlen eingefuegt: \n&quot; &lt;&lt; endl;
					for(int x = 0; x &lt; ziel_laenge; x++)
					{
						cout &lt;&lt; ziel1[x] &lt;&lt; &quot; &quot;;	
					}
						cout &lt;&lt; &quot;\n&quot; &lt;&lt; endl;

}
int mischen(int quelle1[], int  quelle1_laenge, int quelle2[], int  quelle2_laenge, int ziel[])
{
	for( int k = 11; k &gt;= 0; k--)
	{
		if(quelle1[quelle1_laenge] == quelle2[quelle2_laenge])
			{	
			for(int i = 0; i &lt; quelle1_laenge; i++)
			for(int j = i+1; j &lt; quelle1_laenge ; j++)
				{
				if (quelle1[i] &gt; quelle1[j])							// quelle1 sortieren
					{
					int temp;
					temp = quelle1[i];
					quelle1[i] = quelle1[j];
					quelle1[j] = temp;
					}
				}
						ziel[k] = quelle1[quelle1_laenge];
						return quelle1_laenge-1;
			}
		else
		{
		if(quelle1[quelle1_laenge] &gt; quelle2[quelle2_laenge])
		{
			for(int i = 0; i &lt; quelle1_laenge; i++)
			for(int j = i+1; j &lt; quelle1_laenge ; j++)
				{
				if (quelle1[i] &gt; quelle1[j])							// quelle1 sortieren
					{
					int temp;
					temp = quelle1[i];
					quelle1[i] = quelle1[j];
					quelle1[j] = temp;
					}
				}
						ziel[k] = quelle1[quelle1_laenge];
						return quelle1_laenge-1;
		}
		else
		{
			for(int i = 0; i &lt; quelle2_laenge; i++)
			for(int j = i+1; j &lt; quelle2_laenge ; j++)
				{
				if (quelle2[i] &gt; quelle2[j])					// quelle2 sortieren
					{
					int temp;
					temp = quelle2[i];
					quelle2[i] = quelle2[j];
					quelle2[j] = temp;
					}

				}
						ziel[k] = quelle2[quelle2_laenge];
						return quelle2_laenge-1;
		}
		}	

	}
	cout &lt;&lt; &quot; Die Zahlen zusammengefuegt und sortiert: \n&quot; &lt;&lt; endl;
	for(int x = 0; x &lt; 11; x++)
	{
	cout &lt;&lt; ziel[x] &lt;&lt; &quot; &quot;;				// ziel ausgeben
	}
	cout &lt;&lt; &quot;&quot; &lt;&lt; endl;
}
int main ()
{
int const limit = 25;
int arr[limit];
int n = 0;

int quelle[6] = {1,2,3,4,5,6};
int quelle_laenge = 6;

int anzahl = 3;
int anfang = 2;

int ziel1[12] = {};
int ziel_anfang = 2;
int ziel_laenge = 12;

int quelle1_laenge = 5;
int quelle1[5] = {99,88,77,66,55};
int quelle2_laenge = 6;
int quelle2[6] = {88,77,66,55,44,33}; 
int ziel[11] = {};

				//Funktionen

				cout &lt;&lt; &quot;Aufgabe 1:\n&quot; &lt;&lt; endl;
				n = input(limit, arr);

				cout &lt;&lt; &quot;Aufgabe 2:\n&quot; &lt;&lt; endl;
				output(n, arr);

				cout &lt;&lt; &quot;Aufgabe 3:\n&quot; &lt;&lt; endl;
				copy(quelle, quelle_laenge, anfang, anzahl, ziel1, ziel_anfang, ziel_laenge);

				cout &lt;&lt; &quot;Aufgabe 4:\n&quot; &lt;&lt; endl;
				mischen(quelle1, quelle1_laenge, quelle2, quelle2_laenge, ziel);

system (&quot;pause&quot;);
return 0;
}
</code></pre>
<p>Danke euch! <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/topic/320257/funktion-mittels-rekursion-erstellen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Jul 2026 05:54:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/320257.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 21 Sep 2013 19:14:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktion mittels Rekursion erstellen on Sat, 21 Sep 2013 19:14:41 GMT]]></title><description><![CDATA[<p>Hallo Zusammen,</p>
<p>Habe folgende Aufgaben zu lösen und komme bei der letzten Aufgabe nicht weiter..<br />
Würdet ihr die Aufgabe 4 auch so angehen, oder ist der Ansatz schon komplett falsch?</p>
<p>Die Aufgaben:</p>
<p>1. Funktion 1 (mittels Iteration): void input(int n, int<br />
array[])<br />
Einlesen von n Elementen in den Array von der Tastatur</p>
<p>2. Funktion 2 (mittels Iteration): void output(int n, int<br />
array[])<br />
Formatierte Ausgabe des Arrays aus n Elementen auf dem<br />
Bildschirm</p>
<p>3. Funktion 3 (mittels Iteration): void copy(int quelle[],<br />
int quelle_laenge, int anfang, int anzahl, int<br />
ziel[], int ziel_anfang, int ziel_laenge)<br />
Es soll ein Abschnitt des Arrays quelle (Gesamtlänge<br />
quelle_laenge, Anfang anfang, Anzahl anzahl) in das<br />
Array ziel kopiert werden (überschreibend, ab Element<br />
ziel_anfang, Gesamtlänge ziel_laenge).</p>
<p>4. Funktion 4 (mittels Rekursion): void mischen(int<br />
quelle1[], int quelle1_laenge, int quelle2[],<br />
int quelle2_laenge, int ziel[])<br />
Die Elemente zweier aufsteigend sortierter Arrays quelle1 und<br />
quelle2 sollen zusammengemischt und in einem Array ziel<br />
aufsteigend gespeichert werden.</p>
<p>Idee: Maximum aus quelle1 und quelle2 bestimmen und ans<br />
Ende des Arrays ziel kopieren, dann rekursiv weitermachen<br />
und dabei den Array in dem das Maximum gefunden wurde um<br />
ein Element (das Element am Ende, da die Arrays aufsteigend<br />
sortiert sind) verkürzen, indem der Parameter<br />
quelle1_laenge bzw. quelle2_laenge um 1 vermindert<br />
wird.</p>
<p>Der Code:</p>
<pre><code># include &lt;iostream&gt;

using namespace std;

int input(int const limit, int arr[])
{
int n;

cout &lt;&lt; &quot; Wie viele Elemente wolle Sie einlesen ( maximal &quot;&lt;&lt; 25 &lt;&lt;&quot; ) ? &quot; &lt;&lt; endl;
cin &gt;&gt; n;
cout &lt;&lt; &quot;&quot; &lt;&lt; endl;

	while ( n &gt; limit)
	{
	cout &lt;&lt; &quot; Es koennen nur maximal 25 Elemente eingelesen werden.\n&quot; &lt;&lt; endl; 
	cout &lt;&lt; &quot; Wie viele Elemente wolle Sie einlesen ( maximal &quot;&lt;&lt; 25 &lt;&lt;&quot; ) ? &quot; &lt;&lt; endl;
	cin &gt;&gt; n;
	cout &lt;&lt; &quot;&quot; &lt;&lt; endl;
	}
		for (int i = 0; i &lt; n ; i++)
		{
		cout &lt;&lt; &quot; Bitte geben Sie Element Nummer &quot;&lt;&lt; i+1 &lt;&lt; &quot; ein.&quot;&lt;&lt;endl;
		cin &gt;&gt; arr[i];
		}

cout &lt;&lt; &quot;&quot; &lt;&lt; endl;

return n;
}
void output(int n, int arr[])
{
for(int i = 0; i &lt; n; i++)
    for(int j = i+1; j &lt; n ; j++)
{
        if (arr[i] &gt; arr[j])
		{
            int temp;
            temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
}
cout &lt;&lt; &quot; Die Zahlen sortiert: \n&quot; &lt;&lt; endl;
for(int x = 0; x &lt; n; x++)
    {
        cout &lt;&lt; arr[x] &lt;&lt; &quot; &quot;;	
    }
cout &lt;&lt; &quot;\n&quot; &lt;&lt; endl;

}
void copy(int quelle[],int quelle_laenge, int anfang, int anzahl, int ziel1[], int ziel_anfang, int ziel_laenge)
{
int temparr[3]={};

	for (int i = anfang, j = 0; i &lt; anzahl, j &lt; anzahl; i++, j++)
	{
		temparr[j] = quelle[i];
	}
			for (int l = ziel_anfang-1, k = 0; l &lt; anzahl, k &lt; anzahl; l++, k++)
			{
				ziel1[l] = temparr[k];
			}
					cout &lt;&lt; &quot; Die Zahlen eingefuegt: \n&quot; &lt;&lt; endl;
					for(int x = 0; x &lt; ziel_laenge; x++)
					{
						cout &lt;&lt; ziel1[x] &lt;&lt; &quot; &quot;;	
					}
						cout &lt;&lt; &quot;\n&quot; &lt;&lt; endl;

}
int mischen(int quelle1[], int  quelle1_laenge, int quelle2[], int  quelle2_laenge, int ziel[])
{
	for( int k = 11; k &gt;= 0; k--)
	{
		if(quelle1[quelle1_laenge] == quelle2[quelle2_laenge])
			{	
			for(int i = 0; i &lt; quelle1_laenge; i++)
			for(int j = i+1; j &lt; quelle1_laenge ; j++)
				{
				if (quelle1[i] &gt; quelle1[j])							// quelle1 sortieren
					{
					int temp;
					temp = quelle1[i];
					quelle1[i] = quelle1[j];
					quelle1[j] = temp;
					}
				}
						ziel[k] = quelle1[quelle1_laenge];
						return quelle1_laenge-1;
			}
		else
		{
		if(quelle1[quelle1_laenge] &gt; quelle2[quelle2_laenge])
		{
			for(int i = 0; i &lt; quelle1_laenge; i++)
			for(int j = i+1; j &lt; quelle1_laenge ; j++)
				{
				if (quelle1[i] &gt; quelle1[j])							// quelle1 sortieren
					{
					int temp;
					temp = quelle1[i];
					quelle1[i] = quelle1[j];
					quelle1[j] = temp;
					}
				}
						ziel[k] = quelle1[quelle1_laenge];
						return quelle1_laenge-1;
		}
		else
		{
			for(int i = 0; i &lt; quelle2_laenge; i++)
			for(int j = i+1; j &lt; quelle2_laenge ; j++)
				{
				if (quelle2[i] &gt; quelle2[j])					// quelle2 sortieren
					{
					int temp;
					temp = quelle2[i];
					quelle2[i] = quelle2[j];
					quelle2[j] = temp;
					}

				}
						ziel[k] = quelle2[quelle2_laenge];
						return quelle2_laenge-1;
		}
		}	

	}
	cout &lt;&lt; &quot; Die Zahlen zusammengefuegt und sortiert: \n&quot; &lt;&lt; endl;
	for(int x = 0; x &lt; 11; x++)
	{
	cout &lt;&lt; ziel[x] &lt;&lt; &quot; &quot;;				// ziel ausgeben
	}
	cout &lt;&lt; &quot;&quot; &lt;&lt; endl;
}
int main ()
{
int const limit = 25;
int arr[limit];
int n = 0;

int quelle[6] = {1,2,3,4,5,6};
int quelle_laenge = 6;

int anzahl = 3;
int anfang = 2;

int ziel1[12] = {};
int ziel_anfang = 2;
int ziel_laenge = 12;

int quelle1_laenge = 5;
int quelle1[5] = {99,88,77,66,55};
int quelle2_laenge = 6;
int quelle2[6] = {88,77,66,55,44,33}; 
int ziel[11] = {};

				//Funktionen

				cout &lt;&lt; &quot;Aufgabe 1:\n&quot; &lt;&lt; endl;
				n = input(limit, arr);

				cout &lt;&lt; &quot;Aufgabe 2:\n&quot; &lt;&lt; endl;
				output(n, arr);

				cout &lt;&lt; &quot;Aufgabe 3:\n&quot; &lt;&lt; endl;
				copy(quelle, quelle_laenge, anfang, anzahl, ziel1, ziel_anfang, ziel_laenge);

				cout &lt;&lt; &quot;Aufgabe 4:\n&quot; &lt;&lt; endl;
				mischen(quelle1, quelle1_laenge, quelle2, quelle2_laenge, ziel);

system (&quot;pause&quot;);
return 0;
}
</code></pre>
<p>Danke euch! <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/2354496</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354496</guid><dc:creator><![CDATA[Mr. Bit]]></dc:creator><pubDate>Sat, 21 Sep 2013 19:14:41 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mittels Rekursion erstellen on Sat, 21 Sep 2013 19:36:14 GMT]]></title><description><![CDATA[<p>Bitte ordentlich Einrücken, sonst schaut sich niemand deinen Code an!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354501</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354501</guid><dc:creator><![CDATA[einrücknazi]]></dc:creator><pubDate>Sat, 21 Sep 2013 19:36:14 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mittels Rekursion erstellen on Sat, 21 Sep 2013 19:55:51 GMT]]></title><description><![CDATA[<p>Was das Sortieren in der mischen-Funktion zu suchen hat, frage ich mich. Ich hätte die Aufgabe so verstanden, dass mischen schon sortierte Quellen bekommt und einfach &quot;mergen&quot; soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354507</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sat, 21 Sep 2013 19:55:51 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mittels Rekursion erstellen on Sat, 21 Sep 2013 20:10:01 GMT]]></title><description><![CDATA[<p>krümelkacker schrieb:</p>
<blockquote>
<p>Was das Sortieren in der mischen-Funktion zu suchen hat, frage ich mich. Ich hätte die Aufgabe so verstanden, dass mischen schon sortierte Quellen bekommt und einfach &quot;mergen&quot; soll.</p>
</blockquote>
<p>sieht so aus. ist aber kein guter anwendungsfall für rekursion. wer denkt sich solche blödsinnsaufgeben aus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354512</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354512</guid><dc:creator><![CDATA[pittbull]]></dc:creator><pubDate>Sat, 21 Sep 2013 20:10:01 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mittels Rekursion erstellen on Sat, 21 Sep 2013 20:21:54 GMT]]></title><description><![CDATA[<p>pittbull schrieb:</p>
<blockquote>
<p>sieht so aus. ist aber kein guter anwendungsfall für rekursion. wer denkt sich solche blödsinnsaufgeben aus?</p>
</blockquote>
<p>Wird wohl auf Mergesort hisnauslaufen, wo dann Rekursion durchaus angemessen ist. Diese Merge-Funktion müßte halt dann ausgetauscht werden durch eine iterative.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354514</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354514</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sat, 21 Sep 2013 20:21:54 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mittels Rekursion erstellen on Sat, 21 Sep 2013 20:28:23 GMT]]></title><description><![CDATA[<p>Wer sagt es denn, volkard ist zurück! <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2354519</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354519</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sat, 21 Sep 2013 20:28:23 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mittels Rekursion erstellen on Sat, 21 Sep 2013 20:29:07 GMT]]></title><description><![CDATA[<p>Bevor du dich an die Rekursion wagst, solltest du doch erstmal die einfachen Sachen richtig machen.</p>
<p>1. Input<br />
Du hast den Prototypen der Funktion bekommen. Die hat keinen (void) Rückgabewert.<br />
Also fragt die Funktion auch nicht ab, wieviel Werte eingelesen werden sollen. Das bekommt si mitgeteilt.</p>
<p>2. Output.<br />
Die Ausgabe soll <strong>f</strong>or<strong>ma</strong>tiert erfolgen und nicht sortiert.<br />
Durch Leerzeichen getrennt ist eher nicht formatiert.</p>
<p>3. Copy<br />
Die einzige Stelle wo du ziel_laenge verwendest, ist bei der Ausgabe (und die hat in dieser Funktion gar nichts zu suchen).<br />
Was soll das temparr mit nur 3 Elementen? (beantworte dir selbst die Frage, nicht mir)<br />
Du must vorher checken, ob durch die Angaben der Start- und Zielindices und der Länge irgendwo die Grenzen der Arrays überschritten werden und dann die Angaben entsprechend ändern.<br />
Dann bleibt eine Schleife ohne Hilfsvariablen über.</p>
<p>4. Mischen mittels Rekursion<br />
Rekursion bedeutet wiederholter Aufruf der Funktion aus sich selber.<br />
Keine Schleifen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354520</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354520</guid><dc:creator><![CDATA[DirkB]]></dc:creator><pubDate>Sat, 21 Sep 2013 20:29:07 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mittels Rekursion erstellen on Sat, 21 Sep 2013 20:39:03 GMT]]></title><description><![CDATA[<p>Als Inspiration zum Mergesort: <a href="http://www.youtube.com/watch?v=XaqR3G_NVoo" rel="nofollow">http://www.youtube.com/watch?v=XaqR3G_NVoo</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354524</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354524</guid><dc:creator><![CDATA[DirkB]]></dc:creator><pubDate>Sat, 21 Sep 2013 20:39:03 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mittels Rekursion erstellen on Sat, 21 Sep 2013 20:48:26 GMT]]></title><description><![CDATA[<p>DirkB schrieb:</p>
<blockquote>
<p>Als Inspiration zum Mergesort: <a href="http://www.youtube.com/watch?v=XaqR3G_NVoo" rel="nofollow">http://www.youtube.com/watch?v=XaqR3G_NVoo</a></p>
</blockquote>
<p>Hab da Mergesort eher nicht erkannt.</p>
<p>Der da sagt mir zu.<br />
<a href="http://www.youtube.com/watch?v=EeQ8pwjQxTM" rel="nofollow">http://www.youtube.com/watch?v=EeQ8pwjQxTM</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354526</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354526</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sat, 21 Sep 2013 20:48:26 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mittels Rekursion erstellen on Sat, 21 Sep 2013 21:03:36 GMT]]></title><description><![CDATA[<p>Zur zweiten Aufgabe:</p>
<p>Was ist denn für dich formatiert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354528</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354528</guid><dc:creator><![CDATA[Mr. Bit]]></dc:creator><pubDate>Sat, 21 Sep 2013 21:03:36 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mittels Rekursion erstellen on Sat, 21 Sep 2013 21:06:28 GMT]]></title><description><![CDATA[<p>Mr. Bit schrieb:</p>
<blockquote>
<p>Was ist denn für dich formatiert?</p>
</blockquote>
<p>Sauber strukturiert und geordnet.</p>
<blockquote>
<p>Rekursion bedeutet <strong>wiederholter</strong> Aufruf der Funktion aus sich selber.</p>
</blockquote>
<p>Das muss nicht wiederholt sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354529</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354529</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sat, 21 Sep 2013 21:06:28 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mittels Rekursion erstellen on Sat, 21 Sep 2013 21:08:24 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Sauber strukturiert und geordnet.</p>
</blockquote>
<p>Also nur als Ausgabe 1 2 3 4 5 oder was??? Tolle Aufgabe...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354530</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354530</guid><dc:creator><![CDATA[Mr. Bit]]></dc:creator><pubDate>Sat, 21 Sep 2013 21:08:24 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mittels Rekursion erstellen on Sat, 21 Sep 2013 21:12:01 GMT]]></title><description><![CDATA[<p>Mr. Bit schrieb:</p>
<blockquote>
<p>Also nur als Ausgabe 1 2 3 4 5 oder was???</p>
</blockquote>
<p>So ungefähr, ja.<br />
Das erreichst du schon mit</p>
<pre><code>std::copy( arr, arr + n, std::ostream_iterator&lt;int&gt;(std::cout, &quot; &quot;));
</code></pre>
<p>Und das Einlesen durch</p>
<pre><code>std::copy_n( std::istream_iterator&lt;int&gt;(std::cin), n, arr );
</code></pre>
<p>Aber die Aufgabe will ja, dass du die Schleife explizit schreibst.</p>
<blockquote>
<p>Tolle Aufgabe...</p>
</blockquote>
<p>Das ist nicht der Grund, warum die Aufgaben Blödsinn sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354531</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354531</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sat, 21 Sep 2013 21:12:01 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mittels Rekursion erstellen on Sat, 21 Sep 2013 21:24:58 GMT]]></title><description><![CDATA[<p>Mr. Bit schrieb:</p>
<blockquote>
<p>Also nur als Ausgabe 1 2 3 4 5 oder was??? Tolle Aufgabe...</p>
</blockquote>
<p>Formatiet kann auch</p>
<pre><code>0 |   30
 1 |  110
..
24 |    3
</code></pre>
<p>oder</p>
<pre><code>Das  1. Elemnet ist:   30
Das  2. Elemnet ist:  110
..
Das 25. Elemnet ist:    3
</code></pre>
<p>bedeuten.<br />
(Achte auf die Ausrichtung der Zahlen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354534</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354534</guid><dc:creator><![CDATA[DirkB]]></dc:creator><pubDate>Sat, 21 Sep 2013 21:24:58 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mittels Rekursion erstellen on Sat, 21 Sep 2013 21:40:41 GMT]]></title><description><![CDATA[<p>Naja da würde ich sagen lasse ich es beim Leerzeichen...</p>
<p>So bis jetzt regelkonform?</p>
<pre><code>void output(int n, int arr[])
{
cout &lt;&lt; &quot; Die Zahlen formatiert: \n&quot; &lt;&lt; endl;
for(int x = 0; x &lt; n; x++)
    {
        cout &lt;&lt;&quot;&quot; &lt;&lt; arr[x] &lt;&lt; &quot; &quot;;	
    }
cout &lt;&lt; &quot;\n&quot; &lt;&lt; endl;

}
void copy(int quelle[],int quelle_laenge, int anfang, int anzahl, int ziel1[], int ziel_anfang, int ziel_laenge)
{
	for (int i = anfang-1, j = ziel_anfang-1; i &lt; anzahl, j &lt; (ziel_anfang-1+anzahl); i++, j++)
	{
		ziel1[j] = quelle[i];
	}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2354540</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354540</guid><dc:creator><![CDATA[Mr. Bit]]></dc:creator><pubDate>Sat, 21 Sep 2013 21:40:41 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mittels Rekursion erstellen on Sat, 21 Sep 2013 21:47:25 GMT]]></title><description><![CDATA[<p>Mr. Bit schrieb:</p>
<blockquote>
<p>So bis jetzt regelkonform?</p>
</blockquote>
<p>Ich nehme an, Du menutzt den Microsoft-Compiler?</p>
<p>Dann Drücke Alt+A (alles markieren) und dann Alt+F8 (alles automatisch einrücken) vor dem Posten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354547</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354547</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sat, 21 Sep 2013 21:47:25 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mittels Rekursion erstellen on Sat, 21 Sep 2013 21:49:45 GMT]]></title><description><![CDATA[<p>Nein.</p>
<p>Du weißt nicht, was <code>i &lt; anzahl, j &lt; (ziel_anfang-1+anzahl)</code> macht.</p>
<p>Außerdem läßt du vollkommen <code>quelle_laenge</code> und <code>ziel_laenge</code> außer acht.<br />
Und bist du dir bei den -1 sicher?</p>
<p>Da in C der Index bei Arrays bei 0 anfängt, würde ich auch eine 0 für <code>anfang</code> angeben, wenn die Quelleu und /oder das Ziel ganz am Anfang ist.<br />
Aber das ist Definitionssache, die du aber dokumentiern musst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354548</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354548</guid><dc:creator><![CDATA[DirkB]]></dc:creator><pubDate>Sat, 21 Sep 2013 21:49:45 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mittels Rekursion erstellen on Sat, 21 Sep 2013 21:57:50 GMT]]></title><description><![CDATA[<p>Wie soll ich denn hier die längen verwenden? Die werden doch in der main bestimmt. Wozu brauche ich die in der Funktion?</p>
<p>Würdest du das kopieren in einer oder mehreren Schleifen machen?</p>
<p>Bei meinem geposteten Code hat die Ausgabe gestimmt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354552</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354552</guid><dc:creator><![CDATA[Mr. Bit]]></dc:creator><pubDate>Sat, 21 Sep 2013 21:57:50 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mittels Rekursion erstellen on Sat, 21 Sep 2013 22:04:31 GMT]]></title><description><![CDATA[<p>Mr. Bit schrieb:</p>
<blockquote>
<p>Wie soll ich denn hier die längen verwenden? Die werden doch in der main bestimmt. Wozu brauche ich die in der Funktion?</p>
<p>Würdest du das kopieren in einer oder mehreren Schleifen machen?</p>
<p>Bei meinem geposteten Code hat die Ausgabe gestimmt.</p>
</blockquote>
<p>Ja, für dein spezielles Beispiel.<br />
Dann setze anzahl mal auf 6 und ziel_anfang auf 10.<br />
Und dann noch anfang auf 4.<br />
(Bei den Angaben beziehe ich mich auf dein Eröffnungspost)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354554</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354554</guid><dc:creator><![CDATA[DirkB]]></dc:creator><pubDate>Sat, 21 Sep 2013 22:04:31 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mittels Rekursion erstellen on Sat, 21 Sep 2013 22:08:28 GMT]]></title><description><![CDATA[<p>Wie soll ich denn hier die längen verwenden? Die werden doch in der main bestimmt. Wozu brauche ich die in der Funktion?</p>
<p>Würdest du das kopieren in einer oder mehreren Schleifen machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354556</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354556</guid><dc:creator><![CDATA[Mr. Bit]]></dc:creator><pubDate>Sat, 21 Sep 2013 22:08:28 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mittels Rekursion erstellen on Sat, 21 Sep 2013 22:38:28 GMT]]></title><description><![CDATA[<p>Damit du nicht über die Grenzen des Arrays schreibst/liest.<sup>*</sup></p>
<p>War mein Beispiel nicht deutlich?</p>
<p>Wieviel Schleifen willst du denn nehmen? Und warum?</p>
<p><sup>*</sup>Die Funktion kann aus den Array allein nicht mehr die Größe bestimmen.<br />
Und du greifst auf die Arrays in der Funktion zu. Da nützt es nichts wenn die Größen in der main bekannt sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354560</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354560</guid><dc:creator><![CDATA[DirkB]]></dc:creator><pubDate>Sat, 21 Sep 2013 22:38:28 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mittels Rekursion erstellen on Sun, 22 Sep 2013 11:47:51 GMT]]></title><description><![CDATA[<p>Also ich weiß nicht wie ich das ohne anzahl -1 machen soll...</p>
<p>Das cout ist nur zur kontrolle Deklariert...</p>
<pre><code>void copy(int quelle[],int quelle_laenge, int anfang, int anzahl, int ziel1[], int ziel_anfang, int ziel_laenge)
{
	if( anfang+anzahl &gt; quelle_laenge)
	{
		cout &lt;&lt; &quot; Die zu kopierenden Elemente ueberschreiten die Array Groesse.\n&quot; &lt;&lt; endl;
	}
	else 
	{
		if(anzahl+ziel_anfang &gt; ziel_laenge)
		{
			cout &lt;&lt; &quot; Die zu einfuegenden Elemente ueberschreiten die Array Groesse.\n&quot; &lt;&lt; endl;
		}
		else
		{
			for (int i = anfang-1, j = ziel_anfang-1; i &lt; anfang-1+anzahl, j &lt; ziel_anfang-1+anzahl; i++, j++)
			{
				ziel1[j] = quelle[i];
			}

			for(int x = 0; x &lt; ziel_laenge; x++)
			{
				cout &lt;&lt;&quot;&quot; &lt;&lt; ziel1[x] &lt;&lt; &quot; &quot;;	
			}
			cout &lt;&lt; &quot;\n&quot; &lt;&lt; endl;

		}
	}	
}
</code></pre>
<p>Könnte noch schreiben, dass wenn &quot;anfang&quot; als 0 initialisiert wird, Datenverlust droht...?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354635</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354635</guid><dc:creator><![CDATA[Mr. Bit]]></dc:creator><pubDate>Sun, 22 Sep 2013 11:47:51 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mittels Rekursion erstellen on Sun, 22 Sep 2013 12:21:46 GMT]]></title><description><![CDATA[<p>Mr. Bit  schrieb:</p>
<blockquote>
<p>Also ich weiß nicht wie ich das ohne anzahl -1 machen soll...</p>
</blockquote>
<p>Welchen Wert gibst du für <code>anfang</code> an, wenn du vom Anfang des Arrays kopieren willst.<br />
Du würdest wohl 1 nehmen, weil es das erste Element ist. Das ist aber nicht C-Style.</p>
<p>DirkB schrieb:</p>
<blockquote>
<p>Da in C der Index bei Arrays bei 0 anfängt, würde ich auch eine 0 für <code>anfang</code> angeben, wenn die Quelleu und /oder das Ziel ganz am Anfang ist.</p>
</blockquote>
<p>DirkB schrieb:</p>
<blockquote>
<p>Aber das ist <strong>Definitionssache</strong>, die du aber dokumentiern musst.</p>
</blockquote>
<p>Das ist deine Funktion. Wenn du sagst 1 ist der Anfang, ist das auch in Ordnung.</p>
<p>Mr. Bit  schrieb:</p>
<blockquote>
<p>Das cout ist nur zur kontrolle Deklariert...</p>
</blockquote>
<p>Warum nimmst du dafür nicht deine Funktion output? (Dafür ist sie da)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354643</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354643</guid><dc:creator><![CDATA[DirkB]]></dc:creator><pubDate>Sun, 22 Sep 2013 12:21:46 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mittels Rekursion erstellen on Sun, 22 Sep 2013 12:47:36 GMT]]></title><description><![CDATA[<p>Ich hatte den Anfang als 3 festgesetzt. Wollte aber gucken was passiert wenn man 0 eingibt. Klar werden dann nicht wenn anzahl = 3 auch 3 Elemente eingelesen. Wenn ich Anfang nicht -1 machen ist der Anfang imm um eins versetzt...</p>
<p>Die Funktion output ist doch nur für die erste Aufgabe, denke ich!?</p>
<p>Wie würdest du die Funktion mischen angehen? Mit Mergesort?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354646</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354646</guid><dc:creator><![CDATA[Mr. Bit]]></dc:creator><pubDate>Sun, 22 Sep 2013 12:47:36 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mittels Rekursion erstellen on Sun, 22 Sep 2013 13:03:21 GMT]]></title><description><![CDATA[<p>Mr. Bit schrieb:</p>
<blockquote>
<p>Ich hatte den Anfang als 3 festgesetzt. Wollte aber gucken was passiert wenn man 0 eingibt. Klar werden dann nicht wenn anzahl = 3 auch 3 Elemente eingelesen. Wenn ich Anfang nicht -1 machen ist der Anfang imm um eins versetzt...</p>
</blockquote>
<p>Wie wäre der Funktionsaufruf, wenn du das ganze Array kopieren möchtest?</p>
<p>Mr. Bit schrieb:</p>
<blockquote>
<p>Die Funktion output ist doch nur für die erste Aufgabe, denke ich!?</p>
</blockquote>
<p>Nein. Die hast du schon geschrieben, also nutze sie auch.<br />
Außerdem läuft das doch untere Funktion2</p>
<p>Mr. Bit schrieb:</p>
<blockquote>
<p>Wie würdest du die Funktion mischen angehen? Mit Mergesort?</p>
</blockquote>
<p>Schau dir das Video mal an das volkard (auf der ersten Seite) vorgeschlagen hat.<br />
Da ist das doch am Anfang sehr gut erklärt was du machen musst (zwei vorsortierte Arrays)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354647</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354647</guid><dc:creator><![CDATA[DirkB]]></dc:creator><pubDate>Sun, 22 Sep 2013 13:03:21 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mittels Rekursion erstellen on Sun, 22 Sep 2013 13:26:10 GMT]]></title><description><![CDATA[<p>Beim ganzen Array wäre es:</p>
<pre><code>for (int i = 0, j = 0; i &lt; quelle_laenge, j &lt; quelle_laenge; i++, j++)
			{
				ziel1[j] = quelle[i];
			}
</code></pre>
<p>Ja das läuft unter Funktion 2 ist aber da um die Funktion 1 auszulesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354650</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354650</guid><dc:creator><![CDATA[Mr. Bit]]></dc:creator><pubDate>Sun, 22 Sep 2013 13:26:10 GMT</pubDate></item></channel></rss>