<?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[Probleme bei einer Reihe von Aufgaben]]></title><description><![CDATA[<p>Habe folgende Aufgabe:</p>
<p>1. Eine Struktur entwerfen die Vorname, Nachname und die Telefonnummer<br />
enthält.Das Telefonbuch soll max 100 Einträge haben und in einen Feld<br />
gespeichert werden, das global definiert werden soll.<br />
2. Eine Funktion &quot;Initialisierung()&quot;, die bei jedem Eintrag dem Namen einen leeren<br />
String zuweist.<br />
3. Das Programm soll die Eingabe, Anzeige und das Löschen von Einträgen<br />
ermöglichen. Diese Aktionen sollen in Funktionen gefasst werden. Bei der<br />
Anzeige soll überprüft werden, ob der Eintrag existiert. Bei der Löschfunktion<br />
reicht es den Namen zu löschen.<br />
4. Eine Funktion &quot;Nummereingabe(),schreiben, welche den Benutzer nach einer<br />
Eintragnummer fragt. Als Rückgabewert sollte die Funktion die Eintragnummer<br />
oder -1 zurückgeben, wenn die Eingabe außerhalb des Bereiches lag. Außerdem<br />
soll vor jedem Zugriff geprüft werden, ob der Wert innerhalb der Feldgrenzen<br />
liegt.<br />
5. Zum Schluß eine main()-Funktion bei der am Anfang die Initialisierung<br />
durchgeführt werden soll. Am liebsten wäre mir da eine switch-case-Konstruktion.</p>
<pre><code class="language-cpp">/* ######################################################
Einsendeaufgabe 4.1 aufgabe4_1.cpp
######################################################*/

#include&lt;iostream.h&gt;
#include&lt;string.h&gt;
//Globale Vereinbarung der Struktur
struct person{
        char vorname[80];
        char nachname[80];
        int telefonnummer;
        };

// Funktion Initialisierung
person initiakisiere(char vorname[80], char nachname[80], int telefonnummer){
        person telefonbuch[100];
        for (int i=0; i&lt;100 ; i++){
        telefonbuch[i+1].vorname[i+1]=vorname[80];
        telefonbuch[i+1].nachname[i+1]=nachname[80];
        telefonbuch[i+1].telefonnummer=telefonnummer;
        return (telefonbuch[i+1]);}
         }
// Funktion Eingabe von Daten
void eingabe (){
        person telefonbuch[100];
        int flag=1;
        for (int i=0; i&lt;100 &amp;&amp; flag==1; i++){
        cout &lt;&lt;&quot;Zum Beenden der Eingabe von Eintraegen die 0 eingeben, um weitere Eintraege einzugeben eine Zahl groesser als 0 eingeben: &quot;;
        int k=1;
        cin&gt;&gt;k;
        if (k==0) flag=0;
        else {
                cout &lt;&lt;i+1&lt;&lt;&quot;. Vornamen eingeben: &quot;;
                cin &gt;&gt; telefonbuch[i].vorname;
                cout &lt;&lt;i+1&lt;&lt;&quot;. Nachnamen eingeben: &quot;;
                cin &gt;&gt; telefonbuch[i].nachname;
                cout &lt;&lt;i+1&lt;&lt;&quot;. Telefonnummer eingeben: &quot;;
                cin &gt;&gt; telefonbuch[i].telefonnummer;
              }
        }
}

// Funktion Anzeige von Daten
void anzeige (){
        person telefonbuch[100];
        int k=1;
        do{
                cout &lt;&lt; &quot;Falls die Anzeige beendet werden soll die 0 eingeben, um fortzufahen eine Zahl groesser 0 eingeben: &quot;;
                cin &gt;&gt; k;
                }while (k==0);
                        cout &lt;&lt; &quot;Bitte den Namen eingeben nach der Angezeigt werden soll: &quot;;
                        char eingabe[80];
                        cin.getline(eingabe,80);
                        for (int i=0; i&lt;100; i++){
                                char ausgabe[80];
                                while (i&lt;100){
                                        strcpy (telefonbuch[i].nachname, ausgabe);
                                        if ( !strcmp(ausgabe, eingabe)) cout &lt;&lt; telefonbuch[i].vorname &lt;&lt; telefonbuch[i].nachname &lt;&lt; telefonbuch[i].telefonnummer;
                                        }
                                        if ( strcmp(ausgabe, eingabe)) cout &lt;&lt; &quot;Der gesuchte Eintrag ist nicht vorhanden.&quot;;
                                        }
}

// Funktion Löschen von Daten
void loeschen (){
        person telefonbuch[100];
        int k=1;
        do{
                cout &lt;&lt; &quot;Falls das Loeschen von Eintraegen beendet werden soll die 0 eingeben, um fortzufahen eine Zahl groesser 0 eingeben: &quot;;
                cin &gt;&gt; k;
                }while (k==0);
                        cout &lt;&lt; &quot;Bitte den Namen eingeben der geloescht werden soll: &quot;;
                        char eingabe[80];
                        cin.getline(eingabe,80);
                        for (int i=0; i&lt;100; i++){
                                char ausgabe[80];
                                while (i&lt;100){
                                        strcpy (telefonbuch[i].nachname, ausgabe);
                                        if ( !strcmp(ausgabe, eingabe)) telefonbuch[i].nachname;
                                        }
                                        if ( strcmp(ausgabe, eingabe)) cout &lt;&lt; &quot;Der loeschende Eintrag ist nicht vorhanden.&quot;;
                                        }
}

// Funktion zum erfragen der Eintragnummer
int nummerneingabe(int x){
        person telefonbuch[100];
        cout &lt;&lt; &quot;Bitte Eintragnummer eingeben: &quot;;
        int i=0;
        int eintrag;
        cin &gt;&gt;i;
        if (i&gt;100) eintrag=-1;
        else {
                cout &lt;&lt; telefonbuch[i].vorname;
                cout &lt;&lt; telefonbuch[i].nachname;
                cout &lt;&lt; telefonbuch[i].telefonnummer;
                i=eintrag;
                cout &lt;&lt;&quot;Die Eintragsnummer war: &quot;&lt;&lt;eintrag&lt;&lt;endl;
              }
        return eintrag;
}
// Main Funktion

void main(){
     initiakisiere;
     char auswahl;
     cout &lt;&lt;&quot;Sie haben folgende Auswahlmoeglichkeiten:&quot;&lt;&lt;endl;
     cout &lt;&lt;&quot;a Eingabe von Eintraegen&quot;&lt;&lt;endl;
     cout &lt;&lt;&quot;b Anzeigen von Eintraegen&quot;&lt;&lt;endl;
     cout &lt;&lt;&quot;c Loeschen von Eintraegen&quot;&lt;&lt;endl;
     cout &lt;&lt;&quot;d Eintragsnummerneingabe&quot;&lt;&lt;endl;
     cout &lt;&lt;&quot;Treffen sie bitte ihre Auswahl:&quot;&lt;&lt;endl;
     cin  &gt;&gt; auswahl;
     switch(auswahl){
        case 'a':
                cout &lt;&lt;&quot;Sie haben Eingabe von Daten ausgewaehlt.&quot;&lt;&lt;endl;
                eingabe();
                break;
        case 'b':
                cout &lt;&lt;&quot;Sie haben Anzeigen von Eintraegen ausgewaehlt.&quot;&lt;&lt;endl;
                anzeige();
                break;
        case 'c':
                cout &lt;&lt;&quot;Sie haben das Loeschen von Eintraegen ausgewaehlt.&quot;&lt;&lt;endl;
                loeschen();
                break;
        case 'd':
                cout &lt;&lt;&quot;Sie haben das Anzeigen von Eintragsnummern ausgewählt.&quot;&lt;&lt;endl;
                nummerneingabe;

                break;
        default:
                cout &lt;&lt;&quot;Diese Auswahlmoeglichkeit gibt es nicht, das Programm wird beendet&quot;&lt;&lt;endl;
                }
char p[50];
cin.getline(p,50);
cin.getline(p,50);
}
</code></pre>
<p>Das habe ich bisher. Irgendwie habe ich eine denkblockarde!</p>
<p>1. Ich bekomme einen erneuten Aufruf der Main Funktion hin.<br />
2. Bei der Anzeige bekomme ich eine Endlosschleife die nur 0 ausgibt.<br />
3. Beim Löschen weiss ich nicht nicht was mit -1 bewirkt werden soll und da ich die Main Funktion nicht wieder aufgerufen bekomme weis ich nicht ob das so Funktioniert.</p>
<p>Über Hilfe würde ich mich riesig freuen.</p>
<p>Danke</p>
<p>//Edit: Codetags / Titel</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/155479/probleme-bei-einer-reihe-von-aufgaben</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 12:04:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/155479.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 06 Aug 2006 16:45:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Probleme bei einer Reihe von Aufgaben on Sun, 06 Aug 2006 21:44:09 GMT]]></title><description><![CDATA[<p>Habe folgende Aufgabe:</p>
<p>1. Eine Struktur entwerfen die Vorname, Nachname und die Telefonnummer<br />
enthält.Das Telefonbuch soll max 100 Einträge haben und in einen Feld<br />
gespeichert werden, das global definiert werden soll.<br />
2. Eine Funktion &quot;Initialisierung()&quot;, die bei jedem Eintrag dem Namen einen leeren<br />
String zuweist.<br />
3. Das Programm soll die Eingabe, Anzeige und das Löschen von Einträgen<br />
ermöglichen. Diese Aktionen sollen in Funktionen gefasst werden. Bei der<br />
Anzeige soll überprüft werden, ob der Eintrag existiert. Bei der Löschfunktion<br />
reicht es den Namen zu löschen.<br />
4. Eine Funktion &quot;Nummereingabe(),schreiben, welche den Benutzer nach einer<br />
Eintragnummer fragt. Als Rückgabewert sollte die Funktion die Eintragnummer<br />
oder -1 zurückgeben, wenn die Eingabe außerhalb des Bereiches lag. Außerdem<br />
soll vor jedem Zugriff geprüft werden, ob der Wert innerhalb der Feldgrenzen<br />
liegt.<br />
5. Zum Schluß eine main()-Funktion bei der am Anfang die Initialisierung<br />
durchgeführt werden soll. Am liebsten wäre mir da eine switch-case-Konstruktion.</p>
<pre><code class="language-cpp">/* ######################################################
Einsendeaufgabe 4.1 aufgabe4_1.cpp
######################################################*/

#include&lt;iostream.h&gt;
#include&lt;string.h&gt;
//Globale Vereinbarung der Struktur
struct person{
        char vorname[80];
        char nachname[80];
        int telefonnummer;
        };

// Funktion Initialisierung
person initiakisiere(char vorname[80], char nachname[80], int telefonnummer){
        person telefonbuch[100];
        for (int i=0; i&lt;100 ; i++){
        telefonbuch[i+1].vorname[i+1]=vorname[80];
        telefonbuch[i+1].nachname[i+1]=nachname[80];
        telefonbuch[i+1].telefonnummer=telefonnummer;
        return (telefonbuch[i+1]);}
         }
// Funktion Eingabe von Daten
void eingabe (){
        person telefonbuch[100];
        int flag=1;
        for (int i=0; i&lt;100 &amp;&amp; flag==1; i++){
        cout &lt;&lt;&quot;Zum Beenden der Eingabe von Eintraegen die 0 eingeben, um weitere Eintraege einzugeben eine Zahl groesser als 0 eingeben: &quot;;
        int k=1;
        cin&gt;&gt;k;
        if (k==0) flag=0;
        else {
                cout &lt;&lt;i+1&lt;&lt;&quot;. Vornamen eingeben: &quot;;
                cin &gt;&gt; telefonbuch[i].vorname;
                cout &lt;&lt;i+1&lt;&lt;&quot;. Nachnamen eingeben: &quot;;
                cin &gt;&gt; telefonbuch[i].nachname;
                cout &lt;&lt;i+1&lt;&lt;&quot;. Telefonnummer eingeben: &quot;;
                cin &gt;&gt; telefonbuch[i].telefonnummer;
              }
        }
}

// Funktion Anzeige von Daten
void anzeige (){
        person telefonbuch[100];
        int k=1;
        do{
                cout &lt;&lt; &quot;Falls die Anzeige beendet werden soll die 0 eingeben, um fortzufahen eine Zahl groesser 0 eingeben: &quot;;
                cin &gt;&gt; k;
                }while (k==0);
                        cout &lt;&lt; &quot;Bitte den Namen eingeben nach der Angezeigt werden soll: &quot;;
                        char eingabe[80];
                        cin.getline(eingabe,80);
                        for (int i=0; i&lt;100; i++){
                                char ausgabe[80];
                                while (i&lt;100){
                                        strcpy (telefonbuch[i].nachname, ausgabe);
                                        if ( !strcmp(ausgabe, eingabe)) cout &lt;&lt; telefonbuch[i].vorname &lt;&lt; telefonbuch[i].nachname &lt;&lt; telefonbuch[i].telefonnummer;
                                        }
                                        if ( strcmp(ausgabe, eingabe)) cout &lt;&lt; &quot;Der gesuchte Eintrag ist nicht vorhanden.&quot;;
                                        }
}

// Funktion Löschen von Daten
void loeschen (){
        person telefonbuch[100];
        int k=1;
        do{
                cout &lt;&lt; &quot;Falls das Loeschen von Eintraegen beendet werden soll die 0 eingeben, um fortzufahen eine Zahl groesser 0 eingeben: &quot;;
                cin &gt;&gt; k;
                }while (k==0);
                        cout &lt;&lt; &quot;Bitte den Namen eingeben der geloescht werden soll: &quot;;
                        char eingabe[80];
                        cin.getline(eingabe,80);
                        for (int i=0; i&lt;100; i++){
                                char ausgabe[80];
                                while (i&lt;100){
                                        strcpy (telefonbuch[i].nachname, ausgabe);
                                        if ( !strcmp(ausgabe, eingabe)) telefonbuch[i].nachname;
                                        }
                                        if ( strcmp(ausgabe, eingabe)) cout &lt;&lt; &quot;Der loeschende Eintrag ist nicht vorhanden.&quot;;
                                        }
}

// Funktion zum erfragen der Eintragnummer
int nummerneingabe(int x){
        person telefonbuch[100];
        cout &lt;&lt; &quot;Bitte Eintragnummer eingeben: &quot;;
        int i=0;
        int eintrag;
        cin &gt;&gt;i;
        if (i&gt;100) eintrag=-1;
        else {
                cout &lt;&lt; telefonbuch[i].vorname;
                cout &lt;&lt; telefonbuch[i].nachname;
                cout &lt;&lt; telefonbuch[i].telefonnummer;
                i=eintrag;
                cout &lt;&lt;&quot;Die Eintragsnummer war: &quot;&lt;&lt;eintrag&lt;&lt;endl;
              }
        return eintrag;
}
// Main Funktion

void main(){
     initiakisiere;
     char auswahl;
     cout &lt;&lt;&quot;Sie haben folgende Auswahlmoeglichkeiten:&quot;&lt;&lt;endl;
     cout &lt;&lt;&quot;a Eingabe von Eintraegen&quot;&lt;&lt;endl;
     cout &lt;&lt;&quot;b Anzeigen von Eintraegen&quot;&lt;&lt;endl;
     cout &lt;&lt;&quot;c Loeschen von Eintraegen&quot;&lt;&lt;endl;
     cout &lt;&lt;&quot;d Eintragsnummerneingabe&quot;&lt;&lt;endl;
     cout &lt;&lt;&quot;Treffen sie bitte ihre Auswahl:&quot;&lt;&lt;endl;
     cin  &gt;&gt; auswahl;
     switch(auswahl){
        case 'a':
                cout &lt;&lt;&quot;Sie haben Eingabe von Daten ausgewaehlt.&quot;&lt;&lt;endl;
                eingabe();
                break;
        case 'b':
                cout &lt;&lt;&quot;Sie haben Anzeigen von Eintraegen ausgewaehlt.&quot;&lt;&lt;endl;
                anzeige();
                break;
        case 'c':
                cout &lt;&lt;&quot;Sie haben das Loeschen von Eintraegen ausgewaehlt.&quot;&lt;&lt;endl;
                loeschen();
                break;
        case 'd':
                cout &lt;&lt;&quot;Sie haben das Anzeigen von Eintragsnummern ausgewählt.&quot;&lt;&lt;endl;
                nummerneingabe;

                break;
        default:
                cout &lt;&lt;&quot;Diese Auswahlmoeglichkeit gibt es nicht, das Programm wird beendet&quot;&lt;&lt;endl;
                }
char p[50];
cin.getline(p,50);
cin.getline(p,50);
}
</code></pre>
<p>Das habe ich bisher. Irgendwie habe ich eine denkblockarde!</p>
<p>1. Ich bekomme einen erneuten Aufruf der Main Funktion hin.<br />
2. Bei der Anzeige bekomme ich eine Endlosschleife die nur 0 ausgibt.<br />
3. Beim Löschen weiss ich nicht nicht was mit -1 bewirkt werden soll und da ich die Main Funktion nicht wieder aufgerufen bekomme weis ich nicht ob das so Funktioniert.</p>
<p>Über Hilfe würde ich mich riesig freuen.</p>
<p>Danke</p>
<p>//Edit: Codetags / Titel</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1111704</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1111704</guid><dc:creator><![CDATA[elric78]]></dc:creator><pubDate>Sun, 06 Aug 2006 21:44:09 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme bei einer Reihe von Aufgaben on Sun, 06 Aug 2006 16:50:12 GMT]]></title><description><![CDATA[<p>Hm, wo soll man anfangen... Vllt erstmal ein paar generelle Hinweise:</p>
<p>1. void main() gibt es nicht, es heisst int main()<br />
2. iostream.h gibt es nicht, sie heisst iostream<br />
3. string.h gibt es nicht, sie heisst string (oder cstring, falls Du die &quot;alte&quot; string.h aus C meinst)<br />
4. Benutze bitte Codetags [ cpp][ /cpp] (ohne die Leerstellen), damit man überhaupt was erkennt<br />
5. initiakisiere; ruft nicht die Funktion auf, die drei Parameter erwartet. Genaugenommen macht die Zeile garnichts.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1111707</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1111707</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Sun, 06 Aug 2006 16:50:12 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme bei einer Reihe von Aufgaben on Sun, 06 Aug 2006 21:10:21 GMT]]></title><description><![CDATA[<p>6. verwende vernünftige Threadtitel<br />
7. du solltest das Telefonbuch <strong>global</strong> definieren, hast du nicht gemacht<br />
8. deine bisher lokalen Telefonbücher haben miteinander nichts zu tun, das Telefonbuch in der einen Funktion ist also nicht das gleiche wie in der anderen Funktion<br />
9. zudem behalten diese lokalen Telefonbücher zwischen den einzelnen Funktionsaufrufen nicht ihren Inhalt, da sie jedes mal neu erstellt werden<br />
10. deshalb solltest du das Telefonbuch <strong>global</strong> definieren - hatte ich das schon erwähnt? <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="🙂"
    /><br />
11. Array Indizes beginnen in C++ mit 0, &quot;telefonbuch[i+1]&quot; ist also unzulässig, wenn i == 99.<br />
12. bis dorthin kommst du allerdings nicht mal, da in der Schleife [i=0..99] ein bedingungsloses return steht - der Sinn davon erschliesst sich mir leider nicht<br />
13. was soll ein &quot;while (i&lt;100)&quot; innerhalb einer Schleife, in der i sowieso nur von 0 bis 99 läuft?<br />
14. es gibt sicherlich noch mehr solche zu überarbeitenden Stellen, diese zu beleuchten ist allerdings recht mühsam, daher<br />
15. editiere deinen Beitrag und poste den Quellcode nochmals mit Codetags <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> 4.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1111872</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1111872</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Sun, 06 Aug 2006 21:10:21 GMT</pubDate></item></channel></rss>