From 74b541a1a07aa00eb360266ed2b72228380d47ae Mon Sep 17 00:00:00 2001 From: Fabrice Date: Fri, 5 Dec 2025 08:05:57 +0100 Subject: [PATCH] numbers.c angafangen --- main.c | 2 +- numbers.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/main.c b/main.c index 34163d0..9ede66b 100644 --- a/main.c +++ b/main.c @@ -67,7 +67,7 @@ int main(int argc, char *argv[]) userInput = inputNumber("Welche Zahl kommt doppelt vor: "); measuredSeconds = stopTimer(); - duplicate = getDuplicate(numbers, numberOfElements); + duplicate = getDuplicate(numbers, numberOfElements+1); // check result and update highscores if(userInput == duplicate) diff --git a/numbers.c b/numbers.c index f59d9a2..3671c88 100644 --- a/numbers.c +++ b/numbers.c @@ -16,11 +16,60 @@ // creating random numbers. unsigned int *createNumbers(unsigned int len) { + srand(time(NULL)); + unsigned int *numbers = malloc (sizeof(unsigned int) * (len+1)); + unsigned int newNumber; + + for (unsigned int i = 0; i < len; i++) { + int unique = 0; + + while (!unique) { + unique = 1; + newNumber = rand () % (2*len) + 1; + + for (unsigned int j = 0; j < i; j++) { + if (numbers[j] == newNumber) { + unique = 0; + break; + } + } + } + numbers[i] = newNumber; + } + + unsigned int duplicate = numbers[rand () % len]; + numbers[len] = duplicate; + + return numbers; } +int compare (const void *a, const void *b) { + unsigned int *x = a; + unsigned int *y = b; + if (*x < *y) { + return -1; + } + else if (*x > *y) { + return 1; + } + else { + return 0; + } +} // 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(unsigned int numbers[], unsigned int lenPlusOne) { + if (lenPlusOne < 2) { + return 0; + } +qsort(numbers,lenPlusOne, sizeof(unsigned int), compare); + +for (int i = 0; i < lenPlusOne-1; i++) { + if (numbers[i] == numbers [i+1]) { + return numbers[i]; + } +} + return 0; } \ No newline at end of file