Compare commits

..

2 Commits

Author SHA1 Message Date
833dd6b20c def 2025-12-14 22:05:23 +01:00
a8c68f80e4 abc 2025-12-14 21:58:12 +01:00

View File

@ -24,15 +24,15 @@ CompareFctType compareFct(const void *arg1, const void *arg2)
// 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)
unsigned int *createNumbers(unsigned int len)
{
srand(time(NULL));
TreeNode *numbers;
int isDuplicate = 0;
int number = rand() % (2 * len) + 1;
int* array = malloc(len*sizeof(int));
unsigned int number = rand() % (2 * len) + 1;
unsigned int *array = malloc(len * sizeof(int));
numbers = addToTree(NULL, &number, sizeof(int), compareFct, &isDuplicate);
array[0] = number;
@ -44,15 +44,20 @@ unsigned int* createNumbers(unsigned int len)
{
isDuplicate = 0;
i--;
}else{
}
else
{
array[i] = number;
}
}
clearTree(numbers);
int duplicatePosition1 = rand() % len;
int duplicatePosition2 = rand() % len;
while(duplicatePosition2 == duplicatePosition1){
while (duplicatePosition2 == duplicatePosition1)
{
duplicatePosition2 = rand() % len;
}
@ -64,11 +69,19 @@ unsigned int* createNumbers(unsigned int len)
// 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)
{
qsort(numbers, len, sizeof(int), compareFct);
unsigned int *copyNumbers = malloc(sizeof(int) * len);
for (int i = 0; i < len; i++)
{
copyNumbers[i] = numbers [i];
}
for(int i = 0; i < len-1; i++){
if(numbers[i] == numbers[i+1]){
return numbers[i];
qsort(copyNumbers, len, sizeof(int), compareFct);
for (int i = 0; i < len - 1; i++)
{
if (copyNumbers[i] == copyNumbers[i + 1])
{
return copyNumbers[i];
}
}