<?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[Problem mit Pointern beim Quicksort-Algorhytmus]]></title><description><![CDATA[<p>Hallo, ich schreibe grade eine Funktion die eine Start und Endadresse auf dem Arbeitsspeicher nimmt, und die integer größen darin sortiert.<br />
aber irgendwie scheint er irgendwas mit den Zeigern zu verkacken... er kompiliert eins a, und gibt mir dann eine Gleitkomma ausnahme zurück...</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
using namespace std;
void QS(int* start,int* end)
{
int laenge=0;
for(int i=0;&amp;start[i]!=end;i++)laenge++;
laenge/=4;
int pivo=rand()%laenge;
pivo=*(start+pivo);
string klein,gross;
int pivo_counter=0;

for(int i=0;i&lt;laenge;i++)
	{
	if( *(start+i) &lt; pivo ) klein += *(start+i);
	if( *(start+i) &gt; pivo ) gross += *(start+i);
	else pivo_counter++;
	}

int laenge_klein=klein.size();
int laenge_gross=gross.size();

for(int i=0;i&lt;laenge_klein;i++)
*(start+i)=(int)klein[i]-48;

for(int i=0;i&lt;pivo_counter;i++)
*(start+laenge_klein+i)=pivo;

for(int i=0;i&lt;laenge_gross;i++)
*(start+laenge_klein+pivo_counter+i)=(int)gross[i]-48;

int* start_klein=start;
int* end_klein=start+laenge_klein;
int* start_gross=start+laenge_klein+pivo_counter+1;
int* end_gross=start+laenge_klein+pivo_counter+laenge_gross;
QS(start_klein,end_klein);
QS(start_gross,end_gross);
}

int main()
{
int test[5]={ 1, 3, 2 , 4, 1};
int* start=&amp;test[0];
int* end=&amp;test[4];
QS(start,end);
for(int i=0;i&lt;5;i++)cout&lt;&lt;test[i];
cin.get();
return 1;

}
</code></pre>
<p>Vielen dank im Vorraus...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/206994/problem-mit-pointern-beim-quicksort-algorhytmus</link><generator>RSS for Node</generator><lastBuildDate>Sat, 10 Oct 2026 21:07:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/206994.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 02 Mar 2008 16:33:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit Pointern beim Quicksort-Algorhytmus on Sun, 02 Mar 2008 16:33:49 GMT]]></title><description><![CDATA[<p>Hallo, ich schreibe grade eine Funktion die eine Start und Endadresse auf dem Arbeitsspeicher nimmt, und die integer größen darin sortiert.<br />
aber irgendwie scheint er irgendwas mit den Zeigern zu verkacken... er kompiliert eins a, und gibt mir dann eine Gleitkomma ausnahme zurück...</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
using namespace std;
void QS(int* start,int* end)
{
int laenge=0;
for(int i=0;&amp;start[i]!=end;i++)laenge++;
laenge/=4;
int pivo=rand()%laenge;
pivo=*(start+pivo);
string klein,gross;
int pivo_counter=0;

for(int i=0;i&lt;laenge;i++)
	{
	if( *(start+i) &lt; pivo ) klein += *(start+i);
	if( *(start+i) &gt; pivo ) gross += *(start+i);
	else pivo_counter++;
	}

int laenge_klein=klein.size();
int laenge_gross=gross.size();

for(int i=0;i&lt;laenge_klein;i++)
*(start+i)=(int)klein[i]-48;

for(int i=0;i&lt;pivo_counter;i++)
*(start+laenge_klein+i)=pivo;

for(int i=0;i&lt;laenge_gross;i++)
*(start+laenge_klein+pivo_counter+i)=(int)gross[i]-48;

int* start_klein=start;
int* end_klein=start+laenge_klein;
int* start_gross=start+laenge_klein+pivo_counter+1;
int* end_gross=start+laenge_klein+pivo_counter+laenge_gross;
QS(start_klein,end_klein);
QS(start_gross,end_gross);
}

int main()
{
int test[5]={ 1, 3, 2 , 4, 1};
int* start=&amp;test[0];
int* end=&amp;test[4];
QS(start,end);
for(int i=0;i&lt;5;i++)cout&lt;&lt;test[i];
cin.get();
return 1;

}
</code></pre>
<p>Vielen dank im Vorraus...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1466759</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1466759</guid><dc:creator><![CDATA[Tino Rasparie]]></dc:creator><pubDate>Sun, 02 Mar 2008 16:33:49 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Pointern beim Quicksort-Algorhytmus on Sun, 02 Mar 2008 17:21:11 GMT]]></title><description><![CDATA[<p>Habs nur schnell getestet. Du dividierst in folgender Zeile:</p>
<p>[cpp]<br />
int pivo=rand()%laenge;<br />
[code]</p>
<p>Durch 0. D.h. Laenge ist 0. Muss irgendetwas mit deiner Rekursion zu tun haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1466776</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1466776</guid><dc:creator><![CDATA[*D*]]></dc:creator><pubDate>Sun, 02 Mar 2008 17:21:11 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Pointern beim Quicksort-Algorhytmus on Sun, 02 Mar 2008 17:35:00 GMT]]></title><description><![CDATA[<p>Habe das Programm bearbeitet, war wirklich ein sehr dummer fehler^^ Hat auch sonst nich mit dem algorhytmus harmoniert, so wie er laufen soll..</p>
<p>hier die neue: das Problem besteht aber weiterhin..</p>
<p>#include&lt;iostream&gt;<br />
using namespace std;<br />
void QS(int* start,int* end)<br />
{<br />
int laenge=0;<br />
for(int i=0;&amp;start[i-1]!=end;i++)laenge++;<br />
cout&lt;&lt;&quot;länge: &quot;&lt;&lt;laenge&lt;&lt;endl;<br />
int pivo=rand()%laenge;<br />
pivo=start[pivo];<br />
string klein,gross;<br />
int pivo_counter=0;<br />
cout&lt;&lt;&quot;pivo: &quot;&lt;&lt;pivo&lt;&lt;endl;</p>
<p>for(int i=0;i&lt;laenge;i++)<br />
{<br />
if( start[i] &lt; pivo ) {klein += (char)start[i];} //<br />
if( start[i] &gt; pivo ) gross += (char)start[i];<br />
else pivo_counter++;<br />
}<br />
int laenge_klein=klein.size();<br />
int laenge_gross=gross.size();</p>
<p>for(int i=0;i&lt;laenge_klein;i++)<br />
*(start+i)=(int)klein[i]-48;</p>
<p>for(int i=0;i&lt;pivo_counter;i++)<br />
*(start+laenge_klein+i)=pivo;</p>
<p>for(int i=0;i&lt;laenge_gross;i++)<br />
<em>(start+laenge_klein+pivo_counter+i)=(int)gross[i]-48;<br />
int</em> start_klein=start;<br />
int* end_klein=&amp;start[laenge_klein];<br />
int* start_gross=&amp;start[laenge_klein+pivo_counter+1];<br />
int* end_gross=&amp;start[laenge_klein+pivo_counter+laenge_gross];<br />
if(laenge_klein&gt;=2)<br />
QS(start_klein,end_klein);<br />
if(laenge_gross&gt;=2)<br />
QS(start_gross,end_gross);<br />
}</p>
<p>int main()</p>
<p>{<br />
int test[7];<br />
test[0]=2;<br />
test[2]=3;<br />
test[3]=5;<br />
test[4]=4;<br />
test[1]=8;<br />
test[5]=13;<br />
test[6]=-2;<br />
int* start=&amp;test[0];<br />
int* end=&amp;test[6];<br />
QS(start,end);<br />
for(int i=0;i&lt;5;i++)cout&lt;&lt;start[i];<br />
cin.get();<br />
return 1;</p>
<p>}<br />
[cpp]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1466782</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1466782</guid><dc:creator><![CDATA[Tino Rasparie]]></dc:creator><pubDate>Sun, 02 Mar 2008 17:35:00 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Pointern beim Quicksort-Algorhytmus on Sun, 02 Mar 2008 17:57:47 GMT]]></title><description><![CDATA[<p>Ich schau es mir gerade noch einmal an. Zu erst einmal solltest du in der<br />
main Funktion 0 zurückgeben, sonst ist es ein Fehler-Rückgabewert. Und<br />
zweitens solltest du als erstes einen Prototyp deiner Funktion anlegen, und<br />
dann erst die Funktion definieren!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1466791</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1466791</guid><dc:creator><![CDATA[*D*]]></dc:creator><pubDate>Sun, 02 Mar 2008 17:57:47 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Pointern beim Quicksort-Algorhytmus on Sun, 02 Mar 2008 18:03:47 GMT]]></title><description><![CDATA[<p>So, ich hab es mir jetzt mal weiter angeschaut: was soll denn bitte folgende<br />
Zeilen bedeuten?</p>
<pre><code class="language-cpp">if( start[i] &lt; pivo ) {klein += (char)start[i];}
if( start[i] &gt; pivo ) gross += (char)start[i];
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1466794</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1466794</guid><dc:creator><![CDATA[*D*]]></dc:creator><pubDate>Sun, 02 Mar 2008 18:03:47 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Pointern beim Quicksort-Algorhytmus on Sun, 02 Mar 2008 18:22:26 GMT]]></title><description><![CDATA[<p>Ich speichere die jeweils kleineren beziehungsweise größeren vergleichszahlen in jeweiligen strings ab.<br />
Mein Shema sollte eigentlich so laufen:<br />
Nimm anfangs und endadresse<br />
nimm eine stichprobe<br />
vergleiche alle damit und merke was kleiner oder größer war<br />
schreibe nun den speicher neu in der Form #kleinere#stichprobe#größere<br />
fahre fort mit dem speicherbereich in dem kleinere gespeichert ist<br />
dann mit dem wo größere drin gespeichert ist..</p>
<p>ich danke für deine hilfe^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1466806</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1466806</guid><dc:creator><![CDATA[Tino Rasparie]]></dc:creator><pubDate>Sun, 02 Mar 2008 18:22:26 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Pointern beim Quicksort-Algorhytmus on Sun, 02 Mar 2008 19:36:59 GMT]]></title><description><![CDATA[<p>HAbe das ganze noch einmal generalüberholt. jetz müssten meiner ansicht nach uch alle adressen soweit stimmen ;,-)</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
using namespace std;
void QS(int* start,int* end)
{
int laenge=0;
for(int i=0;&amp;start[i-1]!=end;i++)laenge++;
cout&lt;&lt;&quot;länge: &quot;&lt;&lt;laenge&lt;&lt;endl;
int pivo=rand()%laenge;
pivo=start[pivo];
string klein=&quot;&quot;,gross=&quot;&quot;;
int pivocounter=0;
cout&lt;&lt;&quot;pivo: &quot;&lt;&lt;pivo&lt;&lt;endl;

for(int i=0;i&lt;laenge;i++)
	{
	if( start[i] &lt; pivo ) {klein += (char)start[i];}                //
	if( start[i] &gt; pivo ) gross += (char)start[i];
	else pivocounter++;
	}
int laenge_klein=klein.size();
int laenge_gross=gross.size();

for(int i=0;i&lt;laenge_klein;i++)
start[i]=(int)klein[i];

for(int i=0;i&lt;pivocounter-1;i++)
start[laenge_klein+i]=pivo;

for(int i=0;i&lt;laenge_gross;i++)
start[laenge_klein+pivocounter+i]=(int)gross[i];

int* start_klein=start;
int* end_klein=&amp;start[laenge_klein-1];
int* start_gross=&amp;start[laenge_klein+pivocounter];
int* end_gross=&amp;start[laenge_klein+pivocounter+laenge_gross-1];
klein=&quot;&quot;;gross=&quot;&quot;;

for(int i=0;i&lt;laenge;i++)cout&lt;&lt;start[i]&lt;&lt;&quot; &quot;;
cout&lt;&lt;endl;
if(laenge_klein&gt;1)
QS(start_klein,end_klein);
if(laenge_gross&gt;1)
QS(start_gross,end_gross);
}

int main()

{
int test[7];
test[0]=6;
test[1]=71;
test[2]=3;
test[3]=5;
test[4]=2;
test[5]=13;
test[6]=7;
int* start=&amp;test[0];
int* end=&amp;test[6];
QS(start,end);
for(int i=0;i&lt;5;i++)cout&lt;&lt;start[i];
cin.get();
return 0;

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1466867</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1466867</guid><dc:creator><![CDATA[Tino Rasparie]]></dc:creator><pubDate>Sun, 02 Mar 2008 19:36:59 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Pointern beim Quicksort-Algorhytmus on Sun, 02 Mar 2008 20:31:35 GMT]]></title><description><![CDATA[<p>Es ist fertig, war etwas ganz triviales. else vor dem 2. if vergessen^^</p>
<p>Wer es sich nochmal ansehen mag:</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
using namespace std;

void QS(int* start,int* end)
{
int laenge=0;
for(int i=0;&amp;start[i-1]!=end;i++)laenge++;
int pivo=rand()%laenge;
pivo=start[pivo];
string klein=&quot;&quot;,gross=&quot;&quot;;
int pivocounter=0;

for(int i=0;i&lt;laenge;i++)
	{
	if( start[i] &lt; pivo ) {klein += (char)start[i];}
	else                //
	if( start[i] &gt; pivo ) {gross += (char)start[i];}
	else {pivocounter++;}
	}
int laenge_klein=klein.size();
int laenge_gross=gross.size();

for(int i=0;i&lt;laenge_klein;i++)
start[i]=(int)klein[i];

for(int i=0;i&lt;pivocounter;i++)
start[laenge_klein+i]=pivo;

for(int i=0;i&lt;laenge_gross;i++)
start[laenge_klein+pivocounter+i]=(int)gross[i];

int* start_klein=start;
int* end_klein=&amp;start[laenge_klein-1];
int* start_gross=&amp;start[laenge_klein+pivocounter];
int* end_gross=&amp;start[laenge_klein+pivocounter+laenge_gross-1];
klein=&quot;&quot;;gross=&quot;&quot;;
if(laenge_klein&gt;1)
QS(start_klein,end_klein);
if(laenge_gross&gt;1)
QS(start_gross,end_gross);
}

int main()

{
string test;
getline(cin,test);
int array[1000];
for(int i=0;i&lt;test.size();i++)array[i]=(int)test[i];
int* start=&amp;array[0];
int* end=&amp;array[test.size()-1];
QS(start,end);
start=&amp;array[0];
for(int i=0;i&lt;test.size();i++)cout&lt;&lt;(char)start[i]&lt;&lt;&quot; &quot;;
cin.get();
return 0;

}
</code></pre>
<p>weiß jemand wie ich integer variablen dynamisch speichern kann? also um das int array[1000] zu vermeiden^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1466926</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1466926</guid><dc:creator><![CDATA[Tino Rasparie]]></dc:creator><pubDate>Sun, 02 Mar 2008 20:31:35 GMT</pubDate></item></channel></rss>