Verbesserungsvorschlag von eurer Seite
-
Hallo,
Ich habe im Moment noch relativ wenig Ahnung von C++. Hatte eine Hausaufgabe mit folgendem Programmtext geschrieben. Diese Aufgabe war vom Inhalt her gut gelöst, allerdings meinte mein Lehrer das die benutzen GoTo Befehle kein wirklich guter C++ Programmierstil sind. Schleifen seinen hier wohl besser geeignet. Hat jemand von euch ne Idee, wie und wenn ja, ich welche Schleife statt der Goto Befehle einsetzen kann? ???
#include <iostream.h> static int a; int Nummer; struct eintraege{ char Vorname[50]; char Nachname[50]; int Telefonnummer; }; eintraege Telefonbuch[100]; int Nummereingabe(){ cout<<"Bitte geben Sie die gewuenschte Eintragsnummer ein: "; cin>>Nummer; cout<<endl; if((Nummer > 0) && (Nummer < (a+1))) { cout<<Telefonbuch[Nummer-1].Vorname; cout<<Telefonbuch[Nummer-1].Nachname<<endl<<endl; } else { Nummer = -1; } return Nummer; } void loeschen (){ Nummereingabe(); Abfrage: char Abfrage; cout << "Sind Sie sicher das Sie folgenden Eintrag loeschen moechten?"<<endl<<endl; cout << Telefonbuch[Nummer-1].Vorname << Telefonbuch[Nummer-1].Nachname << Telefonbuch[Nummer-1].Telefonnummer <<endl<<endl; cout << "Druecken Sie j fuer ja oder n fuer nein."<<endl; cin >> Abfrage; switch(Abfrage){ case 'j': strcpy(Telefonbuch[Nummer-1].Vorname, ""); strcpy(Telefonbuch[Nummer-1].Nachname, ""); break; case 'n': break; default: goto Abfrage; } } void Anzeige (){ Nummereingabe(); if (Nummer < 0){ cout << "Die eingegebene Nummer existiert nicht!"<<endl; } else { cout << Telefonbuch[Nummer-1].Vorname << Telefonbuch[Nummer-1].Nachname << Telefonbuch[Nummer-1].Telefonnummer <<endl<<endl; } } int eingabe(){ if (a < 99){ cout<<"Bitte geben Sie den Vornamen ein: "; cin>>Telefonbuch[a].Vorname; char p[50]; cin.getline(p,50); cout<<"Bitte geben Sie den Nachnamen ein: "; cin>>Telefonbuch[a].Nachname; cout<<"Bitte geben Sie die Telefonnummer ein: "; cin>>Telefonbuch[a].Telefonnummer; } else cout<<"Sie haben den Telefonbuchspeicher ueberschritten!!!"; return a; } void Initialisierung(){ strcat(Telefonbuch[a].Vorname, " "); strcat(Telefonbuch[a].Nachname, " "); } void main(){ char Auswahl; startmenue: cout <<endl<<endl<<endl; cout <<"Telefonbuch" <<endl; cout <<"--------------------------------------------------"<<endl; cout <<"neuer Eintrag: a" <<endl; cout <<"Eintrag anzeigen: b" <<endl; cout <<"Eintrag loeschen: c" <<endl; cout <<"Programm beenden: d" <<endl; cin >> Auswahl; switch(Auswahl){ case 'a': eingabe(); Initialisierung(); a++; break; case 'b': Anzeige(); break; case 'c': loeschen(); break; case 'd': goto ende; default: cout<< "Bitte treffen Sie eine Auswahl die das Menue ermoeglicht" <<endl; } char p[50]; cin.getline(p,50); goto startmenue; ende: cin.getline(p,50); }
Bin dankbar für alle Tips.
-
do { char Abfrage; cout << "Sind Sie sicher das Sie folgenden Eintrag loeschen moechten?"<<endl<<endl; cout << Telefonbuch[Nummer-1].Vorname << Telefonbuch[Nummer-1].Nachname << Telefonbuch[Nummer-1].Telefonnummer <<endl<<endl; cout << "Druecken Sie j fuer ja oder n fuer nein."<<endl; cin >> Abfrage; switch(Abfrage){ case 'j': strcpy(Telefonbuch[Nummer-1].Vorname, ""); strcpy(Telefonbuch[Nummer-1].Nachname, ""); break; case 'n': break; } while (Abfrage != 'j' && Abfrage != 'n')
-
tipps:
-globale variablen sind BÖSE!
-bitte: #include<iostream>
-int main()
-string anstatt char array
-am besten goto vermeiden... ist wirklich nicht schön...sonst habe ich keine mängel mehr... oder keine mehr gesehen... habe den cod nur überflogen...
//edit: konnte ich ja nicht wissen
-
leech schrieb:
-NIEWIEDER
Generalisierungen sind immer scheiße.
-
leech schrieb:
tipps:
-globale variablen sind BÖSE!
-bitte: #include<iostream>
-int main()
-string anstatt char array
-am besten goto vermeiden... ist wirklich nicht schön...sonst habe ich keine mängel mehr... oder keine mehr gesehen... habe den cod nur überflogen...
//edit: konnte ich ja nicht wissen
Dsa mit den globalen Variablen ist mir schon klar. Aber was ist denn der Unterschied zwischen "#include <iostream>" und "#include <iostream.h". Ich kenn das nur so aus meinen Lehrbüchern.
Und die sache mit int main(). Warum int main() statt void main()? Was ist daran besser?
MFG
Mr.Blond
-
das ist der C++ Standard
-
MaSTaH schrieb:
leech schrieb:
-NIEWIEDER
Generalisierungen sind immer scheiße.
wenn das nicht ne generalisierung ist.. :p