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