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


Log in to reply