rekursive Funktionen Hilfe



  • Hallo Leute,

    ich komme einfach seit Stunden nicht weiter. Die Lösung ist sicher ganz simpel.
    Ich habe zwei rekursive Funktionern, die sich auch noch gegenseitig aufrufen:

    Programmaufbau :
    #pragma hdrstop
    //---------------------------------------------------------------------------
    #include <fstream.h>
    #include <iostream.h>
    //---------------------------------------------------------------------------
    #pragma argsused

    const long Unendlich = 1399999999;
    const unsigned short int n = 6; // Wert soll später aus Datei gelesen werden
    unsigned short int vektor[n];

    void Funktion1(unsigned short int mue,unsigned short int nue,unsigned short int sigma) {
    .
    Funktion1(mue,nue,0)
    .
    Funktion2(mue,nue,0)
    .
    }
    void Funktion2(unsigned short int mue,unsigned short int nue,unsigned short int sigma) {
    .
    Funktion2(mue,nue,0)
    .
    Funktion1(mue,nue,0)
    .
    }

    int main()
    return 0;
    }

    Der Fehler der nun kommt beim ausführen:
    [C++ Error] MFP_CProg.cpp(86): E2268 Call to undefined function 'Funktion1'
    wenn ich alle Aufrufe zu Funktion1 wegmache geht compilieren

    wenn ich die Reihenfolge vertausche, also Funktion2 an den Programmanfang kopiere dann kommt:
    [C++ Error] MFP_CProg.cpp(86): E2268 Call to undefined function 'Funktion2'
    wenn ich alle Aufrufe zu Funktion2 wegmache geht compilieren

    wer kann mir helfe ?

    Grueße,
    Knut



  • Dr_Sputnik schrieb:

    Hallo Leute,

    ich komme einfach seit Stunden nicht weiter. Die Lösung ist sicher ganz simpel.
    Ich habe zwei rekursive Funktionern, die sich auch noch gegenseitig aufrufen:

    Programmaufbau :
    #pragma hdrstop
    //---------------------------------------------------------------------------
    #include <fstream.h>
    #include <iostream.h>

    //---------------------------------------------------------------------------
    #pragma argsused

    const long Unendlich = 1399999999;
    const unsigned short int n = 6; // Wert soll später aus Datei gelesen werden
    unsigned short int vektor[n];

    void Funktion1(unsigned short int mue,unsigned short int nue,unsigned short int sigma) {
    .
    Funktion1(mue,nue,0)
    .
    Funktion2(mue,nue,0)
    .
    }
    void Funktion2(unsigned short int mue,unsigned short int nue,unsigned short int sigma) {
    .
    Funktion2(mue,nue,0)
    .
    Funktion1(mue,nue,0)
    .
    }

    int main()
    return 0;
    }

    Der Fehler der nun kommt beim ausführen:
    [C++ Error] MFP_CProg.cpp(86): E2268 Call to undefined function 'Funktion1'
    wenn ich alle Aufrufe zu Funktion1 wegmache geht compilieren

    wenn ich die Reihenfolge vertausche, also Funktion2 an den Programmanfang kopiere dann kommt:
    [C++ Error] MFP_CProg.cpp(86): E2268 Call to undefined function 'Funktion2'
    wenn ich alle Aufrufe zu Funktion2 wegmache geht compilieren

    wer kann mir helfe ?

    Grueße,
    Knut

    Die Funktionen erst deklarieren, dann verwenden.



  • Was passiert wenn der Präprozessor sich durch den Code wühlt?

    Er sieht die Funktion 1 in der Funktion 2 aufgerufen wird.
    Der fragt sich jetzt, was für eine Funktion 2 hier wohl gemeint ist.
    Ich kann nichts aufrufen was ich nicht kenne -> Fehler.

    Wenn du also schon alles in einer Datei haben willst, nutze folgende Kovention.

    #pragma hdrstop 
    //--------------------------------------------------------------------------- 
    #include <fstream.h> 
    #include <iostream.h> 
    //--------------------------------------------------------------------------- 
    #pragma argsused 
    
    const long Unendlich = 1399999999; 
    const unsigned short int n = 6; // Wert soll später aus Datei gelesen werden 
    unsigned short int vektor[n]; 
    
    // Deklaration
    void Funktion1(unsigned short int mue,unsigned short int nue,unsigned short int sigma)
    void Funktion2(unsigned short int mue,unsigned short int nue,unsigned short int sigma)
    
    // main()
    int main() {
    // Die Funktionen kann man hier aufrufen
    return 0; 
    } 
    
    // Defintion
    void Funktion1(unsigned short int mue,unsigned short int nue,unsigned short int sigma) { 
    . 
    Funktion1(mue,nue,0) 
    . 
    Funktion2(mue,nue,0) 
    . 
    } 
    void Funktion2(unsigned short int mue,unsigned short int nue,unsigned short int sigma) { 
    . 
    Funktion2(mue,nue,0) 
    . 
    Funktion1(mue,nue,0) 
    . 
    }
    

    Deklaration -> es ist was da, merk ich mir
    Aufruf -> Syntaxprüfung
    Definition -> erstellen von Code



  • Vielen Dank für die Mühe !
    Klappt super jetzt.


Anmelden zum Antworten