/// @file   main.cpp
/// @author Jens Gruschel
/// @date   2016-07-14
/// Hauptprogramm zur Ausgabe von Binomialkoeffizienten

#include "functions.h"
#include <iostream>

using std::cout;
using std::endl;

int main()
{
    // Fakultaeten ausgeben
    for (int i = 1; i <= 10; ++i)
    {
        cout << fak(i) << ", ";
    }
    cout << endl;


    // Pascaksches Dreieck ausgeben
    for (int i = 0; i < 10; ++i)
    {
        for (int j = 0; j <= i; ++j)
        {
            cout << binom(i, j) << " ";
        }
        cout << endl;
    }

    return 0;
}



/// @file   functions.h
/// @author Jens Gruschel
/// @date   2016-07-14
/// Deklaration von Funktionen fuer Potenzierung,
/// Fakultaet und Binomialkoeffizienten

#ifndef FUNCTIONS_H
#define FUNCTIONS_H

int pow(int m, int n);
int fak(int n);
int binom(int n, int k);

#endif // FUNCTIONS_H



/// @file   functions.cpp
/// @author Jens Gruschel
/// @date   2016-07-14
/// Implementierung von Funktionen fuer Potenzierung,
/// Fakultaet und Binomialkoeffizienten

int pow(int m, int n)
{
    // die Zahl 1 n-fach mit m multiplizieren
    int result = 1;
    for (int i = 1; i <= n; ++i)
    {
        result *= m;
    }
    return result;
}

int fak(int n)
{
    // die Zahl 1 mit den Zahlen von 2 bis n multiplizieren
    int result = 1;
    for (int i = 2; i <= n; ++i)
    {
        result *= i;
    }
    return result;
}

int binom(int n, int k)
{
    // den Binomialkoeffizienten "n ueber k" berechnen
    return fak(n) / (fak(k) * fak(n - k));
}