/// @file   main.cpp
/// @author Jens Gruschel
/// @date   2016-07-14
/// Berechnung von Potenzen, Fakultaeten und Binomialkoeffizienten

#include <iostream>
#include <stdexcept>

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

int fak(int n)
{
    // sicherstellen, dass n positiv ist
    if (n < 0) throw std::invalid_argument("von negativen Zahlen kann man die Fakultaet nicht berechnen");

    // 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 main()
{
    // Fakultaeten ausgeben
    // (beginnend mit -1, um einen Fehler zu provozieren)
    for (int i = -1; i <= 10; ++i)
    {
        try
        {
            cout << fak(i) << ", ";
        }
        catch (std::exception& e)
        {
            cout << e.what() << ", ";
        }
    }
    cout << endl;

    return 0;
}