<?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[Hashes (dynamische Strukturen) in Datei speichern und lesen.]]></title><description><![CDATA[<p>Hallo liebe gemeinde ich habe folgendes Problem.<br />
Wir sollen ein Programm schreiben welches mit Hilfe von Hashes Daten einliest. Diese Daten sollen wir dann in eine Datei schreiben (Binär) und dann auch wieder auslesen.</p>
<p>Also das Grundprogramm sieht folgendermaßen aus:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
using namespace std;

const int M=3;	//Anzahl der Hashes

struct element{
	int value;
	struct element *next;
};

struct element *H[M];	//(HASH TABLE) Array in der größe des Hashes mit verketteter liste für jedes element
struct element *C[M];

int h(int x){			//errechnet den Hash, an welche stelle der Hash Table soll das element hin
	return x%M;
}

void insert (int x){
	struct element *p = new element;
	p-&gt;value = x;
	p-&gt;next = NULL;
	int i = h(x);

	if (H[i] == NULL)
		H[i] = p;
	else {
		p-&gt;next = H[i];
		H[i] = p;
	}
}

bool isMember(int x){
	struct element *p;
	p = H[h(x)];
	while(p != NULL &amp;&amp; p-&gt;value !=x)
		p = p-&gt;next;
	if (p != NULL)
		return (p-&gt;value == x);
	else
		return false;
}

void print (){
	cout &lt;&lt; &quot;H: &quot; &lt;&lt; sizeof(H);
	for (int i = 0; i &lt;M; i++){
		cout &lt;&lt;&quot;H[&quot; &lt;&lt;i &lt;&lt;&quot;] = &quot;;
		struct element *p = H[h(i)];
		cout &lt;&lt; &quot;P: &quot; &lt;&lt; sizeof(p) &lt;&lt; &quot;\n&quot;;
		while(p != NULL){
			cout &lt;&lt;p-&gt;value &lt;&lt;&quot; &quot;;
			p = p-&gt;next;
		}
		cout &lt;&lt;endl;
	}
}

void main (){
	int input;
	while (true){
		cout &lt;&lt;&quot;Integer (abbrechen mit negativem Integer: &quot;;
		cin &gt;&gt;input;
		if (input &lt;0) break;
		insert (input);
	}

	print();
	cout &lt;&lt;&quot;Integer suchen: &quot;;
	cin &gt;&gt;input;
	if (isMember(input))
		cout &lt;&lt;input &lt;&lt;&quot; gefunden!&quot; &lt;&lt;endl;
	else
		cout &lt;&lt;input &lt;&lt;&quot; nicht gefunden!&quot; &lt;&lt;endl;
}
</code></pre>
<p>Werte in eine Datei zuschreiben ist ja nicht das Ding, aber die komplette Struktur??</p>
<p>Also mein bisheriger Versuch war folgender:<br />
Schreiben</p>
<pre><code class="language-cpp">ofstream ausgabe;			
	ausgabe.open(dateiname.c_str(), ios::out|ios::binary); 	// zum binaeen Schreiben ï¿½oeffnen
	if (!ausgabe) {			// Datei kann nicht geoeffnet werden
		cerr &lt;&lt; dateiname &lt;&lt; &quot; kann nicht geoeffnet werden!\n&quot;;
		exit(-2);
	}

	ausgabe.write((char *)&amp;H, sizeof(H));	// Anzahl Bytes ab Adresse von H in Datei schreiben
	ausgabe.close();
</code></pre>
<p>Lesen:</p>
<pre><code class="language-cpp">ifstream eingabe;			
	eingabe.open(dateiname.c_str(), ios::in|ios::binary); 	// zum binï¿½en Lesen ï¿½fnen
	if (!eingabe) {			// Datei kann nicht geoeffnet werden
		cerr &lt;&lt; dateiname &lt;&lt; &quot; kann nicht geï¿½fnet werden!\n&quot;;
		exit(-2);
	}

	int i = 0;
	while (eingabe.read((char *)&amp;H[i], sizeof(H[i]))) {// Anzahl Bytes aus Datei lesen und ab Adresse H speichern
		cout &lt;&lt; H[i++] &lt;&lt; endl; //Hier dann print()
	}

	eingabe.close();
</code></pre>
<p>Ich wäre für eure Hilfe sehr dankbar, denn ich schreibe morgen eine Programmieren Klausur und da sollte ich die obengenannte Problemstellung beherrschen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>Viele Grüße Ice</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/136237/hashes-dynamische-strukturen-in-datei-speichern-und-lesen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 09:22:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/136237.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 08 Feb 2006 14:27:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Hashes (dynamische Strukturen) in Datei speichern und lesen. on Wed, 08 Feb 2006 14:27:36 GMT]]></title><description><![CDATA[<p>Hallo liebe gemeinde ich habe folgendes Problem.<br />
Wir sollen ein Programm schreiben welches mit Hilfe von Hashes Daten einliest. Diese Daten sollen wir dann in eine Datei schreiben (Binär) und dann auch wieder auslesen.</p>
<p>Also das Grundprogramm sieht folgendermaßen aus:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
using namespace std;

const int M=3;	//Anzahl der Hashes

struct element{
	int value;
	struct element *next;
};

struct element *H[M];	//(HASH TABLE) Array in der größe des Hashes mit verketteter liste für jedes element
struct element *C[M];

int h(int x){			//errechnet den Hash, an welche stelle der Hash Table soll das element hin
	return x%M;
}

void insert (int x){
	struct element *p = new element;
	p-&gt;value = x;
	p-&gt;next = NULL;
	int i = h(x);

	if (H[i] == NULL)
		H[i] = p;
	else {
		p-&gt;next = H[i];
		H[i] = p;
	}
}

bool isMember(int x){
	struct element *p;
	p = H[h(x)];
	while(p != NULL &amp;&amp; p-&gt;value !=x)
		p = p-&gt;next;
	if (p != NULL)
		return (p-&gt;value == x);
	else
		return false;
}

void print (){
	cout &lt;&lt; &quot;H: &quot; &lt;&lt; sizeof(H);
	for (int i = 0; i &lt;M; i++){
		cout &lt;&lt;&quot;H[&quot; &lt;&lt;i &lt;&lt;&quot;] = &quot;;
		struct element *p = H[h(i)];
		cout &lt;&lt; &quot;P: &quot; &lt;&lt; sizeof(p) &lt;&lt; &quot;\n&quot;;
		while(p != NULL){
			cout &lt;&lt;p-&gt;value &lt;&lt;&quot; &quot;;
			p = p-&gt;next;
		}
		cout &lt;&lt;endl;
	}
}

void main (){
	int input;
	while (true){
		cout &lt;&lt;&quot;Integer (abbrechen mit negativem Integer: &quot;;
		cin &gt;&gt;input;
		if (input &lt;0) break;
		insert (input);
	}

	print();
	cout &lt;&lt;&quot;Integer suchen: &quot;;
	cin &gt;&gt;input;
	if (isMember(input))
		cout &lt;&lt;input &lt;&lt;&quot; gefunden!&quot; &lt;&lt;endl;
	else
		cout &lt;&lt;input &lt;&lt;&quot; nicht gefunden!&quot; &lt;&lt;endl;
}
</code></pre>
<p>Werte in eine Datei zuschreiben ist ja nicht das Ding, aber die komplette Struktur??</p>
<p>Also mein bisheriger Versuch war folgender:<br />
Schreiben</p>
<pre><code class="language-cpp">ofstream ausgabe;			
	ausgabe.open(dateiname.c_str(), ios::out|ios::binary); 	// zum binaeen Schreiben ï¿½oeffnen
	if (!ausgabe) {			// Datei kann nicht geoeffnet werden
		cerr &lt;&lt; dateiname &lt;&lt; &quot; kann nicht geoeffnet werden!\n&quot;;
		exit(-2);
	}

	ausgabe.write((char *)&amp;H, sizeof(H));	// Anzahl Bytes ab Adresse von H in Datei schreiben
	ausgabe.close();
</code></pre>
<p>Lesen:</p>
<pre><code class="language-cpp">ifstream eingabe;			
	eingabe.open(dateiname.c_str(), ios::in|ios::binary); 	// zum binï¿½en Lesen ï¿½fnen
	if (!eingabe) {			// Datei kann nicht geoeffnet werden
		cerr &lt;&lt; dateiname &lt;&lt; &quot; kann nicht geï¿½fnet werden!\n&quot;;
		exit(-2);
	}

	int i = 0;
	while (eingabe.read((char *)&amp;H[i], sizeof(H[i]))) {// Anzahl Bytes aus Datei lesen und ab Adresse H speichern
		cout &lt;&lt; H[i++] &lt;&lt; endl; //Hier dann print()
	}

	eingabe.close();
</code></pre>
<p>Ich wäre für eure Hilfe sehr dankbar, denn ich schreibe morgen eine Programmieren Klausur und da sollte ich die obengenannte Problemstellung beherrschen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>Viele Grüße Ice</p>
]]></description><link>https://www.c-plusplus.net/forum/post/989372</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/989372</guid><dc:creator><![CDATA[IceReg]]></dc:creator><pubDate>Wed, 08 Feb 2006 14:27:36 GMT</pubDate></item><item><title><![CDATA[Reply to Hashes (dynamische Strukturen) in Datei speichern und lesen. on Wed, 08 Feb 2006 14:44:33 GMT]]></title><description><![CDATA[<p>Ich würde an deiner Stelle nur die Zahlenwerte aus den einzelnen Hash-Blöcken in die Datei schreiben und beim auslesen die Listenstrukturen neu wieder aufbauen.</p>
<p>(btw, deine Funktionen kann man aber noch erheblich optimieren ;))</p>
]]></description><link>https://www.c-plusplus.net/forum/post/989388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/989388</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 08 Feb 2006 14:44:33 GMT</pubDate></item></channel></rss>