diff --git a/src/main/c/Mathe.c b/src/main/c/Mathe.c new file mode 100644 index 0000000..d172f55 --- /dev/null +++ b/src/main/c/Mathe.c @@ -0,0 +1,203 @@ +//1 +#include +#include +#include +#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); +} + diff --git a/src/test/c/test_test.c b/src/test/c/test_test.c index 4f61ea7..e69de29 100644 --- a/src/test/c/test_test.c +++ b/src/test/c/test_test.c @@ -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