info1_uebungen/05/geminiAufgabe2.c
2026-04-30 13:47:21 +02:00

85 lines
2.4 KiB
C

/*
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 <stdio.h>
#include <stdlib.h>
#include <time.h>
// --- 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;
}