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