85 lines
2.4 KiB
C
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;
|
|
} |