Brauche mal Hilfe bei folgenden Fehlermeldungen.



  • Habe ein Programm geschrieben. Bekomme es allerdings nicht zum laufen. Hebe folgebde Fehler. Hier das Programm:

    #include <iostream.h>
    static int a;
    char Vorname;
    char Nachname;
    int Telefonnummer;
    int Nummer;
    struct eintraege{
            char Vorname[50];
            char Nachname[50];
            int Telefonnummer;
    
    };
    eintraege Telefonbuch[100];
    
    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 = -1){
            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(){
            //static int a;
            cout<<"Bitte geben Sie den Vornamen ein: ";
            cin>>Telefonbuch[a].Vorname;
            cout<<"Bitte geben Sie den Nachnamen ein: ";
            cin>>Telefonbuch[a].Nachname;
            cout<<"Bitte geben Sie die Telefonnummer ein: ";
            cin>>Telefonbuch[a].Telefonnummer;
            return a;
    }
    
    void Initialisierung(){
            strcat(Telefonbuch[a].Vorname, " ");
            strcat(Telefonbuch[a].Nachname, " ");
    }
    
    int Nummereingabe(){
    
            neueSuche:
    
            char Nummermenue;
            cout<<"Bitte geben Sie die gewuenschte Eintragsnummer ein: ";
            cin>>Nummer;
            cout<<endl;
    
            if((Nummer > 0) && (Nummer < a)) {
                    cout<<Telefonbuch[Nummer-1].Vorname;
                    cout<<Telefonbuch[Nummer-1].Nachname;
                    return Nummer;
            }
    
            else {
            Nummer = -1;
            return Nummer;
            }
    }
    
    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 löschen: 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);
    
    }
    

    Hier meine Fehlermeldungen:

    [C++ Fehler] Hausaufgabe4_121204.cpp(19): E2268 Aufruf der undefinierten Funktion 'Nummereingabe'
    [C++ Fehler] Hausaufgabe4_121204.cpp(19): E2268 Aufruf der undefinierten Funktion 'Nummereingabe'
    [C++ Warnung] Hausaufgabe4_121204.cpp(42): W8060 Möglicherweise inkorrekte Zuweisung
    

    Bin dankbar falls Ihr mir sagen könnt wie ich diese Fehler behebe und das ganze zum Laufen bekomme.



  • Was der Compiler sagt, undefiniert.

    Die Art, Funktionen aufzurufen muss vor dem ersten Aufruf bekannt sein.

    LSG:
    Einfach einen Prototypen in den Header oder "oben" in den Quelltext.



  • Btw: void main() und iostream.h sind kein aktueller C++-Standard.

    Stattdesen int main() und iostream im namespace std;

    #include <iostream> // kein iostream.h
    using namespace std;
    
    int main()   // kein void main().
    {
         ...
    
         return 0;
    }
    

    Caipi



  • SeppSchrot schrieb:

    Was der Compiler sagt, undefiniert.

    Die Art, Funktionen aufzurufen muss vor dem ersten Aufruf bekannt sein.

    LSG:
    Einfach einen Prototypen in den Header oder "oben" in den Quelltext.

    Jetzt laüft es ohne Fehler. Allerdings bekomme ich in meinem Programm immer wenn ich die Funktion Anzeige nutzen möchte immer die Meldung "Die eingegeben Nummer existiert nicht!" Was ja eigentlich auch OK wäre....wenn diese Nummer nicht existiere. Da tut sie aber. Was mach da noch falsch???



  • if (Nummer = -1)
    

    genau hingucken, und ???

    in Zukunft besser

    if (-1 == Nummer)
    

    Dann ist der Fehler so nicht mehr möglich

    mfg JJ



  • Weil:

    Nummereingabe();
            if (Nummer = -1){ //ergibt immer true, da Zuweisung
            cout << "Die eingegebene Nummer existiert nicht!"<<endl;
            }
            else {
            cout << Telefonbuch[Nummer-1].Vorname << Telefonbuch[Nummer-1].Nachname << Telefonbuch[Nummer-1].Telefonnummer <<endl<<endl;
            }
    

    Ein typischer Tippfehler :p
    mach

    Nummer == -1
    

    draus und es geht, denn alle Zahlen != 0 sind true und bei dem Ausdruck wird Nummer -1 zugewiesen und dann Nummer überprüft ->

    Nummer = -1
    if(Nummer) //--->true
    

    Hoffe das war nicht zu viel der Erklärung 😉

    EDIT: zu lahm :|



  • Ein herzliches Danke an alle die mir geholfen haben Jetzt läuft das genau so wie ich es wollte.
    🙂


Anmelden zum Antworten