2025-12-11 16:55:04 +01:00

71 lines
1.7 KiB
C

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <string.h>
#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. */
// 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.
void createnumbers2(int array[], int length)
{
for (int i =0; i < length; i++)
{
array[i] = rand() % 9 +1;
for (int j = 0; j < i;j++)
{
if( array[j] == array[i] )
{
array[i] = rand() % 9 +1;
}
}
}
}
unsigned int *createNumbers(unsigned int len)
{
srand(time(NULL));
int array[len];
createnumbers2(array, len);
int zufall =0;
zufall = rand() % (len+1) + 0;
array[0] = array[zufall];
return array; //was soll zurückgegeben werden?
}
// 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)
{
//geht nicht, weil array nur lesen möglich?
for (int i = 0; i < len; i++)
{
for (int j = 0; j < len-1; j++)
{
if (numbers[i] < numbers[j])
{
int temp = numbers[i];
numbers[i] = numbers[j];
numbers[j] = temp;
}
if (numbers[i] == numbers[j])
{
return numbers[i];
}
}
}
}