größter gemeinsamer teiler

  • #include <iostream>
    using namespace std;

    int a, b, erg;

    int ggt(int a, int b);

    int ggt (int a, int b){

    if (b==0)
    return a;

    else

    return ggt(b, a%b);

    }

    int main(){

    cout << "Geben Sie die Werte fuer a und b ein" << endl;
    cin >> a;
    cin >> b;


    erg = ggt(b, a%b);

    cout << erg << endl;
    }


    i will eigentlich nur wissen, was das fettgedruckte b da macht. bzw. kann ma wer erklären, wieso da des b drin is?

    Wer FU sagt, muss auch T sagen

  • i will eigentlich nur wissen, was das fettgedruckte b da macht. bzw. kann ma wer erklären, wieso da des b drin is?


    Die Funktion ggt soll den größten gemeinsamen Teiler von zwei Zahlen berechnen. Zwei Zahlen sind zwei Inputs, deswegen hat die Funktion zwei Argumente. Beantwortet das deine Frage?

    *plantsch*

  • das b wird einfach als parameter übergeben... mehr ist das nicht und mehr macht es auch nicht

    die funktion selbst ist rekursiv, ruft sich also selbst immer wieder auf, wieso man auf die art den größten gemeinsamen teiler ermitteln kann musst du dir halt überlegen oder auf dem geposteten link durchlesen, aber wenn dich deine neugier nicht gerade umbringt.... würd ich das einfach so hinnehmen da rekursion wenn man mit programmieren anfängt erstmal nicht so wichtig ist, man kann es einfach mal hinnehmen "aha ja die funktion ruft sich selbst auf, das ist rekursion"

    [FONT=Arial, Helvetica, sans-serif](\__/) [/FONT]
    [FONT=Arial, Helvetica, sans-serif] (='.'=) [/FONT]This is Bunny. Copy Bunny into your signature to help
    [FONT=Arial, Helvetica, sans-serif](")_(")[/FONT] him on his way to world domination.

  • was viell noch zu erwähnen wäre, ist, dass eine rekursive funktion natürlich auch eine ausstiegbedingung haben muss...ansonsten würde die funktion ewig sich selbst aufrufen!
    (in dem bsp b==0)

    "ich bin so kluk. K-L-U-K"
    (Homer Jay Simpson)

  • achja genau, 2 sachen noch

    1)

    int a, b, erg; <- man sollte keine globalen variablen verwenden, wenn man mehr als eine cpp file hat sind die dann unbekannt in den anderen files, man muss sich mit extern herumplagen, und es verursacht alles in allem nur probleme, wenn schon würde ich wenn ich unbedingt globale variablen in einem größeren projekt brauche eine abstrakte klasse erstellen und die variablen + helferfunktionen static machen aber so ist es jedenfalls schlecht

    2)

    Code
    int ggt(int a, int b);
    
    
    int ggt (int a, int b){
    ...
    }

    wenn du die funktion schon vor der main definierst dann brauchst du nicht zuerst eine deklaration und dann die definition zu schreiben sondern du kannst es gleich in einem machen also blos

    Code
    int ggt (int a, int b){
     ...
     }

    diese unterteilung in definition - deklaration macht man wenn man die funktionen in .h files deklariert und sie in cpp files definiert bzw vor der main in der cpp deklariert und nach der main definiert (wenn man kleine programme hat die nur aus ein paar funktionen bestehen)

    [FONT=Arial, Helvetica, sans-serif](\__/) [/FONT]
    [FONT=Arial, Helvetica, sans-serif] (='.'=) [/FONT]This is Bunny. Copy Bunny into your signature to help
    [FONT=Arial, Helvetica, sans-serif](")_(")[/FONT] him on his way to world domination.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!