fdai7731
11 months ago
2 changed files with 203 additions and 28 deletions
@ -0,0 +1,203 @@ |
|||
//1 |
|||
#include <stdio.h> |
|||
#include <stdlib.h> |
|||
#include <time.h> |
|||
#include "Mathe.h" |
|||
|
|||
//2 |
|||
void initialisiereZufallsgenerator(); |
|||
|
|||
|
|||
//3 |
|||
int generiereZufallszahl(int min, int max); |
|||
|
|||
|
|||
//4 |
|||
char generiereZufallsOperator(); |
|||
|
|||
|
|||
//5 |
|||
int addiere(int zahl1, int zahl2); |
|||
|
|||
|
|||
//6 |
|||
int subtrahiere(int zahl1, int zahl2); |
|||
|
|||
|
|||
//7 |
|||
int multipliziere(int zahl1, int zahl2); |
|||
|
|||
|
|||
//8 |
|||
int dividiere(int zahl1, int zahl2); |
|||
|
|||
|
|||
//9 |
|||
int berechneErgebnis(int zahl1, int zahl2, char operator); |
|||
|
|||
|
|||
//10 |
|||
void spieleRunde(int schwierigkeitsgrad); |
|||
|
|||
|
|||
//11 |
|||
void zeigeAnleitung(); |
|||
|
|||
|
|||
//12 |
|||
void zeigeHighscore(int punkte); |
|||
|
|||
|
|||
//13 |
|||
int holeSpielerAntwort(); |
|||
|
|||
|
|||
//14 |
|||
void bewerteAntwort(int spielerAntwort, int ergebnis, int* punkte); |
|||
|
|||
|
|||
//15 |
|||
void zeigeRundenEnde(int punkte); |
|||
|
|||
|
|||
//16 |
|||
void zeigeAuswahl(const char* text); |
|||
|
|||
|
|||
//17 |
|||
void initialisiereZufallsgenerator() { |
|||
srand(time(NULL)); |
|||
|
|||
|
|||
//18 |
|||
int generiereZufallszahl(int min, int max) { |
|||
return min + (int)((double)rand() / (RAND_MAX + 1) * (max - min + 1)); |
|||
|
|||
|
|||
//19 |
|||
char generiereZufallsOperator() { |
|||
char operatoren[] = {'+', '-', '*', '/'}; |
|||
int index = rand() % 4; |
|||
return operatoren[index]; |
|||
|
|||
|
|||
//20 |
|||
int berechneErgebnis(int zahl1, int zahl2, char operator) { |
|||
switch (operator) { |
|||
case '+': |
|||
return addiere(zahl1, zahl2); |
|||
case '-': |
|||
return subtrahiere(zahl1, zahl2); |
|||
case '*': |
|||
return multipliziere(zahl1, zahl2); |
|||
case '/': |
|||
return dividiere(zahl1, zahl2); |
|||
default: |
|||
return 0; |
|||
} |
|||
} |
|||
|
|||
|
|||
|
|||
//21 |
|||
void spieleRunde(int schwierigkeitsgrad) { |
|||
int punkte = 0; |
|||
int anzahlAufgaben = 5; |
|||
zeigeAuswahl("Berechne die folgenden Aufgaben:"); |
|||
|
|||
for (int i = 0; i < anzahlAufgaben; i++) { |
|||
int zahl1 = generiereZufallszahl(1 * schwierigkeitsgrad, 10 * schwierigkeitsgrad); |
|||
int zahl2 = generiereZufallszahl(1 * schwierigkeitsgrad, 10 * schwierigkeitsgrad); |
|||
char operator = generiereZufallsOperator(); |
|||
if (operator == '/' && zahl2 == 0) { |
|||
zahl2 = generiereZufallszahl(1 * schwierigkeitsgrad, 10 * schwierigkeitsgrad); |
|||
} |
|||
int ergebnis = berechneErgebnis(zahl1, zahl2, operator); |
|||
printf("Aufgabe %d: %d %c %d\n", i + 1, zahl1, operator, zahl2); |
|||
int spielerAntwort = holeSpielerAntwort(); |
|||
bewerteAntwort(spielerAntwort, ergebnis, &punkte); |
|||
} |
|||
|
|||
zeigeRundenEnde(punkte); |
|||
} |
|||
|
|||
|
|||
|
|||
//22 |
|||
void zeigeAnleitung() { |
|||
printf("\n=== Anleitung ===\n"); |
|||
printf("Beantworte die mathematischen Aufgaben, um Punkte zu sammeln.\n"); |
|||
printf("Du kannst zwischen verschiedenen Schwierigkeitsgraden wählen.\n"); |
|||
printf("Versuche so viele Aufgaben wie möglich korrekt zu lösen!\n"); |
|||
|
|||
|
|||
|
|||
//23 |
|||
void zeigeHighscore(int punkte) { |
|||
printf("\n=== Highscore ===\n"); |
|||
printf("Dein aktueller Highscore ist: %d Punkte\n", punkte); |
|||
|
|||
|
|||
|
|||
//24 |
|||
int holeSpielerAntwort() { |
|||
int spielerAntwort; |
|||
zeigeAuswahl("Deine Antwort: "); |
|||
scanf("%d", &spielerAntwort); |
|||
return spielerAntwort; |
|||
|
|||
|
|||
|
|||
//25 |
|||
void bewerteAntwort(int spielerAntwort, int ergebnis, int* punkte) { |
|||
if (spielerAntwort == ergebnis) { |
|||
printf("Richtig! Du erhältst einen Punkt.\n"); |
|||
(*punkte)++; |
|||
} else { |
|||
printf("Falsch! Die richtige Antwort ist %d\n", ergebnis); |
|||
} |
|||
} |
|||
|
|||
|
|||
|
|||
//26 |
|||
void zeigeRundenEnde(int punkte) { |
|||
printf("Runde beendet. Du hast insgesamt %d Punkte erreicht.\n", punkte); |
|||
|
|||
|
|||
|
|||
//27 |
|||
int addiere(int zahl1, int zahl2) { |
|||
return zahl1 + zahl2; |
|||
|
|||
|
|||
|
|||
//28 |
|||
int subtrahiere(int zahl1, int zahl2) { |
|||
return zahl1 - zahl2; |
|||
|
|||
|
|||
|
|||
//29 |
|||
int multipliziere(int zahl1, int zahl2) { |
|||
return zahl1 * zahl2; |
|||
|
|||
|
|||
|
|||
//30 |
|||
int dividiere(int zahl1, int zahl2) { |
|||
if (zahl2 != 0) { |
|||
return zahl1 / zahl2; |
|||
} else { |
|||
printf("Fehler: Division durch Null vermieden.\n"); |
|||
return 0; |
|||
} |
|||
} |
|||
|
|||
|
|||
|
|||
//31 |
|||
void zeigeAuswahl(const char* text) { |
|||
printf("%s\n", text); |
|||
} |
|||
|
@ -1,28 +0,0 @@ |
|||
#ifdef TEST |
|||
|
|||
#include "unity.h" |
|||
|
|||
#include "test.h" |
|||
|
|||
void setUp(void) |
|||
{ |
|||
} |
|||
|
|||
void tearDown(void) |
|||
{ |
|||
} |
|||
|
|||
void test_test__return_5(void) |
|||
{ |
|||
/* arrange */ |
|||
int expected = 5; |
|||
int actual; |
|||
|
|||
/* act */ |
|||
actual = return_5(); |
|||
|
|||
/* assert */ |
|||
TEST_ASSERT_EQUAL_INT(expected, actual); |
|||
} |
|||
|
|||
#endif // TEST |
Write
Preview
Loading…
Cancel
Save
Reference in new issue