diff --git a/highscores.txt b/highscores.txt index e69de29..bc34e5a 100644 --- a/highscores.txt +++ b/highscores.txt @@ -0,0 +1,3 @@ +Player1;2996 +Player2;2988 +Player3;2939 diff --git a/makefile b/makefile index e0e6a70..f4824e5 100644 --- a/makefile +++ b/makefile @@ -39,8 +39,8 @@ stackTests: stack.o test_stack.c $(unityfolder)/unity.c $(CC) $(CFLAGS) -I$(unityfolder) -o runStackTests test_stack.c stack.o $(unityfolder)/unity.c echo "needs to be implemented" -numbersTests: numbers.o numbersTests.c $(unityfolder)/unity.c - $(CC) $(CFLAGS) -I$(unityfolder) -o runNumbersTests numbersTests.c numbers.o $(unityfolder)/unity.c +numbersTests: numbers.o numbersTests.c bintree.c bintree.h stack.o $(unityfolder)/unity.c + $(CC) $(CFLAGS) -I$(unityfolder) -o runNumbersTests numbersTests.c numbers.o bintree.o stack.o $(unityfolder)/unity.c # -------------------------- # Clean diff --git a/numbers.c b/numbers.c index a7531cc..ce7a5ca 100644 --- a/numbers.c +++ b/numbers.c @@ -51,7 +51,7 @@ unsigned int *createNumbers(unsigned int len){ 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) { @@ -102,4 +102,31 @@ unsigned int getDuplicate(const unsigned int numbers[], unsigned int len) return duplicate; +} +*/ +unsigned int getDuplicate(const unsigned int *numbers, unsigned int len) +{ + TreeNode *root = NULL; + int buffer = 0; + int counter = 0; + for(int i = 0; i < len; i++) + { + int isDuplicat = 0; + root = addToTree(root, numbers + i, sizeof(unsigned int), checkIfBigger, &isDuplicat); + if(isDuplicat) + { + buffer = *(numbers + i); + counter += 1; + } + } + clearTree(root); + if(counter == 1) + return buffer; + return 0; +} + +//Just a compare function needed for getDuplicate +int checkIfBigger(const void *char1, const void *char2) +{ + return *((int *)char1) - *((int *)char2); } \ No newline at end of file diff --git a/numbers.h b/numbers.h index 2315581..258668e 100644 --- a/numbers.h +++ b/numbers.h @@ -1,6 +1,8 @@ #ifndef NUMBERS_H #define NUMBERS_H +#include "bintree.h" + // 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. @@ -9,4 +11,6 @@ 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); +//Just a compare function needed for getDuplicate +int checkIfBigger(const void *char1, const void *char2); #endif \ No newline at end of file diff --git a/numbersTests.c b/numbersTests.c index d120960..e5dd7aa 100644 --- a/numbersTests.c +++ b/numbersTests.c @@ -42,6 +42,7 @@ void test_getDouplicateReturnsZeroWhenThereAreMultipleDuplicates(void){ void test_CreateNumbersCreatesDuplicatein2LenArray(void){ unsigned int *testArray = createNumbers(2); unsigned int testValue = getDuplicate(testArray, 2); + printf("\nTestvalue: %d\n", testValue); if(!testValue) testValue = 0; diff --git a/runNumbersTests.exe b/runNumbersTests.exe index 2df45cc..52fa712 100644 Binary files a/runNumbersTests.exe and b/runNumbersTests.exe differ