<?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[Binärsuche]]></title><description><![CDATA[<p>Hallo zusammen,<br />
kann mir jemand sagen, warum ich hier keine Ausgabe bekomme. Das Konsolenfenster bleibt leer. Ich finde aber den Fehler nicht:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

bool binsearch(int* arr, int n, int srch)
{
	bool succ = false;
	int start = 0;
	int end = n;
	int mid;

	while(!succ &amp;&amp; start &lt;= end)
	{
		mid = (start+end)/2;
		if(arr[mid]==srch)
			succ = true;
		else 
		{
			if(srch &lt; arr[mid])
				end = mid-1;
			else
				end = mid+1;
		}
	}
	if(succ)
		return true;
	else
		return false;
}

int main()
{
	int arr[6]={1,2,3,4,5,6};

	cout &lt;&lt; boolalpha &lt;&lt; binsearch(arr,6,7) &lt;&lt; endl; //es sollte false ausgegeben werden

}
</code></pre>
<p>Vielen Dank<br />
lg,freakC++</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/257083/binärsuche</link><generator>RSS for Node</generator><lastBuildDate>Thu, 10 Sep 2026 14:51:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/257083.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 22 Dec 2009 14:07:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Binärsuche on Tue, 22 Dec 2009 14:07:51 GMT]]></title><description><![CDATA[<p>Hallo zusammen,<br />
kann mir jemand sagen, warum ich hier keine Ausgabe bekomme. Das Konsolenfenster bleibt leer. Ich finde aber den Fehler nicht:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

bool binsearch(int* arr, int n, int srch)
{
	bool succ = false;
	int start = 0;
	int end = n;
	int mid;

	while(!succ &amp;&amp; start &lt;= end)
	{
		mid = (start+end)/2;
		if(arr[mid]==srch)
			succ = true;
		else 
		{
			if(srch &lt; arr[mid])
				end = mid-1;
			else
				end = mid+1;
		}
	}
	if(succ)
		return true;
	else
		return false;
}

int main()
{
	int arr[6]={1,2,3,4,5,6};

	cout &lt;&lt; boolalpha &lt;&lt; binsearch(arr,6,7) &lt;&lt; endl; //es sollte false ausgegeben werden

}
</code></pre>
<p>Vielen Dank<br />
lg,freakC++</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1826396</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826396</guid><dc:creator><![CDATA[freakC++]]></dc:creator><pubDate>Tue, 22 Dec 2009 14:07:51 GMT</pubDate></item><item><title><![CDATA[Reply to Binärsuche on Tue, 22 Dec 2009 14:26:07 GMT]]></title><description><![CDATA[<p>Da sind so einige Fehler drin.<br />
- Du initialisierst end mit n, was bedeutet, dass end nicht mehr zur Sequenz gehört. Danach tust Du aber so, als wenn end das letzte Element der zu betrachtenden Sequenz ist.<br />
- Müsstest Du nicht auch in einem Fall start verändern?</p>
<p>Dann kannst Du Dir noch succ sparen und einfach &quot;return true;&quot; statt &quot;succ=true;&quot; schreiben.</p>
<p>Beim nächsten Mal bitte selbst mehr anstrengen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1826407</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826407</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Tue, 22 Dec 2009 14:26:07 GMT</pubDate></item><item><title><![CDATA[Reply to Binärsuche on Tue, 22 Dec 2009 14:31:47 GMT]]></title><description><![CDATA[<p>Also, ich habe jetzt end = n-1 gesetzt, doch warum sollte ich &quot;start&quot; ändern. Hier ist ja nichts rekursiv. Das kleine Schönheitsproblem mit dem Rückgabewert habe ich geändert, doch das funktioniert noch nicht. Wenn ich ehrlich bin, habe ich versucht den Pseudocode von Wikipedia umzusetzen, doch bin ich irgendwie dran gescheitert.</p>
<p>Daher brauche ich weitere Hilfe. Da das KOnsolenfenster nichts anzeigt, gehe ich davon aus, dass ich in einer Endlosschleife bin, doch das kann ich mir auch nicht erkären.</p>
<p>Vielen Dank<br />
lg, freakC++</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1826411</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826411</guid><dc:creator><![CDATA[freakC++]]></dc:creator><pubDate>Tue, 22 Dec 2009 14:31:47 GMT</pubDate></item><item><title><![CDATA[Reply to Binärsuche on Tue, 22 Dec 2009 14:39:44 GMT]]></title><description><![CDATA[<p>freakC++ schrieb:</p>
<blockquote>
<p>Daher brauche ich weitere Hilfe.</p>
</blockquote>
<p>freakC++, wie wärs, wenn du einmal den Debugger bemühen würdest? In letzter Zeit machst du wegen kleinsten Dingen einen Thread auf. Wir helfen zwar gerne, wenn um Verständnisfragen geht, aber es haben eben nicht alle Leute Lust, <em>dir</em> in <em>deinem</em> Programm Fehler zu suchen, weil <em>du</em> dich nicht selbst bemühst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1826417</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826417</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 22 Dec 2009 14:39:44 GMT</pubDate></item><item><title><![CDATA[Reply to Binärsuche on Tue, 22 Dec 2009 14:51:37 GMT]]></title><description><![CDATA[<p>Du machst das ganze irgendwie komisch, o_O</p>
<p>Ich würde es so machen:</p>
<pre><code class="language-cpp">bool binSearch(int* array, int needle, int SIZE) {
  int mid = SIZE/2;
  if (array[mid] == needle) return true;
  int start = (array[mid]&lt;needle?mid:0);
  for (int i = start; i &lt; (start==0?mid:SIZE); i++) {
    if (array[i] == needle)
      return true;
  }
  return false;
}
</code></pre>
<p><strong>Ungetestet</strong></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1826420</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826420</guid><dc:creator><![CDATA[Samyboy]]></dc:creator><pubDate>Tue, 22 Dec 2009 14:51:37 GMT</pubDate></item><item><title><![CDATA[Reply to Binärsuche on Tue, 22 Dec 2009 15:07:04 GMT]]></title><description><![CDATA[<p>Samyboy schrieb:</p>
<blockquote>
<p>Du machst das ganze irgendwie komisch, o_O<br />
Ich würde es so machen:</p>
</blockquote>
<p>Das sieht nicht weniger komisch aus. Lass den freak das doch mal selbst machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1826437</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826437</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Tue, 22 Dec 2009 15:07:04 GMT</pubDate></item><item><title><![CDATA[Reply to Binärsuche on Tue, 22 Dec 2009 15:32:57 GMT]]></title><description><![CDATA[<p>Hey,<br />
leutz, ich werde mich bemühen. Ok, ich schaue nochmal drüber. Es halt so, dass ich keinen anderen als euch habe, den ich fragen kann. Dennoch schaue ich noch mal drüber und belästige euch dann erst wieder mit fragen <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>Vielen Dank dennoch<br />
lg, freakC++</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1826447</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826447</guid><dc:creator><![CDATA[freakC++]]></dc:creator><pubDate>Tue, 22 Dec 2009 15:32:57 GMT</pubDate></item><item><title><![CDATA[Reply to Binärsuche on Wed, 23 Dec 2009 14:13:21 GMT]]></title><description><![CDATA[<p>Hallo zusammen,<br />
so nach anfänglicher Kritik, habe ich auf irgendwelchen Pseudocodekram verzichtet und nochmal von vorne angefangen. Ich habe mich dann auch entschieden hier gleich rekursiv dranzugehen. Ich habe mich also bemüht und auch den Debugger genutzt, wie Nexus gefordert hat (er hat ja recht) <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="😃"
    /> . Trotzdem brauche ich Hilfe, da das Ergebnis falsch ist.</p>
<pre><code class="language-cpp">bool binsearch(int* arr, int iBegin, int iEnd, int srch)
{
	int iMitte = (iBegin + iEnd)/2;
	if(arr[iMitte]==srch)
		return true;
	else if(iMitte==0) return false;
	if(arr[iMitte] &lt; srch)
		binsearch(arr,iMitte,iEnd,srch);
	else 
		binsearch(arr,iBegin, iMitte,srch);
}
int main() 
{ 
	int arr[1000];
	for (int i=0; i &lt; 1000; ++i)
		arr[i]=i;

    cout &lt;&lt;  boolalpha &lt;&lt; binsearch(arr,0,1000,501) &lt;&lt; endl;    
}
</code></pre>
<p>Für alle Werte außer 500 (das ist klar), wird false ausgegeben. In diesem Beispiel müsste aber true ausgegeben werden. Woran liegt das?</p>
<p>Vielen Dank für eure stetige Hilfe<br />
lg, freakC++</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1826771</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826771</guid><dc:creator><![CDATA[freakC++]]></dc:creator><pubDate>Wed, 23 Dec 2009 14:13:21 GMT</pubDate></item><item><title><![CDATA[Reply to Binärsuche on Wed, 23 Dec 2009 14:25:32 GMT]]></title><description><![CDATA[<p>Sach mal bin ich dumm?</p>
<p>Ich habe nochmal ein bisschen rumgespielt. Es wird richtig aufgeteilt und es kommt immer das richtige raus, doch irgendwie wird trotzdem die erste if Bedingung nicht wahr:</p>
<pre><code class="language-cpp">bool binsearch(int* arr, int iBegin, int iEnd, int srch)
{
	int iMitte = (iBegin + iEnd)/2;
	cout &lt;&lt; arr[iMitte] &lt;&lt; endl; //zum Schluss 501
	cout &lt;&lt; &quot;Search &quot; &lt;&lt; srch &lt;&lt; endl; //immer 501
	if(arr[iMitte]==srch) //warum ist diese bedingung dann nicht wahr?
		return true;
...
</code></pre>
<p>Ich brauche eure Hilfe <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="😉"
    /><br />
lg, freakC++</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1826794</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826794</guid><dc:creator><![CDATA[freakC++]]></dc:creator><pubDate>Wed, 23 Dec 2009 14:25:32 GMT</pubDate></item><item><title><![CDATA[Reply to Binärsuche on Wed, 23 Dec 2009 14:42:41 GMT]]></title><description><![CDATA[<p>Bist du sicher, dass sie nicht wahr wird? Ist das kurz vor der Rückgabe an den Aufrufer von <code>binsearch()</code> ? Versuch ansonsten mal, die Bedingung zu speichern:</p>
<pre><code class="language-cpp">bool ret = (arr[iMitte] == srch);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1826800</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826800</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 23 Dec 2009 14:42:41 GMT</pubDate></item><item><title><![CDATA[Reply to Binärsuche on Wed, 23 Dec 2009 14:46:00 GMT]]></title><description><![CDATA[<p>Naja, wenn die Bedingung wahr wäre, dann würde sofort &quot;true&quot; zurückgegeben werden. Das ist aber nicht der Fall. Ich versuche aber mal den Wert zu speichern.</p>
<p>lg, freakC++</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1826803</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826803</guid><dc:creator><![CDATA[freakC++]]></dc:creator><pubDate>Wed, 23 Dec 2009 14:46:00 GMT</pubDate></item><item><title><![CDATA[Reply to Binärsuche on Wed, 23 Dec 2009 14:48:54 GMT]]></title><description><![CDATA[<p>freakC++ schrieb:</p>
<blockquote>
<p>Naja, wenn die Bedingung wahr wäre, dann würde sofort &quot;true&quot; zurückgegeben werden. Das ist aber nicht der Fall.</p>
</blockquote>
<p>Das sollte aber auch nicht der Fall sein, wenn der Algorithmus korrekt läuft, oder? Von welchem Zeitpunkt sprechen wir eigentlich? In deinem Kommentar stand &quot;zum Schluss 501&quot;, darum bin ich davon ausgegangen, dass es sich um die Rekursion unmittelbar vor der Rückgabe handelte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1826805</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826805</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 23 Dec 2009 14:48:54 GMT</pubDate></item><item><title><![CDATA[Reply to Binärsuche on Wed, 23 Dec 2009 14:52:30 GMT]]></title><description><![CDATA[<p>Hallo,<br />
wenn ich in &quot;if(arr[iMitte]==srch)&quot; noch eine Ausgabe schreibe, dann wird diese ausgegeben. Das bedeutet, dass die Bedingung erfüllt ist. Warum wird dann trotzdem &quot;false&quot; ausgegeben? Das verstehe ich einfach nicht.</p>
<p>Mmmh, wenn ich jedoch den else if Zwei</p>
<pre><code class="language-cpp">else if(iMitte==0) return false;
</code></pre>
<p>umschreibe zu:</p>
<pre><code class="language-cpp">else if(iMitte==0) cout &lt;&lt; &quot;HÄÄÄ&quot;;
</code></pre>
<p>dann wird nicht &quot;HÄÄÄ&quot; ausgegeben. Das bedeutet auch, dass das false nicht aus dieser Bedingung kommt. Woher kommt es dann? Und warum wird nicht true zurückgegeben, obwohl die Bedingung wahr ist.</p>
<p>Vielen Dank<br />
lg, freakC++</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1826806</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826806</guid><dc:creator><![CDATA[freakC++]]></dc:creator><pubDate>Wed, 23 Dec 2009 14:52:30 GMT</pubDate></item><item><title><![CDATA[Reply to Binärsuche on Wed, 23 Dec 2009 14:52:11 GMT]]></title><description><![CDATA[<p>Kannst du den aktuellen Code posten mit allen relevanten Variablenwerten, die du im Debugger gesehen hast und den Werten, die du erwartest? Ich kann dein Problem sonst nicht nachvollziehen.</p>
<p>Du debuggst schon im Debug-Modus, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1826807</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826807</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 23 Dec 2009 14:52:11 GMT</pubDate></item><item><title><![CDATA[Reply to Binärsuche on Wed, 23 Dec 2009 14:55:06 GMT]]></title><description><![CDATA[<p>reichst du den rückgabewert auch weiter? in deinem beispiel hast du<br />
die funktion nur aufgerufen, und den rückgabewert ignoriert.</p>
<p>versuch mal</p>
<p>[cpp]</p>
<p>if(arr[iMitte] &lt; srch)<br />
return binsearch(arr,iMitte,iEnd,srch);<br />
else<br />
return binsearch(arr,iBegin, iMitte,srch);<br />
[cpp]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1826810</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826810</guid><dc:creator><![CDATA[keksdoze]]></dc:creator><pubDate>Wed, 23 Dec 2009 14:55:06 GMT</pubDate></item><item><title><![CDATA[Reply to Binärsuche on Wed, 23 Dec 2009 15:00:45 GMT]]></title><description><![CDATA[<p>Hallo,<br />
das mit der Weitergabe ist wohl ein Fehler. Nun wird &quot;true&quot; ausgeben, doch wenn ich nach einem nichtvorhandenen Element suche, kommt es zum StackOverFlow. Liegt das an der abbruchbedingung. Ich habe die zu</p>
<pre><code class="language-cpp">else if(iMitte&lt;0) 
 return false;
</code></pre>
<p>geändert, doch das bringt auch nichts.</p>
<p>vielen Dank für die Hilfe<br />
lg, freakC++</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1826812</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826812</guid><dc:creator><![CDATA[freakC++]]></dc:creator><pubDate>Wed, 23 Dec 2009 15:00:45 GMT</pubDate></item><item><title><![CDATA[Reply to Binärsuche on Wed, 23 Dec 2009 15:09:45 GMT]]></title><description><![CDATA[<p>Die Binäre Suche ist viel zu fallenreich, um sie durch Versuch und Irrtum zu lösen, fürchte ich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1826818</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826818</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 23 Dec 2009 15:09:45 GMT</pubDate></item><item><title><![CDATA[Reply to Binärsuche on Wed, 23 Dec 2009 15:10:38 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">else if(iMitte==0||iMitte==iEnd-1)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1826819</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826819</guid><dc:creator><![CDATA[ghlo]]></dc:creator><pubDate>Wed, 23 Dec 2009 15:10:38 GMT</pubDate></item><item><title><![CDATA[Reply to Binärsuche on Wed, 23 Dec 2009 15:11:46 GMT]]></title><description><![CDATA[<p>Trotzdem würde ich mein Problem gerne lösen. Ich bin einen kleinen Schritt weiter, nämlich, dass iMitte ja auch hier größer werden kann.</p>
<p>Irgendwie muss die Abbruchbedingung geändert werden, doch ich komm einfach nicht auf die richtige Lösung.</p>
<p>Vielen Dank für die Hilfe<br />
lg, freakC++</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1826820</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826820</guid><dc:creator><![CDATA[freakC++]]></dc:creator><pubDate>Wed, 23 Dec 2009 15:11:46 GMT</pubDate></item><item><title><![CDATA[Reply to Binärsuche on Wed, 23 Dec 2009 15:20:34 GMT]]></title><description><![CDATA[<p>Ha, es funktioniert. Das ist die richtige Abbruchbedingung. DAAnke! Super! Ich wusste, dass es irgendwie daran liegen muss.</p>
<p>Noch eine letzte Frage: warum heißt das eigentlich &quot;Binäre Suche&quot;? Weil das Array aufgeteilt wird?? Hier ist doch nichts binär!</p>
<p>Vielen Dank, ghlo (und natürlich auch alle anderen)<br />
lg, freakC++</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1826822</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826822</guid><dc:creator><![CDATA[freakC++]]></dc:creator><pubDate>Wed, 23 Dec 2009 15:20:34 GMT</pubDate></item><item><title><![CDATA[Reply to Binärsuche on Wed, 23 Dec 2009 15:24:13 GMT]]></title><description><![CDATA[<p>freakC++ schrieb:</p>
<blockquote>
<p>Noch eine letzte Frage: warum heißt das eigentlich &quot;Binäre Suche&quot;? Weil das Array aufgeteilt wird?? Hier ist doch nichts binär!</p>
</blockquote>
<p>Das Array wird rekursiv in <strong>zwei</strong> Teile aufgeteilt, deshalb <strong>bi</strong>när. Der Begriff &quot;binär&quot; hat nicht nur mit Zahlensystemen zu tun.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1826831</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826831</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 23 Dec 2009 15:24:13 GMT</pubDate></item><item><title><![CDATA[Reply to Binärsuche on Wed, 23 Dec 2009 15:32:40 GMT]]></title><description><![CDATA[<p><a href="http://de.wikipedia.org/wiki/Bin%C3%A4rbaum" rel="nofollow">http://de.wikipedia.org/wiki/Bin%C3%A4rbaum</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1826836</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826836</guid><dc:creator><![CDATA[ghlo]]></dc:creator><pubDate>Wed, 23 Dec 2009 15:32:40 GMT</pubDate></item><item><title><![CDATA[Reply to Binärsuche on Wed, 23 Dec 2009 15:55:39 GMT]]></title><description><![CDATA[<p>Achso, dann war das bei mir ein Missverständis. Das ist jedoch jetzt behoben!</p>
<p>Danke<br />
lg, freakC++</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1826849</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826849</guid><dc:creator><![CDATA[freakC++]]></dc:creator><pubDate>Wed, 23 Dec 2009 15:55:39 GMT</pubDate></item></channel></rss>