<?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[Aufgabe in C++]]></title><description><![CDATA[<p>Hallo an alle die mir helfen können.folgende Aufgabe habe ich an der Uni bekommen und muss schnell wie möglich abgeben und würde mich auf jede hilfe freuen.</p>
<p>Verkettete Liste, dynamische Datenstrukturen</p>
<p>Schreiben Sie ein C++-Programm, das eine dynamische einfach verkettete Liste verwaltet.<br />
Erstellen Sie dazu eine Klasse Telefon mit den String-Datenelementen Vorname, Name und<br />
Nummer.<br />
Die Elemente sollen dynamisch zur Laufzeit mit Hilfe des new-Operators erzeugt werden.<br />
Die Klasse soll die folgenden Methoden besitzen:</p>
<p>Einfuegen fügt ein neues Element wahlfrei an beliebiger Stelle in der Liste ein, die drei<br />
Attribute Vorname, Name und Nummer sollen eingegeben werden. Wenn<br />
die Liste noch leer ist, soll das erste Element hier angelegt werden. Zur Bestimmung<br />
des Einfügeortes ist der Vorname oder der Name oder die Nummer<br />
anzugeben, hinter dem das neue Element eingefügt werden soll. Ist<br />
dieses Element nicht vorhanden, soll eine Meldung ausgegeben werden.<br />
Wird das neue Element am Anfang der Liste eingefügt, soll als Position<br />
&quot;Front&quot; angegeben werden.</p>
<p>Anzeigen zeigt alle Elemente der Liste in Tabellenform an. Ist die Liste leer, soll dies<br />
gemeldet werden.</p>
<p>Loeschen loescht ein beliebiges Element der Liste. Das zu löschende Element soll<br />
durch den Namen bestimmt werden. Ist das Element nicht vorhanden, soll<br />
dies gemeldet werden. Beachten Sie, dass der Speicherplatz eines gelöschten<br />
Elementes wieder freigegeben werden muss.</p>
<p>Speichern schreibt die komplette Liste in eine Datei mit frei wählbarem Namen. Ist die<br />
Datei bereits vorhanden, wird sie überschrieben. Ist die Liste leer, darf die<br />
eventuell vorhandene Datei nicht verändert werden.</p>
<p>Laden liest eine Datei ein. Bereits vorhandene Einträge in der Liste sollen verloren<br />
gehen. Existiert die angegebene Datei nicht, darf die Liste nicht verändert<br />
werden.<br />
Das Hauptprogramm soll in einer Schleife laufen. Mit Hilfe eines Menus sollen die Funktionen<br />
gewählt werden. Die Bearbeitung der Liste soll ausschließlich in den Member-Funktionen erfolgen.<br />
Es dürfen keine globalen Variablen verwendet werden.</p>
<p>Was muss getan werden, damit beim Verlassen des Programms der gesamte belegte Speicher<br />
wieder frei wird?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/185936/aufgabe-in-c</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 06:16:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/185936.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 03 Jul 2007 10:08:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Aufgabe in C++ on Tue, 03 Jul 2007 10:08:45 GMT]]></title><description><![CDATA[<p>Hallo an alle die mir helfen können.folgende Aufgabe habe ich an der Uni bekommen und muss schnell wie möglich abgeben und würde mich auf jede hilfe freuen.</p>
<p>Verkettete Liste, dynamische Datenstrukturen</p>
<p>Schreiben Sie ein C++-Programm, das eine dynamische einfach verkettete Liste verwaltet.<br />
Erstellen Sie dazu eine Klasse Telefon mit den String-Datenelementen Vorname, Name und<br />
Nummer.<br />
Die Elemente sollen dynamisch zur Laufzeit mit Hilfe des new-Operators erzeugt werden.<br />
Die Klasse soll die folgenden Methoden besitzen:</p>
<p>Einfuegen fügt ein neues Element wahlfrei an beliebiger Stelle in der Liste ein, die drei<br />
Attribute Vorname, Name und Nummer sollen eingegeben werden. Wenn<br />
die Liste noch leer ist, soll das erste Element hier angelegt werden. Zur Bestimmung<br />
des Einfügeortes ist der Vorname oder der Name oder die Nummer<br />
anzugeben, hinter dem das neue Element eingefügt werden soll. Ist<br />
dieses Element nicht vorhanden, soll eine Meldung ausgegeben werden.<br />
Wird das neue Element am Anfang der Liste eingefügt, soll als Position<br />
&quot;Front&quot; angegeben werden.</p>
<p>Anzeigen zeigt alle Elemente der Liste in Tabellenform an. Ist die Liste leer, soll dies<br />
gemeldet werden.</p>
<p>Loeschen loescht ein beliebiges Element der Liste. Das zu löschende Element soll<br />
durch den Namen bestimmt werden. Ist das Element nicht vorhanden, soll<br />
dies gemeldet werden. Beachten Sie, dass der Speicherplatz eines gelöschten<br />
Elementes wieder freigegeben werden muss.</p>
<p>Speichern schreibt die komplette Liste in eine Datei mit frei wählbarem Namen. Ist die<br />
Datei bereits vorhanden, wird sie überschrieben. Ist die Liste leer, darf die<br />
eventuell vorhandene Datei nicht verändert werden.</p>
<p>Laden liest eine Datei ein. Bereits vorhandene Einträge in der Liste sollen verloren<br />
gehen. Existiert die angegebene Datei nicht, darf die Liste nicht verändert<br />
werden.<br />
Das Hauptprogramm soll in einer Schleife laufen. Mit Hilfe eines Menus sollen die Funktionen<br />
gewählt werden. Die Bearbeitung der Liste soll ausschließlich in den Member-Funktionen erfolgen.<br />
Es dürfen keine globalen Variablen verwendet werden.</p>
<p>Was muss getan werden, damit beim Verlassen des Programms der gesamte belegte Speicher<br />
wieder frei wird?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1317374</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1317374</guid><dc:creator><![CDATA[Fox River]]></dc:creator><pubDate>Tue, 03 Jul 2007 10:08:45 GMT</pubDate></item><item><title><![CDATA[Reply to Aufgabe in C++ on Tue, 03 Jul 2007 10:11:22 GMT]]></title><description><![CDATA[<p>Und was sind deine bisherigen Ergebnisse? Oder möchtest du eine Komplettlösung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1317377</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1317377</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Tue, 03 Jul 2007 10:11:22 GMT</pubDate></item><item><title><![CDATA[Reply to Aufgabe in C++ on Tue, 03 Jul 2007 10:22:13 GMT]]></title><description><![CDATA[<p>MFK schrieb:</p>
<blockquote>
<p>Und was sind deine bisherigen Ergebnisse? Oder möchtest du eine Komplettlösung?</p>
</blockquote>
<p>[cpp]<br />
//*********************************************************************<br />
// Kennwort: dynamische Datenstrukturen<br />
// Datei: dynamische.cpp<br />
// Name:<br />
// Datum: 13.06.2007<br />
//*********************************************************************<br />
#include &lt;stdio.h&gt;<br />
#include &lt;iostream&gt;<br />
#include &lt;conio.h&gt;<br />
#include &lt;iomanip&gt;<br />
#include &lt;string&gt;<br />
#include &lt;fstream&gt;</p>
<p>using namespace std;</p>
<p>class Telefon<br />
{<br />
private:<br />
char Name[40];<br />
char Vorname[40];<br />
char Nummer[40];</p>
<p>Telefon* next; // Zeiger auf Datenobjekt des Typ Telefon.<br />
Telefon* anfang;</p>
<p>public:<br />
int einfuegen();<br />
void anzeigen();<br />
void loeschen_pos();<br />
void speichern();<br />
void laden();</p>
<p>Telefon(void) // Konstruktor<br />
{<br />
next=0; // Next = 0 , sind wird am Anfang der Liste<br />
anfang= 0;<br />
}<br />
};</p>
<p>streampos an_fang;</p>
<p>//<em>--------------------------Datensätze einfuegen------------------------</em>/</p>
<p>int Telefon::einfuegen()<br />
{</p>
<p>Telefon *neueintrag = new Telefon;</p>
<p>int wahl;</p>
<p>if(next!=0) //Jetzt muss überprüft werden, ob überhaupt ein Element in der Liste vorhanden ist:<br />
{<br />
//Es befindet sich bereits mindestens ein Element in der Liste.</p>
<p>system(&quot;cls&quot;); // damit, wird aussehen als ob ein neues Fenster geöffnet wurde</p>
<p>cout&lt;&lt;&quot;\nWo soll den neuen Eintrag eingefuegt werden? Ihr Wahl bitte: \n\n&quot;;<br />
cout&lt;&lt;&quot;.......UnterMENU.....\n&quot;;<br />
cout&lt;&lt;&quot;---------------------\n&quot;;<br />
cout&lt;&lt;&quot;\n1..Am Anfang\n&quot;;<br />
cout&lt;&lt;&quot;\n2..Am andere Stelle\n&quot;;<br />
cout&lt;&lt;&quot;\n3..Am Ende\n&quot;;<br />
cout&lt;&lt;&quot;\n4..Back to HauptMenu\n&quot;;<br />
cout&lt;&lt;&quot;---------------------\n&quot;;<br />
cout&lt;&lt;&quot;Ihr Wahl...:&quot;;<br />
cin&gt;&gt;wahl;</p>
<p>//wahl = getch(); //wahl=wahl-48;<br />
}</p>
<p>else // Falls noch kein Element in der Liste vorhanden ist, werden die Daten einfach eingehängt.<br />
{<br />
wahl=1;<br />
}</p>
<p>switch(wahl)<br />
{</p>
<p>case 1:<br />
{<br />
neueintrag-&gt;next = next; //next des neuen elements zeigt auf das nächste Element<br />
next =neueintrag; //next des neuen elements bekommt die andresse des neuen elements zugewiesen</p>
<p>cout&lt;&lt;&quot;\n\nName:\t\t&quot;; cin&gt;&gt;neueintrag-&gt;Name;<br />
cout&lt;&lt;&quot;\nVorname:\t&quot;; cin&gt;&gt;neueintrag-&gt;Vorname;<br />
cout&lt;&lt;&quot;\nNummer:\t\t&quot;; cin&gt;&gt;neueintrag-&gt;Nummer;</p>
<p>break;<br />
}</p>
<p>case 2: // Das Element muss irgendwo in der Mitte eingefügt werden.</p>
<p>{<br />
string suchstring;<br />
Telefon *stelle;</p>
<p>cout&lt;&lt;&quot;\nHinter welchem Name wollen sie einfügen ?\t&quot;;<br />
cin&gt;&gt;suchstring;</p>
<p>stelle = next; //neueintrag für die suche an das erste element setzten</p>
<p>while(stelle)<br />
{<br />
if(stelle-&gt;Name == suchstring)<br />
{<br />
neueintrag-&gt;next = stelle-&gt;next;<br />
stelle-&gt;next = neueintrag;</p>
<p>cout&lt;&lt;&quot;\n\nName:\t\t&quot;; cin&gt;&gt;neueintrag-&gt;Name;<br />
cout&lt;&lt;&quot;\nVorname:\t&quot;; cin&gt;&gt;neueintrag-&gt;Vorname;<br />
cout&lt;&lt;&quot;\nNummer:\t\t&quot;; cin&gt;&gt;neueintrag-&gt;Nummer;<br />
return 0;<br />
}<br />
else<br />
{<br />
stelle = stelle-&gt;next;<br />
}<br />
}</p>
<p>cout&lt;&lt;&quot;\n\nEintrag nicht gefunden! Weiter mit beliebiger Taste...&quot;;<br />
getch();<br />
return 0;<br />
}</p>
<p>case 3: //am ende einfügen<br />
{<br />
Telefon *stelle;<br />
stelle = next;<br />
while(true)<br />
{<br />
if(stelle-&gt;next == 0) // Mit Next auf NULL sind wir am Ende der Liste<br />
{<br />
stelle-&gt;next = neueintrag;<br />
neueintrag-&gt;next = 0;</p>
<p>cout&lt;&lt;&quot;\n\nName:\t\t&quot;; cin&gt;&gt;neueintrag-&gt;Name;<br />
cout&lt;&lt;&quot;\nVorname:\t&quot;; cin&gt;&gt;neueintrag-&gt;Vorname;<br />
cout&lt;&lt;&quot;\nNummer:\t\t&quot;; cin&gt;&gt;neueintrag-&gt;Nummer;</p>
<p>return 0;<br />
}<br />
stelle = stelle-&gt;next;<br />
}<br />
break;<br />
}</p>
<p>case 4:<br />
{<br />
return 0;<br />
}</p>
<p>default:<br />
{<br />
cout&lt;&lt;endl&lt;&lt;&quot;Option nicht vorhanden!! Weiter mit beliebiger taste...&quot;;<br />
getch();<br />
}<br />
}//ende switch</p>
<p>return 0;<br />
} // ende einfuegen()</p>
<p>/<em>-----------------------anzeige der vorhandenen Datensätze------------------------</em>/<br />
void Telefon::anzeigen()<br />
{</p>
<p>int ID=0;</p>
<p>Telefon*ptr_show_element;</p>
<p>ptr_show_element = next;</p>
<p>if(ptr_show_element!=0) // Mindestens ein Element auf der Liste vorhanden.<br />
{</p>
<p>while(ptr_show_element)</p>
<p>{</p>
<p>ID++;</p>
<p>cout &lt;&lt; endl &lt;&lt; setw(5) &lt;&lt; left &lt;&lt; ID &lt;&lt; setw(20) &lt;&lt; ptr_show_element-&gt;Name &lt;&lt; setw(20) &lt;&lt; ptr_show_element-&gt;Vorname &lt;&lt; setw(15) &lt;&lt; ptr_show_element-&gt;Nummer &lt;&lt; endl;</p>
<p>ptr_show_element = ptr_show_element-&gt;next;</p>
<p>}<br />
}<br />
else<br />
{<br />
cout&lt;&lt;&quot;!Liste noch leer!\n&quot;;<br />
}</p>
<p>}</p>
<p>/<em>----------------------------beliebiges Datensätzes loeschen------------------------------</em>/<br />
void Telefon::loeschen_pos()<br />
{</p>
<p>char search_param[50];</p>
<p>bool resume_search = true;</p>
<p>cout &lt;&lt; endl &lt;&lt; &quot;Welcher Eintrag soll geloescht werden?&quot;;<br />
cin &gt;&gt; search_param;</p>
<p>Telefon *delete_pos ;</p>
<p>Telefon *prev_pos ;</p>
<p>prev_pos = this;</p>
<p>delete_pos = next;</p>
<p>while (delete_pos &amp;&amp; resume_search)<br />
{</p>
<p>if (strcmp(delete_pos-&gt;Name,search_param)==0 )<br />
{</p>
<p>cout &lt;&lt; delete_pos-&gt;Name &lt;&lt; &quot;\n wuerde geloescht\n&quot;;</p>
<p>prev_pos-&gt;next = delete_pos-&gt;next;</p>
<p>delete delete_pos;</p>
<p>resume_search = false;</p>
<p>}<br />
else<br />
{</p>
<p>prev_pos = delete_pos;</p>
<p>delete_pos = delete_pos-&gt;next;</p>
<p>}</p>
<p>}</p>
<p>if (delete_pos == 0x00000000)<br />
{</p>
<p>cout &lt;&lt; endl &lt;&lt; &quot;Kein Eintrag gefunden!&quot;&lt;&lt;endl;</p>
<p>}<br />
}</p>
<p>/<em>----------------------------Liste Speichern----------------------------------------------------</em>/</p>
<p>void Telefon::speichern()<br />
{<br />
Telefon *spei_element;<br />
spei_element = next;</p>
<p>ofstream datei;<br />
datei.open (&quot;Telefon.dat&quot;,ios::ate);</p>
<p>if(spei_element==0)<br />
{<br />
cout&lt;&lt;&quot;!Es sind keine Daten vorhanden!\n&quot;;<br />
}<br />
else<br />
{</p>
<p>while(spei_element)<br />
{</p>
<p>datei &lt;&lt; spei_element-&gt;Name<br />
&lt;&lt;&quot; &quot;&lt;&lt; spei_element-&gt;Vorname<br />
&lt;&lt;&quot; &quot;&lt;&lt; spei_element-&gt;Nummer<br />
&lt;&lt;endl;<br />
spei_element = spei_element-&gt;next;</p>
<p>} datei.close();<br />
cout&lt;&lt;&quot;!Daten wuerden erfolgreich gespeichert!\n&quot;;<br />
}</p>
<p>}</p>
<p>/<em>-----------------------------Liste Laden--------------------------------------------------------</em>/</p>
<p>void Telefon::laden()<br />
{<br />
int id=0;<br />
Telefon *stelle;<br />
stelle = next;<br />
ifstream datei;</p>
<p>datei.open(&quot;Telefon.dat&quot;);<br />
/* if(!datei)<br />
{<br />
cout&lt;&lt;&quot;\nEs ist ein Fehler beim oeffnen der Datei aufgetreten!&quot;&lt;&lt;endl;<br />
cout&lt;&lt;&quot;Datei nicht vorhanden&quot;&lt;&lt;endl;<br />
getch();<br />
}</p>
<p>else<br />
{*/<br />
//system(&quot;cls&quot;);</p>
<p>while(!datei.eof())//eof:für den test auf Dateiende<br />
{ datei.seekg(an_fang,ios::beg);<br />
datei&gt;&gt;id&gt;&gt;stelle-&gt;Name&gt;&gt;stelle-&gt;Vorname&gt;&gt;stelle-&gt;Nummer;<br />
stelle=stelle-&gt;next;<br />
id++;<br />
}</p>
<p>/<em>------------------------------Hauptprogramm------------------------------</em>/</p>
<p>int main(void)</p>
<p>{<br />
int eingabe;</p>
<p>ifstream d_laden;</p>
<p>Telefon handy ;</p>
<p>while (1 != 0)<br />
{<br />
cout &lt;&lt; &quot;\n.........HauptMENU.............&quot;;<br />
cout &lt;&lt;&quot;\n-------------------------------\n&quot;;<br />
cout &lt;&lt; &quot;1. Element einfuegen &quot; &lt;&lt; endl &lt;&lt; endl;<br />
cout &lt;&lt; &quot;2. Liste anzeigen &quot; &lt;&lt; endl &lt;&lt; endl;<br />
cout &lt;&lt; &quot;3. Beliebiges element loeschen &quot; &lt;&lt; endl &lt;&lt; endl;<br />
cout &lt;&lt; &quot;4. Liste Speichern &quot; &lt;&lt; endl &lt;&lt; endl;<br />
cout &lt;&lt; &quot;5. Liste laden &quot; &lt;&lt; endl &lt;&lt; endl;<br />
cout &lt;&lt; &quot;0. Ende&quot;;<br />
cout &lt;&lt;&quot;\n------------------------------- \n&quot;;<br />
cout &lt;&lt;&quot;Nummer eingeben: &quot;;<br />
cin&gt;&gt;eingabe;<br />
cout&lt;&lt; endl;<br />
switch (eingabe)</p>
<p>{</p>
<p>case (1): // Eintrag erstellen<br />
{</p>
<p>handy.einfuegen ();</p>
<p>}<br />
break;</p>
<p>case (2): // zeigt alle Elemente der Liste in Tabellenform an.<br />
{<br />
cout &lt;&lt; setw(5) &lt;&lt; left &lt;&lt; &quot;ID&quot; &lt;&lt; setw(20) &lt;&lt; &quot;Name&quot; &lt;&lt; setw(20) &lt;&lt; &quot;Vorname&quot; &lt;&lt; setw(15) &lt;&lt; &quot;Tel Nummer&quot; &lt;&lt; endl;</p>
<p>cout &lt;&lt;&quot;---------------------------------------------------------&quot;;</p>
<p>handy.anzeigen();</p>
<p>cout &lt;&lt; endl &lt;&lt; endl;</p>
<p>}<br />
break;</p>
<p>case (3): // beliebiges Element aus der liste löschen.<br />
{<br />
handy.loeschen_pos ();</p>
<p>}<br />
break;</p>
<p>case (4): // Liste Speichern<br />
{</p>
<p>handy.speichern();</p>
<p>cout&lt;&lt;endl;<br />
}<br />
break;</p>
<p>case (5): // Liste Laden<br />
{<br />
handy.laden();</p>
<p>cout&lt;&lt;endl;<br />
}<br />
break;</p>
<p>case (0): // Programm verlassen.</p>
<p>exit (1);<br />
break;</p>
<p>}<br />
}<br />
return 0;<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1317385</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1317385</guid><dc:creator><![CDATA[Fox River]]></dc:creator><pubDate>Tue, 03 Jul 2007 10:22:13 GMT</pubDate></item><item><title><![CDATA[Reply to Aufgabe in C++ on Tue, 03 Jul 2007 10:25:30 GMT]]></title><description><![CDATA[<p>Das sieht doch schon recht umfangreich aus (allerdings will sich hier niemand einen ellenlangen <em>unformatierten</em> Quelltext ansehen auf der Suche nach möglichen Fehlern und Unstimmigkeiten). Wäre es für dich zu viel verlangt, (a) die CPP-Tags korrekt anzuwenden, (b) nur den Teil zu posten, der Probleme bereitet und (c) dazuzuschreiben, woran du gescheitert bist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1317388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1317388</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 03 Jul 2007 10:25:30 GMT</pubDate></item><item><title><![CDATA[Reply to Aufgabe in C++ on Tue, 03 Jul 2007 10:44:10 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Das sieht doch schon recht umfangreich aus (allerdings will sich hier niemand einen ellenlangen <em>unformatierten</em> Quelltext ansehen auf der Suche nach möglichen Fehlern und Unstimmigkeiten). Wäre es für dich zu viel verlangt, (a) die CPP-Tags korrekt anzuwenden, (b) nur den Teil zu posten, der Probleme bereitet und (c) dazuzuschreiben, woran du gescheitert bist?</p>
</blockquote>
<p>wie sie vielleicht schon bemerkt haben, ich bin neu hier und weiss auch nicht so genau wie es läuft. Mein problem liegt genau beim laden von gespeicherte liste.Ich weiss nicht wie ich die methode laden schreiben soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1317398</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1317398</guid><dc:creator><![CDATA[Fox River]]></dc:creator><pubDate>Tue, 03 Jul 2007 10:44:10 GMT</pubDate></item><item><title><![CDATA[Reply to Aufgabe in C++ on Tue, 03 Jul 2007 10:48:42 GMT]]></title><description><![CDATA[<p>So wie das Speichern, nur umgekehrt <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>
<p>Du liest die Datei zeilenweise ein (getline()), zerlegst jede eingelesene Zeile in Name, Vorname und Nummer und hängst anschließend einen passenden Eintrag ans Ende der Liste an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1317400</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1317400</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 03 Jul 2007 10:48:42 GMT</pubDate></item><item><title><![CDATA[Reply to Aufgabe in C++ on Tue, 03 Jul 2007 10:53:26 GMT]]></title><description><![CDATA[<p>Fox River schrieb:</p>
<blockquote>
<p>wie sie vielleicht schon bemerkt haben, ich bin neu hier und weiss auch nicht so genau wie es läuft.<br />
[...]</p>
</blockquote>
<p>[OT]<br />
Wenn man Tags öffnet sollten diese normalerweise auch geschlossen werden.</p>
<p>Wenn du nicht weist was ich meine, dann klick mal beim erstellen des Beitrags auf den C/C++ Button schreib irgendeinen Code und Klick dann nochmal drauf.<br />
Oder schreib erst den Code, markiere ihn und klick dann auf den Button.<br />
[/OT]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1317406</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1317406</guid><dc:creator><![CDATA[Beliah]]></dc:creator><pubDate>Tue, 03 Jul 2007 10:53:26 GMT</pubDate></item><item><title><![CDATA[Reply to Aufgabe in C++ on Tue, 03 Jul 2007 11:11:42 GMT]]></title><description><![CDATA[<p>[quote=&quot;Beliah&quot;]</p>
<p>Fox River schrieb:</p>
<blockquote>
<p>wie sie vielleicht schon bemerkt haben, ich bin neu hier und weiss auch nicht so genau wie es läuft.<br />
[...]</p>
</blockquote>
<p>[OT]<br />
Wenn man Tags öffnet sollten diese normalerweise auch geschlossen werden.</p>
<p>Wenn du nicht weist was ich meine, dann klick mal beim erstellen des Beitrags auf den C/C++ Button schreib irgendeinen Code und Klick dann nochmal drauf.<br />
Oder schreib erst den Code, markiere ihn und klick dann auf den Button.<br />
[/OT]<br />
Jetz hab ich das richtig gemacht danke.ich hoffe ihr könnt jetz gut lesen und mir helefen die methode Laden zu implementieren.</p>
<pre><code class="language-cpp">#include &lt;stdio.h&gt;
 #include &lt;iostream&gt;
 #include &lt;conio.h&gt;
 #include &lt;iomanip&gt;
 #include &lt;string&gt;
 #include &lt;fstream&gt;

 using namespace std;

 class Telefon
{
 private:
	char Name[40];	
	char Vorname[40];	
	char  Nummer[40];

	Telefon* next;    // Zeiger auf Datenobjekt des Typ Telefon.
	Telefon* anfang;

 public:
	int einfuegen();
	void anzeigen();
	void loeschen_pos();
	void speichern();
	void laden();

	Telefon(void)     // Konstruktor
	{
		next=0;      // Next = 0 , sind wird am Anfang der Liste
		anfang= 0;
	}
 };

streampos an_fang;

 //*--------------------------Datensätze einfuegen------------------------*/

 int Telefon::einfuegen()
 {

	Telefon *neueintrag = new Telefon;

	int wahl;

	if(next!=0) //Jetzt muss überprüft werden, ob überhaupt ein Element in der Liste vorhanden ist:
	{   
		       //Es befindet sich bereits mindestens ein Element in der Liste.

		system(&quot;cls&quot;); // damit, wird aussehen als ob ein neues Fenster geöffnet wurde

		cout&lt;&lt;&quot;\nWo soll den neuen  Eintrag eingefuegt werden? Ihr Wahl bitte: \n\n&quot;;
		cout&lt;&lt;&quot;.......UnterMENU.....\n&quot;;
		cout&lt;&lt;&quot;---------------------\n&quot;;
		cout&lt;&lt;&quot;\n1..Am Anfang\n&quot;;
		cout&lt;&lt;&quot;\n2..Am andere Stelle\n&quot;;
		cout&lt;&lt;&quot;\n3..Am Ende\n&quot;;
		cout&lt;&lt;&quot;\n4..Back to HauptMenu\n&quot;;
		cout&lt;&lt;&quot;---------------------\n&quot;;
		cout&lt;&lt;&quot;Ihr Wahl...:&quot;;
		cin&gt;&gt;wahl;

		//wahl = getch();  //wahl=wahl-48;
	}

	else // Falls noch kein Element in der Liste vorhanden ist, werden die Daten einfach eingehängt.
	{
		wahl=1;
	}

	switch(wahl)
	{

	case 1:
		{
			neueintrag-&gt;next = next;	//next des neuen elements zeigt auf das nächste Element
			next =neueintrag;			//next des neuen elements bekommt die andresse des neuen elements zugewiesen

			cout&lt;&lt;&quot;\n\nName:\t\t&quot;;	 cin&gt;&gt;neueintrag-&gt;Name;
			cout&lt;&lt;&quot;\nVorname:\t&quot;;	 cin&gt;&gt;neueintrag-&gt;Vorname;
			cout&lt;&lt;&quot;\nNummer:\t\t&quot;;	 cin&gt;&gt;neueintrag-&gt;Nummer;

			break;
		}

	case 2:  // Das Element muss irgendwo in der Mitte eingefügt werden.

		{
			string suchstring;	
			Telefon *stelle;

			cout&lt;&lt;&quot;\nHinter welchem Name wollen sie einfügen ?\t&quot;; 
			cin&gt;&gt;suchstring;

			stelle = next;	//neueintrag für die suche an das erste element setzten

			while(stelle)
			{
				if(stelle-&gt;Name == suchstring)
				{
					neueintrag-&gt;next = stelle-&gt;next;
					stelle-&gt;next = neueintrag;

					cout&lt;&lt;&quot;\n\nName:\t\t&quot;;  cin&gt;&gt;neueintrag-&gt;Name;
					cout&lt;&lt;&quot;\nVorname:\t&quot;; cin&gt;&gt;neueintrag-&gt;Vorname;
					cout&lt;&lt;&quot;\nNummer:\t\t&quot;;  cin&gt;&gt;neueintrag-&gt;Nummer;
					return 0;
				}				
				else
				{ 
					stelle = stelle-&gt;next; 
				}
			}

			cout&lt;&lt;&quot;\n\nEintrag nicht gefunden! Weiter mit beliebiger Taste...&quot;; 
			getch();
			return 0;
		}

	case 3:	    //am ende einfügen
		{
			Telefon *stelle;
			stelle = next;
			while(true)
			{
				if(stelle-&gt;next == 0) // Mit Next auf NULL sind wir am Ende der Liste
				{
					stelle-&gt;next = neueintrag;
					neueintrag-&gt;next = 0;

					cout&lt;&lt;&quot;\n\nName:\t\t&quot;;  cin&gt;&gt;neueintrag-&gt;Name;
					cout&lt;&lt;&quot;\nVorname:\t&quot;; cin&gt;&gt;neueintrag-&gt;Vorname;
					cout&lt;&lt;&quot;\nNummer:\t\t&quot;;  cin&gt;&gt;neueintrag-&gt;Nummer;

					return 0;
				}
				stelle = stelle-&gt;next;
			}
			break;
		}

	case 4:
		{
			return 0;
		}

	default:
		{
			cout&lt;&lt;endl&lt;&lt;&quot;Option nicht vorhanden!!  Weiter mit beliebiger taste...&quot;; 
			getch();
		}
	}//ende switch

    return 0;
} // ende einfuegen()

/*-----------------------anzeige der vorhandenen Datensätze------------------------*/
 void Telefon::anzeigen()
{

	int ID=0;

      Telefon*ptr_show_element;

	  ptr_show_element = next;

	  if(ptr_show_element!=0) // Mindestens ein Element auf der Liste vorhanden.
	  {

          while(ptr_show_element)

		  {

              ID++;

	         cout &lt;&lt; endl &lt;&lt; setw(5) &lt;&lt; left &lt;&lt; ID &lt;&lt; setw(20) &lt;&lt;  ptr_show_element-&gt;Name &lt;&lt; setw(20) &lt;&lt; ptr_show_element-&gt;Vorname &lt;&lt; setw(15) &lt;&lt; ptr_show_element-&gt;Nummer &lt;&lt; endl;

	         ptr_show_element = ptr_show_element-&gt;next;

		  }
	  }
	  else
	  {
		  cout&lt;&lt;&quot;!Liste noch leer!\n&quot;;
	  }

 }

/*----------------------------beliebiges Datensätzes loeschen------------------------------*/
 void Telefon::loeschen_pos()
{

     char search_param[50];

	 bool resume_search = true;

	 cout &lt;&lt; endl &lt;&lt; &quot;Welcher Eintrag soll geloescht werden?&quot;;
	 cin &gt;&gt; search_param;

	 Telefon *delete_pos ;

	 Telefon *prev_pos ;

	 prev_pos = this;

	 delete_pos = next;

   while (delete_pos &amp;&amp; resume_search)
	{

   if (strcmp(delete_pos-&gt;Name,search_param)==0 )
		{

      cout &lt;&lt; delete_pos-&gt;Name &lt;&lt; &quot;\n wuerde geloescht\n&quot;;

	  prev_pos-&gt;next = delete_pos-&gt;next;

	  delete delete_pos;

	  resume_search = false;

		}
	  else
		{

	  prev_pos = delete_pos;

	  delete_pos = delete_pos-&gt;next;

		}

	}

   if (delete_pos == 0x00000000) 
   {

      cout &lt;&lt; endl &lt;&lt; &quot;Kein Eintrag gefunden!&quot;&lt;&lt;endl;

	}
}

/*----------------------------Liste Speichern----------------------------------------------------*/

 void Telefon::speichern()
 { 
	 Telefon *spei_element;
	 spei_element = next;

	 ofstream datei;
	 datei.open (&quot;Telefon.dat&quot;,ios::ate);

	 if(spei_element==0)
	 {
		 cout&lt;&lt;&quot;!Es sind keine Daten vorhanden!\n&quot;;
	 }
	 else
	 {

     while(spei_element)
	 {

	 datei &lt;&lt; spei_element-&gt;Name
		   &lt;&lt;&quot; &quot;&lt;&lt; spei_element-&gt;Vorname
		   &lt;&lt;&quot; &quot;&lt;&lt; spei_element-&gt;Nummer
		   &lt;&lt;endl;
     spei_element = spei_element-&gt;next;

	 }	 datei.close();
	 cout&lt;&lt;&quot;!Daten wuerden erfolgreich gespeichert!\n&quot;;
	 }

 }

/*-----------------------------Liste Laden--------------------------------------------------------*/

 void Telefon::laden()
 { 
	 int id=0;
	 Telefon *stelle;
	 stelle = next;
	 ifstream datei;

     datei.open(&quot;Telefon.dat&quot;);
	/* if(!datei)
	{
		cout&lt;&lt;&quot;\nEs ist ein Fehler beim oeffnen der Datei aufgetreten!&quot;&lt;&lt;endl;
		cout&lt;&lt;&quot;Datei nicht vorhanden&quot;&lt;&lt;endl;
		getch();
	}

	else
	{*/
		//system(&quot;cls&quot;);

		while(!datei.eof())//eof:für den test auf Dateiende 
		{ datei.seekg(an_fang,ios::beg);
		datei&gt;&gt;id&gt;&gt;stelle-&gt;Name&gt;&gt;stelle-&gt;Vorname&gt;&gt;stelle-&gt;Nummer;
		stelle=stelle-&gt;next;
		id++;	
		}

/*------------------------------Hauptprogramm------------------------------*/

int main(void)

{     
	  int eingabe;

	  ifstream d_laden;

      Telefon handy ;

	  while (1 != 0)
  {
      cout &lt;&lt; &quot;\n.........HauptMENU.............&quot;;
      cout &lt;&lt;&quot;\n-------------------------------\n&quot;;	
	  cout &lt;&lt; &quot;1. Element einfuegen &quot; &lt;&lt; endl &lt;&lt; endl;
	  cout &lt;&lt; &quot;2. Liste anzeigen &quot; &lt;&lt; endl &lt;&lt; endl;
	  cout &lt;&lt; &quot;3. Beliebiges element loeschen &quot; &lt;&lt; endl &lt;&lt; endl;
	  cout &lt;&lt; &quot;4. Liste Speichern &quot; &lt;&lt; endl &lt;&lt; endl;	
	  cout &lt;&lt; &quot;5. Liste laden &quot; &lt;&lt; endl &lt;&lt; endl;	
	  cout &lt;&lt; &quot;0. Ende&quot;; 
	  cout &lt;&lt;&quot;\n------------------------------- \n&quot;;
	  cout &lt;&lt;&quot;Nummer eingeben: &quot;;
      cin&gt;&gt;eingabe;
	  cout&lt;&lt; endl;
	  switch (eingabe)

		{

	  case (1):				// Eintrag erstellen 
		{

	   handy.einfuegen ();

		}
	   break;

	  case (2):    // 	zeigt alle Elemente der Liste in Tabellenform an.		
		  {
	   cout &lt;&lt; setw(5) &lt;&lt; left &lt;&lt; &quot;ID&quot; &lt;&lt; setw(20) &lt;&lt;  &quot;Name&quot; &lt;&lt; setw(20) &lt;&lt; &quot;Vorname&quot; &lt;&lt; setw(15) &lt;&lt; &quot;Tel Nummer&quot; &lt;&lt; endl;

	   cout &lt;&lt;&quot;---------------------------------------------------------&quot;;

	   handy.anzeigen();

	   cout &lt;&lt; endl &lt;&lt; endl;

		  }
	   break;

	  case (3):	     // beliebiges Element aus der liste löschen.			
				{
	             handy.loeschen_pos ();

				}
	   break;

	  case (4):    // Liste Speichern
	   {

		   handy.speichern();

           cout&lt;&lt;endl;
	   }
		break;

	  case (5):   // Liste Laden
		  {
			  handy.laden();

			  cout&lt;&lt;endl;
		  }
		  break;

	  case (0):	 // Programm verlassen.			

	   exit (1);
       break;

		}
	}
return 0;	
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1317421</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1317421</guid><dc:creator><![CDATA[Fox River]]></dc:creator><pubDate>Tue, 03 Jul 2007 11:11:42 GMT</pubDate></item><item><title><![CDATA[Reply to Aufgabe in C++ on Tue, 03 Jul 2007 11:22:55 GMT]]></title><description><![CDATA[<p>Ich kann dir eine Prinziplösung anbieten, den Rest darfst du gerne selber erledigen:</p>
<pre><code class="language-cpp">string zeile;
ifstream datei(&quot;...&quot;);
while(getline(datei,zeile))
{
  /* zerlege die Zeile in ihre Bestandteile (da kannst du die Leerzeichen als
     Trennung verwenden)
  */

  /* Hänge Datensatz am Ende der Liste an (im Prinzip der 'case 3:' Fall von
     einfügen(), aber ich würde mir die Position des letzten Elements merken,
     anstatt es für jeden Schleifendurchlauf neu zu suchen)
  */
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1317431</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1317431</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 03 Jul 2007 11:22:55 GMT</pubDate></item><item><title><![CDATA[Reply to Aufgabe in C++ on Tue, 03 Jul 2007 15:10:22 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Ich kann dir eine Prinziplösung anbieten, den Rest darfst du gerne selber erledigen:</p>
<pre><code class="language-cpp">string zeile;
ifstream datei(&quot;...&quot;);
while(getline(datei,zeile))
{
  /* zerlege die Zeile in ihre Bestandteile (da kannst du die Leerzeichen als
     Trennung verwenden)
  */

  /* Hänge Datensatz am Ende der Liste an (im Prinzip der 'case 3:' Fall von
     einfügen(), aber ich würde mir die Position des letzten Elements merken,
     anstatt es für jeden Schleifendurchlauf neu zu suchen)
  */
}
</code></pre>
</blockquote>
<p>ich hab grad versuch aber ich komme nicht durch. Ich würde mich freuen wenn jemanden für mich dies Programm abschnitte schreiben würde.Das ganz programm läut schon fehlerfrei und es fällt mir einfach diese &quot;Lade Methode&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1317582</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1317582</guid><dc:creator><![CDATA[Fox River]]></dc:creator><pubDate>Tue, 03 Jul 2007 15:10:22 GMT</pubDate></item><item><title><![CDATA[Reply to Aufgabe in C++ on Tue, 03 Jul 2007 21:14:50 GMT]]></title><description><![CDATA[<p>Fox River schrieb:</p>
<blockquote>
<p>Erstellen Sie dazu eine Klasse Telefon mit den String-Datenelementen Vorname, Name und<br />
Nummer.<br />
Die Elemente sollen dynamisch zur Laufzeit mit Hilfe des new-Operators erzeugt werden.<br />
Die Klasse soll die folgenden Methoden besitzen:<br />
Einfuegen ...</p>
</blockquote>
<p>Welche Klasse?</p>
<p>Aus Deinem Code sehe ich, dass das Telefon identisch mit der Liste ist. gleichzeitig soll das Telefon aber auch Vorname, Name und Nummer enthalten.<br />
Das gibt wenig Sinn.</p>
<p>Wenn Dein geposteter Code in etwa der korrekten Lösung entspricht, so würde ich erwarten, dass es eine Klasse Telefon gibt, die Objekte der Klasse Eintrag enthält. Und eine Klasse Eintrag, die wiederum die Attribute Name, Vorname und Nummer enthält.</p>
<p>Fox River schrieb:</p>
<blockquote>
<pre><code class="language-cpp">#include &lt;stdio.h&gt;
 #include &lt;iostream&gt;
 #include &lt;conio.h&gt;
 #include &lt;iomanip&gt;
 #include &lt;string&gt;
 #include &lt;fstream&gt;

 using namespace std;

 class Telefon
{
 private:
	char Name[40];	
	char Vorname[40];	
	char  Nummer[40];
</code></pre>
</blockquote>
<p>Als Attribute solltest Du auf jeden Fall std::string statt char[] benutzen. Es soll doch ein C++-Programm werden - oder?</p>
<p>Fox River schrieb:</p>
<blockquote>
<p>Das ganz programm läut schon fehlerfrei und es fällt mir einfach diese &quot;Lade Methode&quot;</p>
</blockquote>
<p>Angenommen. Du hast einen Eintrag mit den drei Strings</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;iosream&gt;

class Eintrag
{
public:
    friend std::istream&amp; operator&gt;&gt;( std::istream&amp; in, Eintrag&amp; telefon );
    friend std::ostream&amp; operator&lt;&lt;( std::ostream&amp; out, const Eintrag&amp; telefon );

private:
    // --   Members
    std::string Name;
    std::string Vorname;
    std::string Nummer;
};
</code></pre>
<p>Dann implementierst Du die dazu gehörigen Stream-Operatoren</p>
<pre><code class="language-cpp">std::istream&amp; operator&gt;&gt;( std::istream&amp; in, Eintrag&amp; e)
{
    // Format: &quot;Name Vorname Nummer&quot;
    // z.B. &quot;Starkmann Rudi 0891234567&quot;
    return in &gt;&gt; e.Name &gt;&gt; e.Vorname &gt;&gt; e.Nummer;
}

std::ostream&amp; operator&lt;&lt;( std::ostream&amp; out, const Eintrag&amp; e)
{
    return out &lt;&lt; e.Name &lt;&lt; &quot; &quot; &lt;&lt; e.Vorname &lt;&lt; &quot; &quot; &lt;&lt; e.Nummer;
}
</code></pre>
<p>so und jetzt noch die Methode Laden im Telefon</p>
<pre><code class="language-cpp">void Telefon::laden()
{
    ifstream datei(&quot;Telefon.dat&quot;);
    for( Eintrag e; datei &gt;&gt; e; )
    {
        // Eintrag 'e' an das Ende anhängen
        //   .. das überlasse ich Dir
    }
}
</code></pre>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1317779</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1317779</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Tue, 03 Jul 2007 21:14:50 GMT</pubDate></item><item><title><![CDATA[Reply to Aufgabe in C++ on Tue, 03 Jul 2007 21:38:40 GMT]]></title><description><![CDATA[<p>Hallo Wener und vielen dank für deine Hilfe.<br />
ich bin eigentlich nur ein anfänger mit C++ und die programierung im allgemein.mein bisherige ergebnis kommt von mehrere Hilfe und das ganze läuft ohne problem und nur fällt mir die Methode laden, um die Aufgabe abzugeben. Ich möchte nicht das ganz nochmal machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1317791</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1317791</guid><dc:creator><![CDATA[Fox River]]></dc:creator><pubDate>Tue, 03 Jul 2007 21:38:40 GMT</pubDate></item><item><title><![CDATA[Reply to Aufgabe in C++ on Tue, 03 Jul 2007 21:48:56 GMT]]></title><description><![CDATA[<p>Fox River schrieb:</p>
<blockquote>
<p>Hallo Wener und vielen dank für deine Hilfe.<br />
ich bin eigentlich nur ein anfänger mit C++ und die programierung im allgemein.mein bisherige ergebnis kommt von mehrere Hilfe und das ganze läuft ohne problem und nur fällt mir die Methode laden, um die Aufgabe abzugeben. Ich möchte nicht das ganz nochmal machen.</p>
</blockquote>
<p>Na ja - dann nenne Eintrag in meinem Code eben Telefon. Das sollte genauso funktionieren. Die Methoden die Telefon schon hat bleiben erhalten und die Stream-operatoren kommen noch dazu.</p>
<p>gruß<br />
Werner<br />
PS.: <em>fehlt</em> nicht <em>fällt</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1317794</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1317794</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Tue, 03 Jul 2007 21:48:56 GMT</pubDate></item></channel></rss>