#include #include #include #include #include "numbers.h" #include "bintree.h" //TODO: getDuplicate und createNumbers implementieren /* * * Erzeugen eines Arrays mit der vom Nutzer eingegebenen Anzahl an Zufallszahlen. * Sicherstellen, dass beim Befüllen keine Duplikate entstehen. * Duplizieren eines zufälligen Eintrags im Array. * in `getDuplicate()`: Sortieren des Arrays und Erkennen der doppelten Zahl durch Vergleich benachbarter Elemente. */ // Implementierung für unsigned int int compareNumbers(const void *arg1, const void *arg2) { // Die void-Pointer auf unsigned int Pointer casten const unsigned int *num1 = (const unsigned int *)arg1; const unsigned int *num2 = (const unsigned int *)arg2; // Werte dereferenzieren und vergleichen if (*num1 < *num2) return -1; if (*num1 > *num2) return 1; return 0; } // Returns len random numbers between 1 and 2x len in random order which are all different, except for two entries. // Returns NULL on errors. Use your implementation of the binary search tree to check for possible duplicates while // creating random numbers. unsigned int *createNumbers(unsigned int len) { srand(time(NULL)); // Allokiere Speicher für 'len' unsigned int unsigned int *numbers = (unsigned int *)malloc(len * sizeof(unsigned int)); if (numbers == NULL) { // Speicher konnte nicht reserviert werden return NULL; } int array [len - 1] for(unsigned int i = 0; i < len; i++) { unsigned int randomNumber = (rand() % (2 * len)) + 1; numbers[i] = randomNumber; } // Duplizieren eines zufälligen Eintrags (Fehlt in deinem Entwurf!) // Die Aufgabe verlangt, dass *genau eine* Zahl doppelt vorkommt[cite: 8]. // Wähle einen zufälligen Index (0 bis len-1), dessen Wert du duplizierst unsigned int duplicateIndex = rand() % len; // Ersetze einen zufälligen Eintrag im Array (z.B. den letzten) durch den Wert des Duplikats numbers[len - 1] = numbers[duplicateIndex]; return numbers; } // Returns only the only number in numbers which is present twice. Returns zero on errors. unsigned int getDuplicate(const unsigned int numbers[], unsigned int len) { }