<?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 beim Hashen]]></title><description><![CDATA[<p>Hallo allerseits,</p>
<p>ich habe versucht, mit einfachsten Mitteln (auch wenn es erfahrene Programmierer wsl zum Weinen bringt) eine Hashtabelle anzulegen und zu füllen. Das Problem ist jetzt, dass der Wert 4 nicht auf seinen Platz gehasht wird und auch die 25 nicht (ich weiß, die Kollisionsbehandlung ist mies, aber ich wollte es nur mal für diese 4 Werte ausprobieren, ob es so mal funktionieren würde).</p>
<p>Hättet ihr einen Tipp, warum die 4 und die 25 nicht auf &quot;ihre Plätze&quot; kommen? Wahrscheinlich ist der Fehler offensichtlich, aber ich komme einfach nicht darauf <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>Wäre also sehr dankbar für einen Tipp, wo der Fehler sein könnte <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>
<p>MfG,<br />
Charlie</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

int main(){

	int keyarray[4]={1,4,17,25};
	int stelle=0;
	int hashtable[8]={0};
    	int letztestelle;

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

	for (int i=0; i&lt;=3; i++) {
		cout&lt;&lt;keyarray[i]&lt;&lt;&quot; &quot;;
	}

	cout&lt;&lt;endl;

	cout&lt;&lt;&quot;Unbefuellte Hashtabelle&quot;&lt;&lt;endl;

	for (int i=0; i&lt;7; i++) {
		cout&lt;&lt;hashtable[i]&lt;&lt;&quot; &quot;;
	}

	cout&lt;&lt;endl;

	for (int i=0; i&lt;7; i++){

		if ((hashtable[i]==0)){

			stelle=(keyarray[i]) % 7; 
			hashtable[stelle]=keyarray[i];

		}

		if (i&gt;=10) {
			letztestelle=keyarray[i] % 10;
		}

		if (i&lt;10) {
			letztestelle=keyarray[i] % 1;
		}

		if (hashtable[i]!=0) {
			stelle=keyarray[i] % 7+letztestelle*3 % 7;
		}

	}

	cout&lt;&lt;&quot;Befuellte Hashtabelle&quot;&lt;&lt;endl;

	for (int i=0; i&lt;=7; i++){
		cout&lt;&lt;i&lt;&lt;&quot;  &quot;&lt;&lt;hashtable[i]&lt;&lt;endl;
	}

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/302007/problem-beim-hashen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 11 Aug 2026 14:11:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/302007.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 09 Apr 2012 12:21:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem beim Hashen on Mon, 09 Apr 2012 12:22:16 GMT]]></title><description><![CDATA[<p>Hallo allerseits,</p>
<p>ich habe versucht, mit einfachsten Mitteln (auch wenn es erfahrene Programmierer wsl zum Weinen bringt) eine Hashtabelle anzulegen und zu füllen. Das Problem ist jetzt, dass der Wert 4 nicht auf seinen Platz gehasht wird und auch die 25 nicht (ich weiß, die Kollisionsbehandlung ist mies, aber ich wollte es nur mal für diese 4 Werte ausprobieren, ob es so mal funktionieren würde).</p>
<p>Hättet ihr einen Tipp, warum die 4 und die 25 nicht auf &quot;ihre Plätze&quot; kommen? Wahrscheinlich ist der Fehler offensichtlich, aber ich komme einfach nicht darauf <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>Wäre also sehr dankbar für einen Tipp, wo der Fehler sein könnte <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>
<p>MfG,<br />
Charlie</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

int main(){

	int keyarray[4]={1,4,17,25};
	int stelle=0;
	int hashtable[8]={0};
    	int letztestelle;

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

	for (int i=0; i&lt;=3; i++) {
		cout&lt;&lt;keyarray[i]&lt;&lt;&quot; &quot;;
	}

	cout&lt;&lt;endl;

	cout&lt;&lt;&quot;Unbefuellte Hashtabelle&quot;&lt;&lt;endl;

	for (int i=0; i&lt;7; i++) {
		cout&lt;&lt;hashtable[i]&lt;&lt;&quot; &quot;;
	}

	cout&lt;&lt;endl;

	for (int i=0; i&lt;7; i++){

		if ((hashtable[i]==0)){

			stelle=(keyarray[i]) % 7; 
			hashtable[stelle]=keyarray[i];

		}

		if (i&gt;=10) {
			letztestelle=keyarray[i] % 10;
		}

		if (i&lt;10) {
			letztestelle=keyarray[i] % 1;
		}

		if (hashtable[i]!=0) {
			stelle=keyarray[i] % 7+letztestelle*3 % 7;
		}

	}

	cout&lt;&lt;&quot;Befuellte Hashtabelle&quot;&lt;&lt;endl;

	for (int i=0; i&lt;=7; i++){
		cout&lt;&lt;i&lt;&lt;&quot;  &quot;&lt;&lt;hashtable[i]&lt;&lt;endl;
	}

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2200135</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200135</guid><dc:creator><![CDATA[Charlie.]]></dc:creator><pubDate>Mon, 09 Apr 2012 12:22:16 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim Hashen on Mon, 09 Apr 2012 12:27:43 GMT]]></title><description><![CDATA[<p>Ich hab nen Tipp für dich: Benutze einen der std::unordered_ Container.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2200137</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200137</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Mon, 09 Apr 2012 12:27:43 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim Hashen on Mon, 09 Apr 2012 13:03:45 GMT]]></title><description><![CDATA[<p>Hallo Charlie.,</p>
<p>ich nehme mal Bezug auf diesen Teil:</p>
<pre><code class="language-cpp">for (int i=0; i&lt;7; i++){

        if ((hashtable[i]==0)){ 

            stelle=(keyarray[i]) % 7; 
            hashtable[stelle]=keyarray[i]; 

        } 

        ...
    }
</code></pre>
<p>Ich glaube nicht, dass du von 0 bis 6 iterieren willst, oder?<br />
Du möchtest doch wahrscheinlich nur von 0 bis 3 iterieren (Anzahl der Elemente, die du einordnen möchtest)</p>
<p>Nun zu deiner Frage, warum 4 und 25 nicht eingeordnet werden.</p>
<p>Du fügst als erstes eine 1 ein, die an Position 1 landet. Im zweiten Schleifendurchlauf, überprüfst du , ob Position 1 belegt ist und die Bedingung ist nicht erfüllt.</p>
<p>Analog dazu landet die 17 auf Position 3 und für 25 ist die Bedingung nicht erfüllt.</p>
<p>Du möchtest wohl eher etwas wie:</p>
<pre><code class="language-cpp">for (int i=0; i&lt;4; i++){

        if ((hashtable[keyarray[i] % 7]==0)){ 

            stelle=(keyarray[i]) % 7; 
            hashtable[stelle]=keyarray[i]; 

        } 

    }
</code></pre>
<p>Die 25 wir hier auch nicht eingefügt, da der Platz belegt ist und dann müsste eine Kollisionsbehandlung greifen.</p>
<p>Gruß,<br />
XSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2200158</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200158</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Mon, 09 Apr 2012 13:03:45 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim Hashen on Mon, 09 Apr 2012 13:16:39 GMT]]></title><description><![CDATA[<p>Vielen Dank!</p>
<p>Ja ich hatte die Schleife ursprünglich von 0 bis 3, habe das dann aber geändert, da ich dachte, das wäre das Problem..</p>
<p>Und danke, wegen den Plätzen, jetzt, wo du es erklärt hast, ist es logisch <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="🙂"
    /> Aber alleine komme ich auf solche Fehler fast nie drauf <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="😞"
    /><br />
Also, vielen vielen Dank!! <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/2200167</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200167</guid><dc:creator><![CDATA[Charlie.]]></dc:creator><pubDate>Mon, 09 Apr 2012 13:16:39 GMT</pubDate></item></channel></rss>