diff --git a/src/Faktorial.c b/src/Faktorial.c index 4461e57..9660957 100644 --- a/src/Faktorial.c +++ b/src/Faktorial.c @@ -14,17 +14,27 @@ unsigned long long factorial(int n) { return result; } -int run_factorial() { +int getPositiveInteger() { int num; - printf("Gib eine Zahl ein, um die Fakultät zu berechnen: "); - scanf("%d", &num); - - unsigned long long result = factorial(num); + while (1) { + printf("Gib eine positive ganze Zahl ein: "); + if (scanf("%d", &num) == 1 && num >= 0) { + break; + } else { + printf("Ungültige Eingabe. Bitte gib eine positive ganze Zahl ein.\n"); + while (getchar() != '\n'); // Leere den Eingabepuffer + } + } + return num; +} +int run_factorial() { + int num = getPositiveInteger(); + if (num < 0) { printf("Fakultät ist für negative Zahlen nicht definiert.\n"); } else { - int result = factorial(num); + unsigned long long result = factorial(num); printf("Die Fakultät von %d ist %d.\n", num, result); }