#include 
#include 
#include 
#include 
#include 

using namespace std;

// Headers
string toString (double);
int toInt (string);
double toDouble (string);
int ggT(int a, int b);
int kgV(int a, int b);

int main() {
    // Das Programm berechnet das kleinste gemeinsame Vielfache, kurz kgV, zweier Zahlen.
    // Um die erste Zahl zu speichern, wird die Variable A deklariert.
    int a;
    
    // Um die zweite Zahl zu speichern, wird die Variable B deklariert.
    int b;
    
    // Um das Ergebnis zu speichern, wird die Variable ergebnis deklariert.
    int ergebnis;
    
    cout << "Geben Sie die erste Zahl an:" << endl;
    cin >> a;
    cout << "Geben Sie die zweite Zahl an:" << endl;
    cin >> b;
    
    // Die Fallunterscheidung, ob die erste Zahl größer als die zweite Zahl ist, erleichtert das weitere Vorgehen. Je nach Ergebnis wird Funktion kgV mit den Argumenten a, b beziehungsweise mit der getauschten Variante b, a aufgerufen. An dem Ergebnis ändert sich dadurch aber nichts, da kgV(a, b) = kgV(b, a) ist.
    // Unabhängig vom Ausgang des Vergleichs wird die Funktion kgV aufgerufen, die wiederum selbst intern eine weitere Funktion, nämlich ggT (größter gemeinsamer Teiler) aufruft. Sodass hier eine Funktion aufgerufen wird, die wieder eine Funktion aufruft, es sind also ineinander verschachtelte Funktionen.
    if (a > b) {
        ergebnis = kgV(a, b);
    } else {
        ergebnis = kgV(b, a);
    }
    cout << "Das kleinste gemeinsame Vielfache ist:" << endl;
    cout << ergebnis << endl;
    return 0;
}

int ggT(int a, int b) {
    // Die Funktion ggT berechnet den größten gemeinsamen Teiler zweier Zahlen a und b.
    // Die Zwischenergebnisse und das Endergebnis der Funktion ggT werden in einer Variable gespeichert. Dafür wird die Variable resultat deklariert.
    int resultat;
    
    // Im Fall, dass die erste Zahl a gleich 0 ist, ist das Ergebnis gleich b (der zweiten Zahl). Im Fall, dass a jedoch ungleich 0 ist, wird die ggT Funktion mit den geänderten beziehungsweise angepassten Argumenten ggT(b MOD a, a).
    if (a == 0) {
        resultat = b;
    } else {
        resultat = ggT(b % a, a);
    }
    
    return resultat;
}

int kgV(int a, int b) {
    // Die Funktion kgV soll das kleinste gemeinsame Vielfach zweier Zahlen a und b berechnen. Die zwei Zahlen wurden als Argument an die kgV Funktion übergeben.
    // Um das Ergebnis zu speichern, wird in einer Variable gespeichert. Dafür wird die Variable resultat deklariert.
    int resultat;
    
    // Um das kgV zu berechnen werden die zwei Zahlen a und b zuerst multipliziert und das Ergebnis wird dann durch den größten gemeinsamen Teiler der zwei Zahlen a und b geteilt. Das Ergebnis wird in der Variablen resultat gespeichert.
    resultat = (int) ((double) (a * b) / ggT(a, b));
    
    return resultat;
}

// Im Folgenden werden Funktionen zur Typumwandlung implementiert.
string toString (double value) { //int auch
    stringstream temp;
    temp << value;
    return temp.str();
}

int toInt (string text) {
    return atoi(text.c_str());
}

double toDouble (string text) {
    return atof(text.c_str());
}
        
        
akzeptieren ablehen

Diese Website verwendet Cookies und Zählpixel, um Ihnen die bestmögliche Nutzung dieser Website zu ermöglichen.Learn more about cookies sehen Sie auch Datenschutz