<?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[sortieralgorithmus ohne for, while, goto]]></title><description><![CDATA[<p>Nabend zusammen,<br />
wie kann man ein array sortieren, ohne dass man die Schlüsselwörter for, while und goto verwendet - und natürlich nichts aus einer Bibliothek läd?</p>
<p>Grüße<br />
Caybot</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/229643/sortieralgorithmus-ohne-for-while-goto</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 17:26:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/229643.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 14 Dec 2008 19:38:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to sortieralgorithmus ohne for, while, goto on Sun, 14 Dec 2008 19:38:48 GMT]]></title><description><![CDATA[<p>Nabend zusammen,<br />
wie kann man ein array sortieren, ohne dass man die Schlüsselwörter for, while und goto verwendet - und natürlich nichts aus einer Bibliothek läd?</p>
<p>Grüße<br />
Caybot</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1630469</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1630469</guid><dc:creator><![CDATA[caybot]]></dc:creator><pubDate>Sun, 14 Dec 2008 19:38:48 GMT</pubDate></item><item><title><![CDATA[Reply to sortieralgorithmus ohne for, while, goto on Sun, 14 Dec 2008 19:42:09 GMT]]></title><description><![CDATA[<p>warum sollte man so einen nonsens machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1630472</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1630472</guid><dc:creator><![CDATA[Mathefreak]]></dc:creator><pubDate>Sun, 14 Dec 2008 19:42:09 GMT</pubDate></item><item><title><![CDATA[Reply to sortieralgorithmus ohne for, while, goto on Sun, 14 Dec 2008 19:43:26 GMT]]></title><description><![CDATA[<p>Wie kommen die Leute eigentlich immer auf solche Ideen?</p>
<p>Ich würde mal sagen, in C++ gar nicht. Es sei denn, du stehst auf Codeduplizierung, If-Orgien und beschränkte Einsatzfähigkeit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1630473</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1630473</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 14 Dec 2008 19:43:26 GMT</pubDate></item><item><title><![CDATA[Reply to sortieralgorithmus ohne for, while, goto on Sun, 14 Dec 2008 19:44:25 GMT]]></title><description><![CDATA[<p>mh wo wir grad bei dem thema sind</p>
<p>kann man ohne computer c++ programmieren?</p>
<p>junge warum?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1630474</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1630474</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Sun, 14 Dec 2008 19:44:25 GMT</pubDate></item><item><title><![CDATA[Reply to sortieralgorithmus ohne for, while, goto on Sun, 14 Dec 2008 19:54:07 GMT]]></title><description><![CDATA[<p>Sollte ich vielleicht die Aufgabe falsch verstanden haben???</p>
<p>Laden Sie sich die Datei herunter und implementieren Sie die Funktion<br />
minimumIndex, so dass sie den Index des kleinsten Elements des übergebenen Arrays zurückliefert. Beachten Sie auch hier die folgende Einschränkung: In dieser Aufgabe dürfen die Schlüsselwörter for, while und goto nicht verwendet werden! Bei Bedarf dürfen Sie weitere Funktionen defnieren, nicht jedoch die Funktionen main, printArray oder readIntArray verändern. Es dürfen auch keine Sortierungs-Bibliotheksfunktionen verwendet werden. Testen und kommentieren Sie Ihre Funktion.</p>
<p>Hier das Programm:<br />
# include &lt;iostream &gt;<br />
using namespace std ;<br />
int readIntArray ( int ** array ) {<br />
cout &lt;&lt;&quot; Bitte geben Sie die Anzahl der zu sortierenden Zahlen ein : &quot;;<br />
int size ;<br />
cin &gt;&gt; size ;<br />
* array = new int [ size ];<br />
for ( int i =0; i&lt; size ; ++i) {<br />
cout &lt;&lt;&quot; Bitte geben Sie die &quot; &lt;&lt;i&lt;&lt;&quot;. Zahl ein : &quot;;<br />
cin &gt; &gt;(* array )[i];<br />
}<br />
return size ;<br />
}<br />
void printArray ( int array [], int size ) {<br />
for ( int i =0; i&lt; size ; ++i) {<br />
cout &lt;&lt; array [i]&lt;&lt;&quot; &quot;;<br />
}<br />
cout &lt;&lt; endl ;<br />
}<br />
int minimumIndex ( int array [], int size ) {<br />
// hier ergaenzen<br />
}<br />
int main (){<br />
int * array = 0;<br />
int size = readIntArray (&amp; array );<br />
printArray (array , size );<br />
cout &lt;&lt; &quot; Index des kleinsten Elements : &quot;;<br />
cout &lt;&lt; minimumIndex (array , size ) &lt;&lt; endl ;<br />
printArray (array , size );<br />
delete [] array ;<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1630482</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1630482</guid><dc:creator><![CDATA[caybot]]></dc:creator><pubDate>Sun, 14 Dec 2008 19:54:07 GMT</pubDate></item><item><title><![CDATA[Reply to sortieralgorithmus ohne for, while, goto on Sun, 14 Dec 2008 20:02:17 GMT]]></title><description><![CDATA[<p>Ich würd mal sagen, dass du da ganz gut was mit Rekursion machen kannst.</p>
<p>Der Hinweis weisst da eigentlich drauf..</p>
<p>btw:<br />
Bitte benutz cpp-Tags, damit man den Code auch lesen kann..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1630491</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1630491</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 14 Dec 2008 20:02:17 GMT</pubDate></item><item><title><![CDATA[Reply to sortieralgorithmus ohne for, while, goto on Sun, 14 Dec 2008 20:15:19 GMT]]></title><description><![CDATA[<p>Also sortieren sollst du ja gar nicht. In der Aufgabenstellung steht du sollst den index des kleinsten Elements finden.<br />
Stichwort: Rekursion</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1630503</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1630503</guid><dc:creator><![CDATA[Tanren]]></dc:creator><pubDate>Sun, 14 Dec 2008 20:15:19 GMT</pubDate></item><item><title><![CDATA[Reply to sortieralgorithmus ohne for, while, goto on Sun, 14 Dec 2008 20:55:59 GMT]]></title><description><![CDATA[<p>Hab mal ein wenig rumgefummelt...</p>
<pre><code class="language-cpp">int minimumIndex (int array [], int size ) {
    int i=0;
    if (array[i] &lt; array[i+1]) {
        return array[i];
    } 
    return (array[i+1]);
}
</code></pre>
<p>... doch noch klappts nicht <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 />
Ich denke mal, dass das daran liegt, dass ich &quot;i&quot; anfangs immer wieder auf 0 setze???<br />
Und wie bekomme ich es hin, dass er mir nicht den Wert des Felds im Array ausgibt, sondern den Index?</p>
<p>Hier der komplette bereits veränderte Quelltext:</p>
<pre><code class="language-cpp"># include &lt;iostream&gt;
using namespace std;

int readIntArray (int ** array ) {
	cout &lt;&lt;&quot; Bitte geben Sie die Anzahl der zu &quot;
			&quot;sortierenden Zahlen ein: &quot;;
	int size ;
	cin &gt;&gt; size ;
	* array = new int[ size ];
	for ( int i=0; i&lt; size ; ++i) {
		cout &lt;&lt;&quot; Bitte geben Sie die &quot; &lt;&lt;i&lt;&lt;&quot;. Zahl ein: &quot;;
		cin &gt;&gt; (* array )[i];
	}
	return size ;
}

void printArray (int array [], int size ) {
	for ( int i=0; i&lt; size ; ++i) {
		cout &lt;&lt; array [i]&lt;&lt;&quot; &quot;;
	}
	cout &lt;&lt; endl ;
}

int minimumIndex (int array [], int size ) {
    int i=0;
    if (array[i] &lt; array[i+1]) {
        return array[i];
    }
    return (array[i+1]);
}
int main () {
	int * array = 0;
	int size = readIntArray (&amp; array );
	printArray (array , size );
	cout &lt;&lt; &quot; Index des kleinsten Elements : &quot;;
	cout &lt;&lt; minimumIndex(array , size) &lt;&lt; endl;
	printArray(array , size);
	system(&quot;pause&quot;);
	delete [] array ;
	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1630518</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1630518</guid><dc:creator><![CDATA[caybot]]></dc:creator><pubDate>Sun, 14 Dec 2008 20:55:59 GMT</pubDate></item><item><title><![CDATA[Reply to sortieralgorithmus ohne for, while, goto on Sun, 14 Dec 2008 21:04:03 GMT]]></title><description><![CDATA[<blockquote>
<p>Ich denke mal, dass das daran liegt, dass ich &quot;i&quot; anfangs immer wieder auf 0 setze???</p>
</blockquote>
<p>Kannst dich glücklich schätzen. Dafür gibts sogar ein Schlüsselwort. static. <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>
<blockquote>
<p>Und wie bekomme ich es hin, dass er mir nicht den Wert des Felds im Array ausgibt, sondern den Index?</p>
</blockquote>
<p>Wie meinst du ausgeben? Und wo?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1630522</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1630522</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 14 Dec 2008 21:04:03 GMT</pubDate></item><item><title><![CDATA[Reply to sortieralgorithmus ohne for, while, goto on Sun, 14 Dec 2008 21:16:17 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<blockquote>
<p>Ich denke mal, dass das daran liegt, dass ich &quot;i&quot; anfangs immer wieder auf 0 setze???</p>
<p>Kannst dich glücklich schätzen. Dafür gibts sogar ein Schlüsselwort. static. <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>
</blockquote>
<p>Also ersetze ich &quot;int i=0&quot; durch &quot;int i&quot;???</p>
<blockquote>
<p>Und wie bekomme ich es hin, dass er mir nicht den Wert des Felds im Array ausgibt, sondern den Index?</p>
</blockquote>
<p>Wie meinst du ausgeben? Und wo?</p>
</blockquote>
<p>Nicht in der Funktion ausgeben, sondern an die Main-Fkt übergeben.<br />
Und da wirds dann in Zeile 36 ausgegeben?!?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1630529</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1630529</guid><dc:creator><![CDATA[caybot]]></dc:creator><pubDate>Sun, 14 Dec 2008 21:16:17 GMT</pubDate></item><item><title><![CDATA[Reply to sortieralgorithmus ohne for, while, goto on Sun, 14 Dec 2008 21:23:38 GMT]]></title><description><![CDATA[<p>Indem du i zurückgibst?!</p>
<p>Im übrigen sehe ich bei dir noch keine Rekursion..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1630531</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1630531</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 14 Dec 2008 21:23:38 GMT</pubDate></item><item><title><![CDATA[Reply to sortieralgorithmus ohne for, while, goto on Mon, 15 Dec 2008 18:17:44 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">int minimumIndex (int array [], int size ) {
    int i;
      if (array[i] &lt;= array[i+1]) {
      return i;
    }
    return (i+1);
}
</code></pre>
<p>So sollte es besser klappen, aber noch nicht gut genug, da ich nur schaue ob die erste Zahl &lt;= der Zweiten ist. Wenn das der Fall ist wird der Rest nicht berücksichtigt. Richtig? Wenn ja: Wie kann ich das Problem sinnvoll lösen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1630909</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1630909</guid><dc:creator><![CDATA[caybot]]></dc:creator><pubDate>Mon, 15 Dec 2008 18:17:44 GMT</pubDate></item><item><title><![CDATA[Reply to sortieralgorithmus ohne for, while, goto on Mon, 15 Dec 2008 20:49:57 GMT]]></title><description><![CDATA[<p>Du musst Rekursion benutzen d.h. eine Funktion die sich immer wieder selber aufruft.</p>
<p>Hier mal als kleine Hilfestellung. Den Rest solltest du jetzt eigentlich selber rausfinden.</p>
<pre><code class="language-cpp">int findmin(int* array, int size, int ind, int currMinInd){
    /*??*/
    if(/*??*/){
        return currMinInd;
    }else{
        return findmin(array, size, ++ind, currMinInd);
    }

}

int minimumIndex ( int array [], int size ) {
    return findmin(array, size, 0, 0);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1630973</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1630973</guid><dc:creator><![CDATA[Tanren]]></dc:creator><pubDate>Mon, 15 Dec 2008 20:49:57 GMT</pubDate></item><item><title><![CDATA[Reply to sortieralgorithmus ohne for, while, goto on Mon, 15 Dec 2008 23:29:43 GMT]]></title><description><![CDATA[<p>Ok. Hab nochmal ein wenig rumgefummelt:</p>
<pre><code class="language-cpp">i
int findmin(int* array, int size, int ind, int temp, int currMinInd){   //initialisierung der Rekursion
    if(ind &lt;= size){  // wenn der Index der ind-ten Position im Array kleiner/gleich size ist:
        if(array[ind] &lt;= temp){ // wenn der ind-te Eintrag im Array kleiner/gleich temp ist: 
        return findmin(array, size, ++ind, temp==array[ind], currMinInd==ind); // erhöhe den Wert ind um eins, gib array und size zurück, setze temp gleich dem Wert von array[ind], setze currMinInd gleich ind, dann wiederhole die Rekursion
        }
        else return findmin(array, size, ++ind, temp, currMinInd);  // sonst erhöhe den Wert ind um eins, gib array, size, temp und currMinInd zurück, dann wiederhole die Rekursion
         }
   else return currMinInd;        // sonst gib currMinInd zurück
}

int minimumIndex ( int array [], int size ) {
    return findmin(array, size, 0, 32767,0); // ruft Rekursion auf
}
</code></pre>
<p>Fand es irgendwie logischer, currMinInd anfangs auf 32767 zu setzen und dann das kleinste Element zu suchen... funktioniert jedoch immer noch nicht richtig <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1631028</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1631028</guid><dc:creator><![CDATA[caybot]]></dc:creator><pubDate>Mon, 15 Dec 2008 23:29:43 GMT</pubDate></item><item><title><![CDATA[Reply to sortieralgorithmus ohne for, while, goto on Tue, 16 Dec 2008 09:16:35 GMT]]></title><description><![CDATA[<p>Gehs doch mal so an, indem du dir eine rekursive Definition dafür überlegst, was ein Array ist:<br />
Ein Array der Länge n&gt;0 ist entweder ein einzelnes Element (n == 1), oder es ist ein Arrayelement, gefolgt von einem Array der Länge n-1</p>
<p>Was ist nun das Minimale Element eines Arrays und dessen Index?<br />
für n=1 ist die Lösung einfach: das Minimum ist das Element selbst, der Index ist 0<br />
für n &gt; 1 ist es entweder das erste Element und Index 0, oder es ist das Minimum des Restarrays und dessen Index im Restarray plus 1</p>
<p>also (schon etwas verallgemeinert):</p>
<pre><code class="language-cpp">template &lt;class InputIterator&gt;
InputIterator minIter(InputIterator first, InputIterator last)
{
  InputIterator pos1 = first++; //first zeigt jetzt auf das Restarray
  if (first==last) return pos1; //Restarray ist leer, gibt nur ein Element
  InputIterator restmin = minIndex(first, last); 
  return (*restmin &lt; *pos1) ? restmin : pos1;
}

//Benutzen um kleinste Zahl im int-Array zu finden:
int minimum(int* arr, size_t arr_size)
{
  return *(minIndex(arr, arr + arr_size));
}

//um den index zu finden:
class index_not_found : public std::exception {};

template &lt;class InputIterator&gt;
std::size_t indexOf(InputIterator iter, InputIterator seq_begin, InputIterator seq_end = InputIterator())
{
  if (iter == seq_end || seq_begin == seq_end) throw index_not_found();
  return (iter == seq_begin) ? 0 : 1+ index_of(iter, ++seq_begin, seq_end);
}

//im int-Array
std::size_t minIndex(int* arr, size_t arr_size)
{
  return indexOf(minIter(arr, arr  +arr_size), arr, arr + arr_size);
}

//...
int is[] = {0, -12, 44, 315}
int mini = minimum(is, 4); //-12
std::size_t index = minIndex(is, 4); //1
</code></pre>
<p>ungetestet und ohne Gewähr <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1631095</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1631095</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 16 Dec 2008 09:16:35 GMT</pubDate></item></channel></rss>