Problem mit Programmablauf



  • Einen schönen guten Morgen,

    ich nehme an einem Fernstudium(SGD) teil und habe ein Problem mit einer der Aufgaben.
    Es soll ein Adressbuch geschrieben werden, mit den 'üblichen' Abfragen.
    Eigentlich klappt das auch ausser die Eingabefunktion.
    Mit einer Initialisierungsfunktion soll jedem Eintrag ein neuer Wert zugeordnet werden.
    Mein Problem ist, dass die Eingabefunktion nicht beendet wird, wenn der Nutzer die Einträge ansehen will.

    Kann mir vielleicht jemand auf die Sprünge helfen ?

    #include <iostream.h>
    #include <string.h>
    #include <conio.h>
    /////////////////////////////////
    //Die Funktionsprototypen
        int initialisierung();
        int anzeige(int);
        int nummerneingabe();
        int loeschen();
        int eingabe(int i) ;
    // Die Struktur
        struct person{
            char vorname[20];
            char name[20];
            int telefon;
            };
    // Die Strukturvariable
        person telefonbuch[100];
    ////////////////////////////////////
    // Die Initialisierung
    int initialisierung(){
                for(int i=0; i < 100; i++){
                   eingabe(i);
                }
    }
    /////////////////////////////////////
    // Die Eingabe
        int eingabe(int i)
        {
           // Zur Kontrolle der Schleife
           cout << i <<endl;
    
              cout << "Vorname: ";
              cin >> ws;
              cin.getline(telefonbuch[i].vorname, 20);
    
              cout << "Nachname: ";
              cin >> ws;
              cin.getline(telefonbuch[i].name, 20);
    
              cout << "Telefon: ";
              cin >> ws;
              cin >> telefonbuch[i].telefon;
    
              cout << "Eingabe(1) oder Anzeige(2) "<< endl;
              int eingabe;
              cin >> eingabe;
    
                if(eingabe==1){
                    return 1;
                    }
                    if(eingabe==2){
                        nummerneingabe();
                        return -1;
                        }
    return -1;
        }
    ///////////////////////////////////////////////////////////////
    // Frage nach einem gewuenschten Eintrag
    int nummerneingabe(){
        cout<<"Welchen Eintrag wollen sie sehen (1-100)?\n"<<endl;
        int auswahl;
        cin>>auswahl;
              // Überprüft die Eingabe
              if(auswahl > 100){
                cout << "Es gibt leider nur 100 Eintraege !" << endl;
                }
              else{
                //anzeige(auswahl);
                cout<<telefonbuch[auswahl].vorname<<endl;
                cout<<telefonbuch[auswahl].name<<endl;
                cout<<telefonbuch[auswahl].telefon<<endl;
                }
        cout<<"Weitere Eintraege ansehen (j/n) ?"<<endl;
            char weitere;
            cin>>weitere;
    
                if(weitere=='j'){
                    nummerneingabe();
                    }
                    else{
                        cout << "Auf Wiedersehen" << endl;
                        }
    return 0;
    }
    ///////////////////////////////////////////////////////////////
    int loeschen(){
        cout<<"Welchen Eintrag moechten Sie loeschen (1-100)?"<<endl;
            int eintrag;
            cin>>eintrag;
        strcpy(telefonbuch[eintrag].name,"");
        strcpy(telefonbuch[eintrag].vorname,"");
        telefonbuch[eintrag].telefon= 0;
    
        cout<<"Der Name wurde geloescht !"<<endl;
    
        cout<<"Weitere Eintraege loeschen j/n ?"<<endl;
            char weitere;
            cin>>weitere;
    
                if(weitere=='j'){
                    loeschen();
                    }
                else{
                    cout << "Auf Wiedersehen "<< endl;
                    }
     return 0;
        }
    //////////////////////////////////////////////
    int main(){
        clrscr();
    
        cout<<"*\t Willkommen zu ihrem Adressbuch \t* \n"<<endl;
        cout<<" \t Bitte waehlen Sie:\n"<<endl;
        cout<<"\t a) Eingabe neuer Eintraege \n"<<endl;
        cout<<"\t b) Anzeigen der Eintraege  \n"<<endl;
        cout<<"\t c) Loeschen von Eintraegen \n"<<endl;
        cout<<"\t d) Beenden \n"<<endl;
    
        char auswahl;
        cin >> auswahl;
    
            switch(auswahl){
                case 'a': initialisierung();
                break;
                case 'b': nummerneingabe();      
                break;
                case 'c': loeschen();           
                break;
                case 'd': return -1;            
                };
    
        char p[50];
        cin.getline(p,50);
        cin.getline(p,50);
    return 0;
    }
    


  • hi,
    ich nehme an, dass du im Windows arbeitest...
    Und nun meine Frage: Warum hast du die string.h included, wenn du keine Variable vom Typ string benutzt?

    Die Klasse string stellt dir eine Menge Funktionen zur Verfügung, damit du dich nicht mit den Char-Arrays rumschlagen musst.

    bis auf weiteres
    _mika_



  • Hallo,

    ja, ich programmiere unter Windows mit der Borland IDE.

    Laut meinen Unterlagen brauche ich für die Manipulation von Zeichenketten die <string.h>(siehe strcpy() in der Löschfunktion).

    Grüße chico


Anmelden zum Antworten