Compare commits
No commits in common. "833dd6b20cadf9e4197dbebbbd07e92b43ecc179" and "8449734941c3e25f577febfbd211514b7f32e98f" have entirely different histories.
833dd6b20c
...
8449734941
33
numbers.c
33
numbers.c
@ -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 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
|
// Returns NULL on errors. Use your implementation of the binary search tree to check for possible duplicates while
|
||||||
// creating random numbers.
|
// creating random numbers.
|
||||||
unsigned int *createNumbers(unsigned int len)
|
unsigned int* createNumbers(unsigned int len)
|
||||||
{
|
{
|
||||||
srand(time(NULL));
|
srand(time(NULL));
|
||||||
|
|
||||||
TreeNode *numbers;
|
TreeNode *numbers;
|
||||||
|
|
||||||
int isDuplicate = 0;
|
int isDuplicate = 0;
|
||||||
unsigned int number = rand() % (2 * len) + 1;
|
int number = rand() % (2 * len) + 1;
|
||||||
unsigned int *array = malloc(len * sizeof(int));
|
int* array = malloc(len*sizeof(int));
|
||||||
|
|
||||||
numbers = addToTree(NULL, &number, sizeof(int), compareFct, &isDuplicate);
|
numbers = addToTree(NULL, &number, sizeof(int), compareFct, &isDuplicate);
|
||||||
array[0] = number;
|
array[0] = number;
|
||||||
@ -44,20 +44,15 @@ unsigned int *createNumbers(unsigned int len)
|
|||||||
{
|
{
|
||||||
isDuplicate = 0;
|
isDuplicate = 0;
|
||||||
i--;
|
i--;
|
||||||
}
|
}else{
|
||||||
else
|
|
||||||
{
|
|
||||||
array[i] = number;
|
array[i] = number;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
clearTree(numbers);
|
|
||||||
|
|
||||||
int duplicatePosition1 = rand() % len;
|
int duplicatePosition1 = rand() % len;
|
||||||
int duplicatePosition2 = rand() % len;
|
int duplicatePosition2 = rand() % len;
|
||||||
|
|
||||||
while (duplicatePosition2 == duplicatePosition1)
|
while(duplicatePosition2 == duplicatePosition1){
|
||||||
{
|
|
||||||
duplicatePosition2 = rand() % len;
|
duplicatePosition2 = rand() % len;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -69,19 +64,11 @@ unsigned int *createNumbers(unsigned int len)
|
|||||||
// Returns only the only number in numbers which is present twice. Returns zero on errors.
|
// 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)
|
unsigned int getDuplicate(const unsigned int numbers[], unsigned int len)
|
||||||
{
|
{
|
||||||
unsigned int *copyNumbers = malloc(sizeof(int) * len);
|
qsort(numbers, len, sizeof(int), compareFct);
|
||||||
for (int i = 0; i < len; i++)
|
|
||||||
{
|
for(int i = 0; i < len-1; i++){
|
||||||
copyNumbers[i] = numbers [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];
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user