From 3d4623e808dc33589c7efe8b5b7348cfd327e5d9 Mon Sep 17 00:00:00 2001 From: paulusja Date: Thu, 30 Apr 2026 13:47:21 +0200 Subject: [PATCH] Add exercises generated by gemini. --- 05/geminiAufgabe1.c | 66 +++++++++++++++++++++++++++++++++++ 05/geminiAufgabe2.c | 85 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 151 insertions(+) create mode 100644 05/geminiAufgabe1.c create mode 100644 05/geminiAufgabe2.c diff --git a/05/geminiAufgabe1.c b/05/geminiAufgabe1.c new file mode 100644 index 0000000..d7378be --- /dev/null +++ b/05/geminiAufgabe1.c @@ -0,0 +1,66 @@ +/*Die Aufgabe: "Zahlen-Jongleur" + +Schreibe ein Programm, das eine vom Benutzer festgelegte Anzahl an Zufallszahlen generiert. Das Programm soll für jede Zahl entscheiden, ob sie gerade oder ungerade ist, und am Ende einige statistische Werte ausgeben. + +Anforderungen: + + Erstelle eine Funktion analysiereZahlen(int anzahl). + + Diese Funktion soll anzahl Zufallszahlen im Bereich von 1 bis 100 generieren. + + Für jede generierte Zahl soll auf der Konsole ausgegeben werden, ob sie gerade oder ungrade ist. + + Am Ende der Funktion sollen die Summe aller generierten Zahlen sowie der Durchschnitt (als Fließkommazahl) ausgegeben werden. + + Verwende rand() zur Erzeugung der Zahlen und den Modulo-Operator % zur Prüfung der Parität. +*/ +#include +#include +#include + +// --- HIER die Funktion analysiereZahlen ergänzen --- +void analysiereZahlen(int anzahl); + +// -------------------------------------------------- + +int main() { + int menge; + + // Initialisierung des Zufallszahlengenerators mit der aktuellen Zeit + srand((unsigned int)time(NULL)); + + printf("Wie viele Zufallszahlen sollen generiert werden? "); + if (scanf("%d", &menge) != 1 || menge <= 0) { + printf("Bitte gib eine positive Ganzzahl ein.\n"); + return 1; + } + + printf("\nStarte Analyse von %d Zahlen:\n", menge); + printf("------------------------------------\n"); + + analysiereZahlen(menge); + + printf("------------------------------------\n"); + printf("Analyse beendet.\n"); + + return 0; +} + +void analysiereZahlen(int anzahl) +{ + unsigned int summe = 0; + + for(int i = 0; i < anzahl; i++) + { + unsigned int zufallszahl = rand() % 100 + 1; + + if(zufallszahl % 2 == 0) + printf("Die Zahl %d ist gerade.\n", zufallszahl); + else + printf("Die Zahl %d ist ungerade.\n", zufallszahl); + + summe += zufallszahl; + } + + printf("Durchschnitt: %lf.\n", (double)summe / anzahl); +} \ No newline at end of file diff --git a/05/geminiAufgabe2.c b/05/geminiAufgabe2.c new file mode 100644 index 0000000..202b5c8 --- /dev/null +++ b/05/geminiAufgabe2.c @@ -0,0 +1,85 @@ +/* +Die Aufgabe: „Der statistische Würfel-Check“ + +Stell dir vor, du möchtest prüfen, wie „fair“ ein virtueller Würfel ist. Da wir keine Arrays nutzen dürfen, konzentrieren wir uns auf ein bestimmtes Ziel: Wir wollen zählen, wie oft eine vom Benutzer gewählte Glückszahl hintereinander gewürfelt wird (Streak). +Deine Mission: + +Implementiere die Funktion simulateDiceStreaks. Diese soll: + + In einer Schleife so viele Zufallszahlen (zwischen 1 und 6) generieren, wie der Parameter trials angibt. + + Prüfen, ob die gewürfelte Zahl der luckyNumber entspricht. + + Die längste Folge (Streak) ermitteln, in der die luckyNumber direkt hintereinander erschienen ist. + + Diesen Maximalwert am Ende zurückgeben. +*/ +#include +#include +#include + +// --- DEINE FUNKTION HIER ERGÄNZEN --- +// Funktionsname: simulateDiceStreaks +// Parameter: int trials (Anzahl Würfe), int luckyNumber (Zahl 1-6) +// Rückgabewert: int (die längste Serie der luckyNumber) + +unsigned int simulateDiceStreaks(unsigned int trials, int luckyNumber); +unsigned int rollDice(); + +// ------------------------------------ + +int main() { + int trials = 1000; + int luckyNumber; + int longestStreak; + + // Seed für den Zufallszahlengenerator setzen + srand((unsigned int)time(NULL)); + + printf("Willkommen beim Würfel-Statistik-Tool!\n"); + printf("Welche Zahl (1-6) ist deine Glückszahl? "); + scanf("%d", &luckyNumber); + + if (luckyNumber < 1 || luckyNumber > 6) { + printf("Ungültige Eingabe. Bitte eine Zahl zwischen 1 und 6 wählen.\n"); + return 1; + } + + printf("Simuliere %d Würfe...\n", trials); + + // Funktionsaufruf + longestStreak = simulateDiceStreaks(trials, luckyNumber); + + printf("\nErgebnis:\n"); + printf("Deine Glückszahl %d erschien maximal %d Mal direkt hintereinander.\n", + luckyNumber, longestStreak); + + return 0; +} + +unsigned int simulateDiceStreaks(unsigned int trials, int luckyNumber) +{ + unsigned int highestStreak = 0; + unsigned int currentStreak = 0; + + for(int i = 0; i < trials; i++) + { + unsigned int randNumber = rollDice(); + + if(randNumber == luckyNumber) + currentStreak++; + else + { + if(currentStreak > highestStreak) + highestStreak = currentStreak; + currentStreak = 0; + } + } + + return highestStreak; +} + +unsigned int rollDice() +{ + return rand() % 6 + 1; +} \ No newline at end of file