<?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[Funktionen für Algorithmen mit Arrays mit Iteration (Schleifen) und Rekursion.]]></title><description><![CDATA[<p>hi Leute ich brauch mal eure Hilfe</p>
<p>ich soll ein Programm schreiben mit 4 Funktionen.<br />
Funktion 1 mittels Iteration: input(n,a)<br />
Funktion 2 mittels Iteration: output(n,a)<br />
Funktion 3 mittels Iteration: copy(a, anfang, anzahl, b, ziel)<br />
-(Universelle Kopierfunktion für Arrays)<br />
Funktion 4 rekursiv: mischen(m,a,n,b,c)<br />
- Es sollen die Elemente zweier aufsteigend sortierter Arrays<br />
a (m Elemente) und b (n Elemente)<br />
zusammengemischt und in einem Array c aufsteigend sortiert<br />
gespeichert werden.<br />
Beispiel: a: 1 4 5 6 9 b: 2 4 11 Ergebnis in c: 1 2 4 4 5 6 9 11.</p>
<p>Wobei ich bei der Funktion 4 eure Hilfe brauche, denn ich bekomm das mit dem sortiern nicht gebacken.</p>
<p>Mein Hauptmain:</p>
<p>#include &lt;iostream&gt;</p>
<p>using namespace std;</p>
<p>void main()<br />
{ const int max=20,max1=40;<br />
double array1[max]={}, array2[max]={},array3[max1]={};<br />
void input(int, double array1[]),<br />
output(int, double array1[]);<br />
double mischen(int, int, int, double array1[], double array2[],<br />
double array3[]);<br />
double copy(int,int,int,int,int,double array1[], double array2[]);<br />
int limit=0,limit2=0,limit3=0;<br />
int start,menge,ziel;<br />
char n='a';</p>
<p>while(n!='f')//menü schleife<br />
{<br />
system(&quot;cls&quot;);//clear screen<br />
cout &lt;&lt; endl &lt;&lt; &quot; Sie haben folgende Aktionen zur Auswahl &quot; &lt;&lt; endl &lt;&lt;<br />
endl;</p>
<p>cout &lt;&lt; &quot; [ a ] Array A einlesen&quot; &lt;&lt; endl;<br />
cout &lt;&lt; &quot; [ b ] Array A und B anzeigen&quot; &lt;&lt; endl;<br />
cout &lt;&lt; &quot; [ c ] Array A auf Array B kopieren&quot; &lt;&lt; endl;<br />
cout &lt;&lt; &quot; [ d ] Array A und B mischen&quot; &lt;&lt; endl;<br />
cout &lt;&lt; &quot; [ e ] Gemischtes Array anzeigen&quot; &lt;&lt; endl;<br />
cout &lt;&lt; &quot; [ x ] Exit!&quot; &lt;&lt; endl &lt;&lt; endl;<br />
cout &lt;&lt; &quot; &gt;&gt; &quot;;<br />
cin &gt;&gt; n;</p>
<p>system(&quot;cls&quot;); //clear screen</p>
<p>switch(n)// menü<br />
{<br />
case'a':<br />
{<br />
cout &lt;&lt; endl &lt;&lt; &quot; Wie viele Arrays wollen sie eingeben? (max 20)&quot;<br />
&lt;&lt; endl &lt;&lt; endl;<br />
cout&lt;&lt;&quot;\t&quot;;<br />
cin &gt;&gt; limit;<br />
cout &lt;&lt; endl &lt;&lt; &quot; Arrays eingeben &quot; &lt;&lt; endl &lt;&lt; endl;</p>
<p>input(limit,array1); // aufruf der eingabe funktion</p>
<p>cout&lt;&lt;endl;<br />
system(&quot;pause&quot;);<br />
break;</p>
<p>}</p>
<p>case'b':<br />
{<br />
cout &lt;&lt; &quot; \n Array A: &quot; &lt;&lt; endl;<br />
cout &lt;&lt; &quot; \t\n&quot; &lt;&lt; endl;<br />
output(limit,array1);// aufruf der ausgabe funktion</p>
<p>cout &lt;&lt; &quot;\n\t&quot;;<br />
cout &lt;&lt; &quot; \n Array B: &quot; &lt;&lt; endl;<br />
cout &lt;&lt; &quot;\t\n&quot; &lt;&lt; endl;<br />
output(limit2,array2);</p>
<p>cout &lt;&lt; endl &lt;&lt; endl;<br />
system(&quot;pause&quot;);<br />
break;<br />
}</p>
<p>case'c':<br />
{<br />
cout &lt;&lt;&quot; Bitte geben sie den Startwert ein &quot; &lt;&lt; endl &lt;&lt; endl;<br />
cout&lt;&lt;&quot;\t&quot;;<br />
cin&gt;&gt;start;<br />
cout&lt;&lt;&quot; \n Bitte geben sie die Menge der zu kopierenden Werte ein &quot; &lt;&lt; endl &lt;&lt; endl;<br />
cout&lt;&lt;&quot;\t&quot;;<br />
cin&gt;&gt;menge;<br />
cout&lt;&lt;&quot; \n Bitte geben sie einen Zielwert an &quot; &lt;&lt; endl &lt;&lt; endl;<br />
cout&lt;&lt;&quot;\t&quot;;<br />
cin&gt;&gt;ziel;</p>
<p>limit2=(copy(limit,limit2,start,menge,ziel,array1,array2)-1);// aufruf der kopier funktion</p>
<p>cout &lt;&lt; endl &lt;&lt; &quot; \n Array A auf Array B erfolgreich kopiert\n &quot; &lt;&lt; endl &lt;&lt; endl;</p>
<p>system(&quot;pause&quot;);<br />
break;<br />
}</p>
<p>case'd':<br />
{<br />
mischen(limit,limit2,limit3,array1,array2,array3);// aufruf der misch funktion<br />
cout &lt;&lt; &quot; \n Arrays erfolgreich gemischt\n\n &quot; &lt;&lt; endl &lt;&lt; endl;</p>
<p>system(&quot;pause&quot;);<br />
break;<br />
}</p>
<p>case'e':<br />
{<br />
cout &lt;&lt; &quot; \n Gemischtes Array: &quot; &lt;&lt; endl &lt;&lt; endl;</p>
<p>for(int i=0;i&lt;(limit+limit2);i++)//ausgabe des dritten arrays<br />
{<br />
cout &lt;&lt; &quot;\t&quot;;<br />
cout &lt;&lt; array3[i] &lt;&lt; &quot; &quot;;<br />
}<br />
cout &lt;&lt; endl &lt;&lt;endl;<br />
system(&quot;pause&quot;);<br />
break;<br />
}</p>
<p>case'x':<br />
{<br />
exit (0);<br />
break;<br />
}</p>
<p>default:<br />
{<br />
cout &lt;&lt; &quot;\n Uueltige Eingabe\n &quot; &lt;&lt; endl &lt;&lt; endl;<br />
system(&quot;pause&quot;);<br />
break;<br />
}<br />
}<br />
}<br />
}</p>
<p>Funktion 1 (input)</p>
<p>#include &lt;iostream&gt;<br />
using namespace std;</p>
<p>void input(int limit,double array1[])<br />
{</p>
<p>for(int i=0; i&lt;limit; i++)<br />
{<br />
cout&lt;&lt;&quot;\t&quot;;<br />
cin&gt;&gt;array1[i];<br />
}<br />
}</p>
<p>Funktion 2 (output)</p>
<p>#include &lt;iostream&gt;<br />
using namespace std;<br />
void output(int limit, double array1[])<br />
{<br />
for(int i=0;i&lt;limit;i++)<br />
{<br />
cout&lt;&lt;&quot;\t&quot;;<br />
cout&lt;&lt;array1[i]&lt;&lt;&quot; &quot;;<br />
}<br />
}</p>
<p>Funktion 3 (copy)</p>
<p>#include &lt;iostream&gt;<br />
using namespace std;</p>
<p>double copy(int limit,int limit2,int start,int menge,int ziel, double array1[], double array2[])<br />
{</p>
<p>for(int i=start-1; i&lt;(menge+start); i++)<br />
{<br />
array2[(ziel-1)]=array1[i];<br />
ziel++;<br />
}<br />
return ziel;<br />
}</p>
<p>Funktion 4 (mischen)</p>
<p>#include &lt;iostream&gt;<br />
using namespace std;</p>
<p>double mischen(int limit,int limit2,int limit3, double array1[],double array2[],double array3[])<br />
{</p>
<p>limit3=(limit+limit2); //anzahl der gesamten arrays ermitteln</p>
<p>int a=limit-1,b=limit2-1,c=limit3-1;</p>
<p>if(limit==0 &amp;&amp; limit2==0)<br />
{<br />
return array3[0];<br />
}<br />
if(array1[a]&gt;array2[b]) //wenn a größer als b ist wird a kopiert<br />
{<br />
array3[c]=array1[a]; //kopieren und runterzählen<br />
a--;<br />
c--;<br />
return mischen(limit-1,limit2,limit3-1,array1,array2,array3);<br />
}<br />
else<br />
{<br />
array3[c]=array2[b]; //kopieren und runterzählen<br />
b--;<br />
c--;<br />
return mischen(limit,limit2-1,limit3-1,array1,array2,array3);<br />
}</p>
<p>}</p>
<p>Danke schon mal im voraus!<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/312506/funktionen-für-algorithmen-mit-arrays-mit-iteration-schleifen-und-rekursion</link><generator>RSS for Node</generator><lastBuildDate>Sun, 02 Aug 2026 18:46:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/312506.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 06 Jan 2013 18:11:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktionen für Algorithmen mit Arrays mit Iteration (Schleifen) und Rekursion. on Sun, 06 Jan 2013 18:11:29 GMT]]></title><description><![CDATA[<p>hi Leute ich brauch mal eure Hilfe</p>
<p>ich soll ein Programm schreiben mit 4 Funktionen.<br />
Funktion 1 mittels Iteration: input(n,a)<br />
Funktion 2 mittels Iteration: output(n,a)<br />
Funktion 3 mittels Iteration: copy(a, anfang, anzahl, b, ziel)<br />
-(Universelle Kopierfunktion für Arrays)<br />
Funktion 4 rekursiv: mischen(m,a,n,b,c)<br />
- Es sollen die Elemente zweier aufsteigend sortierter Arrays<br />
a (m Elemente) und b (n Elemente)<br />
zusammengemischt und in einem Array c aufsteigend sortiert<br />
gespeichert werden.<br />
Beispiel: a: 1 4 5 6 9 b: 2 4 11 Ergebnis in c: 1 2 4 4 5 6 9 11.</p>
<p>Wobei ich bei der Funktion 4 eure Hilfe brauche, denn ich bekomm das mit dem sortiern nicht gebacken.</p>
<p>Mein Hauptmain:</p>
<p>#include &lt;iostream&gt;</p>
<p>using namespace std;</p>
<p>void main()<br />
{ const int max=20,max1=40;<br />
double array1[max]={}, array2[max]={},array3[max1]={};<br />
void input(int, double array1[]),<br />
output(int, double array1[]);<br />
double mischen(int, int, int, double array1[], double array2[],<br />
double array3[]);<br />
double copy(int,int,int,int,int,double array1[], double array2[]);<br />
int limit=0,limit2=0,limit3=0;<br />
int start,menge,ziel;<br />
char n='a';</p>
<p>while(n!='f')//menü schleife<br />
{<br />
system(&quot;cls&quot;);//clear screen<br />
cout &lt;&lt; endl &lt;&lt; &quot; Sie haben folgende Aktionen zur Auswahl &quot; &lt;&lt; endl &lt;&lt;<br />
endl;</p>
<p>cout &lt;&lt; &quot; [ a ] Array A einlesen&quot; &lt;&lt; endl;<br />
cout &lt;&lt; &quot; [ b ] Array A und B anzeigen&quot; &lt;&lt; endl;<br />
cout &lt;&lt; &quot; [ c ] Array A auf Array B kopieren&quot; &lt;&lt; endl;<br />
cout &lt;&lt; &quot; [ d ] Array A und B mischen&quot; &lt;&lt; endl;<br />
cout &lt;&lt; &quot; [ e ] Gemischtes Array anzeigen&quot; &lt;&lt; endl;<br />
cout &lt;&lt; &quot; [ x ] Exit!&quot; &lt;&lt; endl &lt;&lt; endl;<br />
cout &lt;&lt; &quot; &gt;&gt; &quot;;<br />
cin &gt;&gt; n;</p>
<p>system(&quot;cls&quot;); //clear screen</p>
<p>switch(n)// menü<br />
{<br />
case'a':<br />
{<br />
cout &lt;&lt; endl &lt;&lt; &quot; Wie viele Arrays wollen sie eingeben? (max 20)&quot;<br />
&lt;&lt; endl &lt;&lt; endl;<br />
cout&lt;&lt;&quot;\t&quot;;<br />
cin &gt;&gt; limit;<br />
cout &lt;&lt; endl &lt;&lt; &quot; Arrays eingeben &quot; &lt;&lt; endl &lt;&lt; endl;</p>
<p>input(limit,array1); // aufruf der eingabe funktion</p>
<p>cout&lt;&lt;endl;<br />
system(&quot;pause&quot;);<br />
break;</p>
<p>}</p>
<p>case'b':<br />
{<br />
cout &lt;&lt; &quot; \n Array A: &quot; &lt;&lt; endl;<br />
cout &lt;&lt; &quot; \t\n&quot; &lt;&lt; endl;<br />
output(limit,array1);// aufruf der ausgabe funktion</p>
<p>cout &lt;&lt; &quot;\n\t&quot;;<br />
cout &lt;&lt; &quot; \n Array B: &quot; &lt;&lt; endl;<br />
cout &lt;&lt; &quot;\t\n&quot; &lt;&lt; endl;<br />
output(limit2,array2);</p>
<p>cout &lt;&lt; endl &lt;&lt; endl;<br />
system(&quot;pause&quot;);<br />
break;<br />
}</p>
<p>case'c':<br />
{<br />
cout &lt;&lt;&quot; Bitte geben sie den Startwert ein &quot; &lt;&lt; endl &lt;&lt; endl;<br />
cout&lt;&lt;&quot;\t&quot;;<br />
cin&gt;&gt;start;<br />
cout&lt;&lt;&quot; \n Bitte geben sie die Menge der zu kopierenden Werte ein &quot; &lt;&lt; endl &lt;&lt; endl;<br />
cout&lt;&lt;&quot;\t&quot;;<br />
cin&gt;&gt;menge;<br />
cout&lt;&lt;&quot; \n Bitte geben sie einen Zielwert an &quot; &lt;&lt; endl &lt;&lt; endl;<br />
cout&lt;&lt;&quot;\t&quot;;<br />
cin&gt;&gt;ziel;</p>
<p>limit2=(copy(limit,limit2,start,menge,ziel,array1,array2)-1);// aufruf der kopier funktion</p>
<p>cout &lt;&lt; endl &lt;&lt; &quot; \n Array A auf Array B erfolgreich kopiert\n &quot; &lt;&lt; endl &lt;&lt; endl;</p>
<p>system(&quot;pause&quot;);<br />
break;<br />
}</p>
<p>case'd':<br />
{<br />
mischen(limit,limit2,limit3,array1,array2,array3);// aufruf der misch funktion<br />
cout &lt;&lt; &quot; \n Arrays erfolgreich gemischt\n\n &quot; &lt;&lt; endl &lt;&lt; endl;</p>
<p>system(&quot;pause&quot;);<br />
break;<br />
}</p>
<p>case'e':<br />
{<br />
cout &lt;&lt; &quot; \n Gemischtes Array: &quot; &lt;&lt; endl &lt;&lt; endl;</p>
<p>for(int i=0;i&lt;(limit+limit2);i++)//ausgabe des dritten arrays<br />
{<br />
cout &lt;&lt; &quot;\t&quot;;<br />
cout &lt;&lt; array3[i] &lt;&lt; &quot; &quot;;<br />
}<br />
cout &lt;&lt; endl &lt;&lt;endl;<br />
system(&quot;pause&quot;);<br />
break;<br />
}</p>
<p>case'x':<br />
{<br />
exit (0);<br />
break;<br />
}</p>
<p>default:<br />
{<br />
cout &lt;&lt; &quot;\n Uueltige Eingabe\n &quot; &lt;&lt; endl &lt;&lt; endl;<br />
system(&quot;pause&quot;);<br />
break;<br />
}<br />
}<br />
}<br />
}</p>
<p>Funktion 1 (input)</p>
<p>#include &lt;iostream&gt;<br />
using namespace std;</p>
<p>void input(int limit,double array1[])<br />
{</p>
<p>for(int i=0; i&lt;limit; i++)<br />
{<br />
cout&lt;&lt;&quot;\t&quot;;<br />
cin&gt;&gt;array1[i];<br />
}<br />
}</p>
<p>Funktion 2 (output)</p>
<p>#include &lt;iostream&gt;<br />
using namespace std;<br />
void output(int limit, double array1[])<br />
{<br />
for(int i=0;i&lt;limit;i++)<br />
{<br />
cout&lt;&lt;&quot;\t&quot;;<br />
cout&lt;&lt;array1[i]&lt;&lt;&quot; &quot;;<br />
}<br />
}</p>
<p>Funktion 3 (copy)</p>
<p>#include &lt;iostream&gt;<br />
using namespace std;</p>
<p>double copy(int limit,int limit2,int start,int menge,int ziel, double array1[], double array2[])<br />
{</p>
<p>for(int i=start-1; i&lt;(menge+start); i++)<br />
{<br />
array2[(ziel-1)]=array1[i];<br />
ziel++;<br />
}<br />
return ziel;<br />
}</p>
<p>Funktion 4 (mischen)</p>
<p>#include &lt;iostream&gt;<br />
using namespace std;</p>
<p>double mischen(int limit,int limit2,int limit3, double array1[],double array2[],double array3[])<br />
{</p>
<p>limit3=(limit+limit2); //anzahl der gesamten arrays ermitteln</p>
<p>int a=limit-1,b=limit2-1,c=limit3-1;</p>
<p>if(limit==0 &amp;&amp; limit2==0)<br />
{<br />
return array3[0];<br />
}<br />
if(array1[a]&gt;array2[b]) //wenn a größer als b ist wird a kopiert<br />
{<br />
array3[c]=array1[a]; //kopieren und runterzählen<br />
a--;<br />
c--;<br />
return mischen(limit-1,limit2,limit3-1,array1,array2,array3);<br />
}<br />
else<br />
{<br />
array3[c]=array2[b]; //kopieren und runterzählen<br />
b--;<br />
c--;<br />
return mischen(limit,limit2-1,limit3-1,array1,array2,array3);<br />
}</p>
<p>}</p>
<p>Danke schon mal im voraus!<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2286935</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2286935</guid><dc:creator><![CDATA[_Ben_]]></dc:creator><pubDate>Sun, 06 Jan 2013 18:11:29 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionen für Algorithmen mit Arrays mit Iteration (Schleifen) und Rekursion. on Sun, 06 Jan 2013 18:19:13 GMT]]></title><description><![CDATA[<p><a href="http://www.c-plusplus.net/forum/304133" rel="nofollow">http://www.c-plusplus.net/forum/304133</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2286939</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2286939</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Sun, 06 Jan 2013 18:19:13 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionen für Algorithmen mit Arrays mit Iteration (Schleifen) und Rekursion. on Mon, 07 Jan 2013 11:22:22 GMT]]></title><description><![CDATA[<p><em>Ben</em> schrieb:</p>
<blockquote>
<p>Funktion 4 rekursiv: mischen(m,a,n,b,c)<br />
- Es sollen die Elemente zweier aufsteigend sortierter Arrays<br />
a (m Elemente) und b (n Elemente)<br />
zusammengemischt und in einem Array c aufsteigend sortiert<br />
gespeichert werden.<br />
Beispiel: a: 1 4 5 6 9 b: 2 4 11 Ergebnis in c: 1 2 4 4 5 6 9 11.</p>
<p>Wobei ich bei der Funktion 4 eure Hilfe brauche, denn ich bekomm das mit dem sortiern nicht gebacken.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

double mischen(int limit,int limit2,int limit3, double array1[],double array2[],double array3[])
{

  limit3=(limit+limit2); //anzahl der gesamten arrays ermitteln

  int a=limit-1,b=limit2-1,c=limit3-1;

  if(limit==0 &amp;&amp; limit2==0)
  {
    return array3[0];
  }
  if(array1[a]&gt;array2[b]) //wenn a größer als b ist wird a kopiert
  {
    array3[c]=array1[a]; //kopieren und runterzählen
    a--;
    c--;
    return mischen(limit-1,limit2,limit3-1,array1,array2,array3);
  }
  else
  {
    array3[c]=array2[b]; //kopieren und runterzählen
    b--;
    c--;
    return mischen(limit,limit2-1,limit3-1,array1,array2,array3);
  }
}
</code></pre>
</blockquote>
<p>Versteh' ich nicht... Die Signaturen aus der Aufgabe und bei Dir sind unterschiedlich...Aber gut, das ist ein kosmetischer Makel - wobei wofür brauchst Du noch limit3?<br />
Und diese ganzen Hilfsvariablen?! Kopierst Du von hinten? Und die Kommentare stimmen doch auch nicht (&quot;wenn a größer als b...&quot;)? Sehr verworren. <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="😞"
    /></p>
<p>Mit ein bißchen Zeigerarithmetik läßt sich das ganze elegant lösen, so sähe mein Gerüst aus:</p>
<pre><code class="language-cpp">void mischen(std::size_t m, const double* in1, std::size_t n, const double* in2, double* out){
  if(m==0){
    // kopiere Rest von in2
    return;
  }
  if(n==0){
    // kopiere Rest von in1
    return;
  }
  if(*in2 &lt; *in1){
    // Wert kopieren und Rekursion mit neuem n, in2 und out
  } else {
    // Wert kopieren und Rekursion mit neuem m, in1 und out
  }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2287187</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2287187</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Mon, 07 Jan 2013 11:22:22 GMT</pubDate></item></channel></rss>