From 81e1483e9ec43d67fc0427d7bcdaa760bd999435 Mon Sep 17 00:00:00 2001 From: F A Date: Mon, 8 Dec 2025 14:00:19 +0100 Subject: [PATCH] fertig --- bintree.c | 131 +++++++++++++++++++++++++++++++++++++++------- bintree.o | Bin 0 -> 6805 bytes doble.exe | Bin 0 -> 83739 bytes doble_initial.exe | Bin 0 -> 67469 bytes highscore.o | Bin 0 -> 8673 bytes highscores.txt | 9 ++++ main.o | Bin 0 -> 5993 bytes makefile | 56 ++++++++++++++++---- numbers.c | 91 ++++++++++++++++++++++++++------ numbers.o | Bin 0 -> 6249 bytes stack.c | 47 +++++++++-------- stack.h | 16 +++--- stack.o | Bin 0 -> 3991 bytes test_numbers.c | 49 +++++++++++++++++ test_numbers.exe | Bin 0 -> 74882 bytes test_stack.c | 41 +++++++++++++++ test_stack.exe | Bin 0 -> 61431 bytes timer.o | Bin 0 -> 3108 bytes 18 files changed, 368 insertions(+), 72 deletions(-) create mode 100644 bintree.o create mode 100644 doble.exe create mode 100644 doble_initial.exe create mode 100644 highscore.o create mode 100644 main.o create mode 100644 numbers.o create mode 100644 stack.o create mode 100644 test_numbers.c create mode 100644 test_numbers.exe create mode 100644 test_stack.c create mode 100644 test_stack.exe create mode 100644 timer.o diff --git a/bintree.c b/bintree.c index 5cf82a9..642e3fc 100644 --- a/bintree.c +++ b/bintree.c @@ -1,36 +1,129 @@ +#include #include -#include "stack.h" #include "bintree.h" -//TODO: binären Suchbaum implementieren -/* * `addToTree`: fügt ein neues Element in den Baum ein (rekursiv), - * `clearTree`: gibt den gesamten Baum frei (rekursiv), - * `treeSize`: zählt die Knoten im Baum (rekursiv), - * `nextTreeData`: Traversierung mit Hilfe des zuvor implementierten Stacks. */ +// -------------------------- +// Hilfsfunktion für Vergleich von unsigned int +// -------------------------- +static int compareUint(const void *a, const void *b) +{ + unsigned int x = *(unsigned int *)a; + unsigned int y = *(unsigned int *)b; + if (x < y) return -1; + if (x > y) return 1; + return 0; +} -// Adds a copy of data's pointer destination to the tree using compareFct for ordering. Accepts duplicates -// if isDuplicate is NULL, otherwise ignores duplicates and sets isDuplicate to 1 (or to 0 if a new entry is added). +// -------------------------- +// addToTree +// -------------------------- TreeNode *addToTree(TreeNode *root, const void *data, size_t dataSize, CompareFctType compareFct, int *isDuplicate) { + if (!compareFct) + compareFct = compareUint; + if (!root) + { + TreeNode *node = malloc(sizeof(TreeNode)); + if (!node) return NULL; + node->data = malloc(dataSize); + if (!node->data) + { + free(node); + return NULL; + } + memcpy(node->data, data, dataSize); + node->left = node->right = NULL; + if (isDuplicate) *isDuplicate = 0; + return node; + } + + int cmp = compareFct(data, root->data); + if (cmp == 0) + { + if (isDuplicate) *isDuplicate = 1; + return root; + } + else if (cmp < 0) + root->left = addToTree(root->left, data, dataSize, compareFct, isDuplicate); + else + root->right = addToTree(root->right, data, dataSize, compareFct, isDuplicate); + + return root; } -// Iterates over the tree given by root. Follows the usage of strtok. If tree is NULL, the next entry of the last tree given is returned in ordering direction. -// Use your implementation of a stack to organize the iterator. Push the root node and all left nodes first. On returning the next element, -// push the top node and push all its left nodes. -void *nextTreeData(TreeNode *root) -{ - -} - -// Releases all memory resources (including data copies). +// -------------------------- +// clearTree +// -------------------------- void clearTree(TreeNode *root) { - + if (!root) return; + clearTree(root->left); + clearTree(root->right); + free(root->data); + free(root); } -// Returns the number of entries in the tree given by root. +// -------------------------- +// treeSize +// -------------------------- unsigned int treeSize(const TreeNode *root) { + if (!root) return 0; + return 1 + treeSize(root->left) + treeSize(root->right); +} +// -------------------------- +// nextTreeData (In-Order Traversal mit Stack) – minimal +// -------------------------- +#include "stack.h" +void *nextTreeData(TreeNode *root) +{ + static StackNode *stack = NULL; + static TreeNode *current = NULL; + + if (root) current = root; + + while (current) + { + stack = push(stack, current); + current = current->left; + } + + if (!stack) return NULL; + + TreeNode *node = top(stack); + stack = pop(stack); + + current = node->right; + return node->data; +} + +// -------------------------- +// Zusätzliche Hilfsfunktion contains für numbers.c +// -------------------------- +int contains(TreeNode *root, unsigned int value) +{ + if (!root) return 0; + unsigned int nodeValue = *(unsigned int *)root->data; + if (value == nodeValue) return 1; + if (value < nodeValue) return contains(root->left, value); + return contains(root->right, value); +} + +// -------------------------- +// Hilfsfunktion insert für numbers.c +// -------------------------- +TreeNode* insert(TreeNode *root, unsigned int value) +{ + int isDup = 0; + return addToTree(root, &value, sizeof(unsigned int), compareUint, &isDup); +} + +// -------------------------- +// Hilfsfunktion freeTree für numbers.c +// -------------------------- +void freeTree(TreeNode *root) +{ + clearTree(root); } \ No newline at end of file diff --git a/bintree.o b/bintree.o new file mode 100644 index 0000000000000000000000000000000000000000..a9c7b28fef9d6323cea2e3527a82904aa21090d3 GIT binary patch literal 6805 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 literal 0 HcmV?d00001 diff --git a/doble.exe b/doble.exe new file mode 100644 index 0000000000000000000000000000000000000000..de16a860f885ccc1223ff5d513abc624fdbcaab6 GIT binary patch literal 83739 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 KUVi7EoBtce!s*HY literal 0 HcmV?d00001 diff --git a/highscores.txt b/highscores.txt index 4edd5a7..87fa3e1 100644 --- a/highscores.txt +++ b/highscores.txt @@ -1 +1,10 @@ +player_name1;19827 +player_name3;6985 +jannik;5979 +jannik;4991 +jannik;4980 player1;3999 +player_name;3995 +player_name2;3994 +player_name1;3993 +player_name3;3990 diff --git a/main.o b/main.o new file mode 100644 index 0000000000000000000000000000000000000000..30eb06f7cb89bddb67af518a17c3c025e7072a80 GIT binary patch literal 5993 zcmbtYUu+!38K2#~x!d#kzvK81kgSRAI1t}CiQ@z(0VmGExj?WmRtPmc)^~e%o80YP zclT@)HBBl5(#ee)SE-tZsLe~oOA&qG0R%#6padi;`2m$Ypf(jyQl+gBs*0;dq~ABQ zySHaY<)I_(%s0R9H{bWopPilA^h=Ed(}h+-hL{u}QCnNEnas12NXTJ$zHH+4O;9Lg z^0{bQwN)SQPU0Auyd0gitUKxa*cs%RwFVV|kkjlb3bS-aaELvL6 zTLs?TEu0&MVvG!p#fEF!egQu34iYlw@ah?_`A}@fNDc8k#3w~+Ag~9#U3?^64c2}R zM*iX0gQ4WS;oUBUl|5kZD)2;@3rsvdu(x{;2mVLS{EqCcVRVAM8x1uO_q(^Y!;?sH z=GJB7IL98SjqegDCxJKP#0NtJ_QnoPCn}#O7XLPss65_$HGT_C+#F3T#hVkAD~Ypg zViJ|#-atHYHonSH32P2oiQhWM)QhWi<$o=nx+Rn^F9C7!-JxgS@msG;6_ywm*s8+D*y?$0?Mr=T~v z#MylBbCt)HL}hw_X~72!C|NwEi1r9{Zy>SM`3BBqVu|(f_6k^^s9b~4HZWIL{LTJ4 z42?lG$W-w!xq&e`QHkG3T#a7`m|Ts2!i!ZbZngq_3!*O#VO!RmFSUj;hz4kk*DiD_oy8iO;5rXOAg*DJm@KqHm-Crj~b z`{JLJa&)UkoW~Mb` zRKYG_I;!PUIZjqi6bl7gNf%2cEpIDxMH6UKU@xc6f`v3lCyJ)2ovuA_cFAL#QF-d)y5xS3t&n4$B-Y>P{#> zg?*5M1rSN&BS)r{@f~}V9lN4CqeIGI!7dxx0UX$!P*KfP?toED6%ADx%#wSsNeDA1 zp-DGMLNJw6O;UFh5J?W@i$+#qS=q4ktf8e9-LOGJs~QG~AuCrjZ5TE`EkKzvz}Z|5 z)llkQM@NF}fy})m2hzpzY+fT$AdtxyRdCrHU@jfJDXAA{%NZimp1Q5@_BJOc^J+@V z74tAHgl>r-NJxv^`tZbKaYAEV1OPde*Hkm%EjuE1JOOZkL@aeq^Whtg11w-hXcDq| z6lLh*ypJR{{+Kt00MkBPe%WgrQqxrp5hL_hU~I)z3x9-~fFnRcS7Ce@T_wu?eSt-BLiX1nAv!r(;jzuOcGLa?jo2}?Ht+Bj)95G zlOo@tj=%;*b~<1}H28i-c6H$3iOXYR+MBE4jo5c-`K{ApK~t@=simhhc-hhx+1-ru zBQ5{tv{<$@bHXTL}9n0IkGPe_-Jo#9?!8)Eb25WT%ixEL&%#X`w`3eT+aJ$#6X(`{1M z%3bBWabN>vk%%*M;6|Wiq7C91hAn5bN7xs6ATrS=cES+!l1Svihy)v80IGyGkw}k> z+#p@c4Ml~Ax}bdon{Vx!XxrZ<08#eAJwc9z9ju4$qYv~nRmpYzERcw+7r|CfaBCND zR=qZ|A@4GKb=sWkfAxfMcQMX5gwELMDIl3O}`~mCiMjjeE?nsbR!f6mXYa96KUA3yJ zEg0(U@ZgGr5oEcW`M)DBhUGo5yeM!Ffh-8Ze;OOGz_kkx2%E)6LH-FmBFIg_&p;wK zG5ZR$Z!nXQ-i&-Iz;=QVrfwR3i`LE2@DS~mkI_bX5!Qhi5ER;l#nZI=DOz8k!hz#7 z^f?XB(U!l^uuZqbXoI|;-U}Q_9;DsK{SFPkNQFxavO>ehXb5cP5Dv;VZ4JsjwEgW@ zXvdp$HRK5(mvC~JV@HXFQ zjyU@eNH%`eptS6?UWD?I@$pe*z%g1XTKdAErR4@qZEk40a;U7sA#e71<#FA3|B%%H=YsV^+82i65cuZUTX+mdq|t%!E;`KY=!(@ zCgClQV+TOm!mx)S$Cv|T9&)aQ?}5|eWeJ&3MuokT9|U>(Ky{e(7mn1!)_@u7Y$Qll~6U{Y+|rcb5BT2Z{G>n}_Z2umd1% zXDtqagcq^^IRa9YNmC%jm;@QYOQr;RSHkTG|CmV36W2C-TAY2Z#qR~z-t9?>r$sBs zjgWnicQffBPr~mpwiU<}z)*V0J-*lPnz|l^PYqpyu3$<8?(U1 ziAT^68ZHfa60Qx7je1fw(!(A$;Yk=Xj|F?a37!a1JPccKEa72!4=Z_CG^4}GoTqPY z6OwgzFb8uBY>P<%A0n)TJEa8x@qJ<(wo4#u#Y6o6yU>Ir;AaM-tS0}zE>Hres&gg( ze=eAsJ9B*hxL{goLNz6m?3C{Sur`?V=PCgZ=Yrtl@T-JN!dC8WgJX!mk(Av(s)&2J zsUj$S&8v{R-r-o`Bp1Qc22U=6yJIcFFPVtB9QTeovq$@Yc9z(SL-!b@HIE}HMje ub) return 1; + return 0; +} + +// Hilfsfunktion: Prüft, ob Wert schon im Baum ist +static int contains(TreeNode *root, unsigned int value) { + if (!root) return 0; + unsigned int val = *(unsigned int*)root->data; + if (val == value) return 1; + if (value < val) return contains(root->left, value); + return contains(root->right, value); +} + +// Erzeugt ein Array von len Zahlen zwischen 1 und 2*len, alle einzigartig, +// außer eine Zahl wird dupliziert. +unsigned int *createNumbers(unsigned int len) { + if (len == 0) return NULL; + + unsigned int *numbers = malloc(len * sizeof(unsigned int)); + if (!numbers) return NULL; + + TreeNode *tree = NULL; + srand((unsigned int)time(NULL)); + + for (unsigned int i = 0; i < len - 1; i++) { // alle außer die Duplikate + unsigned int value; + do { + value = rand() % (2 * len) + 1; + } while (contains(tree, value)); + + int isDup = 0; + tree = addToTree(tree, &value, sizeof(value), compareInt, &isDup); + numbers[i] = value; + } + + // Dupliziere zufällig eine Zahl + unsigned int dupIndex = rand() % (len - 1); + numbers[len - 1] = numbers[dupIndex]; + + // Speicher freigeben + clearTree(tree); + + return numbers; +} + +// Sortiert das Array und findet die einzige doppelte Zahl +unsigned int getDuplicate(const unsigned int *numbers, unsigned int len) { + if (!numbers || len < 2) return 0; + + // Kopiere Array, da wir sortieren müssen + unsigned int *copy = malloc(len * sizeof(unsigned int)); + if (!copy) return 0; + memcpy(copy, numbers, len * sizeof(unsigned int)); + + // qsort verwenden + qsort(copy, len, sizeof(unsigned int), compareUnsigned); + + // Durchlauf und Nachbarn vergleichen + unsigned int dup = 0; + for (unsigned int i = 1; i < len; i++) { + if (copy[i] == copy[i - 1]) { + dup = copy[i]; + break; + } + } + + free(copy); + return dup; } \ No newline at end of file diff --git a/numbers.o b/numbers.o new file mode 100644 index 0000000000000000000000000000000000000000..1135c4e27a7eefd36537ad5c5a07cd7a721f8dab GIT binary patch literal 6249 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 #include "stack.h" -//TODO: grundlegende Stackfunktionen implementieren: -/* * `push`: legt ein Element oben auf den Stack, - * `pop`: entfernt das oberste Element, - * `top`: liefert das oberste Element zurück, - * `clearStack`: gibt den gesamten Speicher frei. */ +// Pushes data onto the stack and returns new stack top +StackNode *push(StackNode *stack, void *data) { + StackNode *node = malloc(sizeof(StackNode)); + if (!node) return stack; // allocation failed → leave stack unchanged -// Pushes data as pointer onto the stack. -StackNode *push(StackNode *stack, void *data) -{ + node->data = data; + node->next = stack; + return node; // new top } -// Deletes the top element of the stack (latest added element) and releases its memory. (Pointer to data has to be -// freed by caller.) -StackNode *pop(StackNode *stack) -{ +// Removes the top element, frees node (NOT data), returns new top +StackNode *pop(StackNode *stack) { + if (stack == NULL) return NULL; + StackNode *next = stack->next; + free(stack); + + return next; // new top } -// Returns the data of the top element. -void *top(StackNode *stack) -{ - +// Returns data of top node or NULL +void *top(StackNode *stack) { + if (!stack) return NULL; + return stack->data; } -// Clears stack and releases all memory. -void clearStack(StackNode *stack) -{ - -} \ No newline at end of file +// Frees entire stack (NOT data!) +void clearStack(StackNode *stack) { + while (stack != NULL) { + StackNode *next = stack->next; + free(stack); + stack = next; + } +} diff --git a/stack.h b/stack.h index f7d542d..0d3f1e8 100644 --- a/stack.h +++ b/stack.h @@ -1,19 +1,23 @@ #ifndef STACK_H #define STACK_H -/* A stack is a special type of queue which uses the LIFO (last in, first out) principle. -This means that with each new element all other elements are pushed deeper into the stack. -The latest element is taken from the stack. */ +/* A stack is a special type of queue which uses the LIFO (last in, first out) principle. + This means that with each new element all other elements are pushed deeper into the stack. + The latest element is taken from the stack. */ #include -//TODO: passenden Datentyp als struct anlegen +// passenden Datentyp als struct anlegen +typedef struct StackNode { + void *data; // Zeiger auf beliebige Daten + struct StackNode *next; // Zeiger auf das nächste Element im Stack +} StackNode; // Pushes data as pointer onto the stack. StackNode *push(StackNode *stack, void *data); -// Deletes the top element of the stack (latest added element) and releases its memory. (Pointer to data has to be -// freed by caller.) +// Deletes the top element of the stack (latest added element) and releases its memory. +// (Pointer to data has to be freed by caller.) StackNode *pop(StackNode *stack); // Returns the data of the top element. diff --git a/stack.o b/stack.o new file mode 100644 index 0000000000000000000000000000000000000000..4cc2f4b6052a02f14f9c7c22de66f02262b783c8 GIT binary patch literal 3991 zcmcgvU2GIp6ux(6?(US?wo{hSmY;O^Q6TC5w3JfHUv0r|RY(I8(O~L!JMAt^ch=om zS{jKaO^}Afl!ON#h#|c2qK`&MCDC9sz8VwblP{2%)W2v&MH0g@g_mcqO=*!zHY-tQj_g&;50Q|AcqZ5Tryct80( zlk?2MR9A0^c!Co0GYhF89`JT!OEtmTGf_g`F@z4n3trEj8VS%{NUsC$rq9y@-k!Z7 z9`+}R#ya8c_V(3j2r;35hgReDg$FzeUdJ0kuF${Hfz-Zm|84{2J>dNs>fgZNsm#KI z%={1O%)&73GFOh8%Nrqon7MMQEwfiwd^kAy=nTmKqv0mAbj-!3kS z*o$>Sb(QHSG?l`{g|MbD)Yj{;?=N5mg5_mMxbLvM1*y$1??Y)pnupE7ASyr-9X@`_ z8tU3>b?r`eC(~A9+N&1rgE_ZscS9vx&gBml-JDy@T8SyL8C|#^0uT%t2&Iu+K3gVw zr7&lYc|_gTSp*x^qmEmgvUpZ4Rti%^d%`LdJ+QEvg)5Y3CGVC!D@@ZEH)?_{a5PMz zx~%g)P+gmFtK*JMsHROiZWdZIHQt)9=X=pq3^M^cSmTE{W*{b75wD!a))Z89vPNeN z0N;*ElZrStS+;GWwJYX}P>XP<#_6o%xH+P2P+Cw?M9UaXO;gUXv*nXsHg}FtD}oDx za!?e6UcU!a1+M{X6Ngtx^M}6C@=KL>Y3n*+&%^TdfRpLDB| z8`k?_NlOVG%ox^#4Rb&`?1OE=`(bYM9YnKnGiY{gsanYs%6I_ZPX?mbxibp}5$AJC z*)Hs!a#dH0?u1PuG8m!TiD4WvRM<}nBWhFs7P{ZqXN<%Z*sy93QT32UYvdY5aQa|D zSTixU=p%8MX-2S!w$P{axS@7z>}a8Dqh>2C;Cl2jgcBhRajG^MhEPy&SpzX3lmWD+ z8ZDNjhugUy+h^=(KhTcU#;|fEF4Rp@4V~Z7jtvjAy}>=24T@D*sW4|GE?9G%)v~%# zgjo9|BO!5^G&wY!GtvnO77?WWjD}AsH~ZNgC>d~ZFH%bXY-+>;mWx0F(4pWiS%jnj zZe|YvksmSp9kah6(I`?`iZqCZLA9Q>{>JogSSwL9>P4PoW+eRqi+#-K^K5H@=}W9b zSWcsbu_fQO8Eo^cEwHsjQjAvFwk~EYv2`idu*8~|*xEN4y`bpOJAR^$+?Tn32 zo`o2xT8vaJMyftW>OW(QmffjxcKQfBO;Wi$+@em_voEBa!gy-BP@I}cd9LeJAP)51 zafGh7CpFvGJJ#Ein1RG;ySsssbE?5mVUWRKMVTjfU+2nRG7pvsh!0?RXsF-X>BlO$ zmBMVIV&@ZO`+U078mtx^&l;b~#gKtrle@BHC9~=VVOb9C;I-%PnktMA-Gs3!4 zB0QqP7u$ea1->l%A>YW+VTpzSp)VyTA%}|$coCTKc8>N)bPqcx%DPDW5yh)2G2AP+B5<$q8M*M70qek-Fo6{2l#Z`)bCguvxysyD^Qz`zHtdy(13U{_>3r8518-5j^Un;!|IkLm@ zzF);RkxEzg1 +#include +#include "numbers.h" + +int main(void) +{ + printf("=== TEST: createNumbers & getDuplicate ===\n"); + + unsigned int len = 20; + unsigned int *arr = createNumbers(len); + + if (!arr) + { + printf("FAILED: createNumbers returned NULL\n"); + return 1; + } + + printf("Array created: "); + for (unsigned int i = 0; i < len; i++) + printf("%u ", arr[i]); + printf("\n"); + + unsigned int dup = getDuplicate(arr, len); + + if (dup == 0) + { + printf("FAILED: getDuplicate returned 0 (no duplicate found)\n"); + free(arr); + return 1; + } + + // Count occurrences manually as safety check + unsigned int count = 0; + for (unsigned int i = 0; i < len; i++) + if (arr[i] == dup) + count++; + + if (count != 2) + { + printf("FAILED: duplicate=%u occurs %u times (expected 2)\n", dup, count); + free(arr); + return 1; + } + + printf("SUCCESS: duplicate number is %u and appears exactly twice.\n", dup); + + free(arr); + return 0; +} \ No newline at end of file diff --git a/test_numbers.exe b/test_numbers.exe new file mode 100644 index 0000000000000000000000000000000000000000..2d91b7bff3b9da30706855c9091dccc019af706c GIT binary patch literal 74882 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 +#include +#include "stack.h" + +int main() { + StackNode *stack = NULL; + + // Einige Integer dynamisch alloziieren + int *a = malloc(sizeof(int)); + int *b = malloc(sizeof(int)); + int *c = malloc(sizeof(int)); + *a = 10; *b = 20; *c = 30; + + stack = push(stack, a); + stack = push(stack, b); + stack = push(stack, c); + + // Test top() + printf("Top = %d (expected 30)\n", *(int *)top(stack)); + + // pop() + stack = pop(stack); // removed 30 + free(c); // data gehört Benutzer! + + printf("Top = %d (expected 20)\n", *(int *)top(stack)); + + stack = pop(stack); free(b); // removed 20 + stack = pop(stack); free(a); // removed 10 + + // stack should now be empty + if (stack == NULL) { + printf("Stack empty ok\n"); + } else { + printf("Error: stack not empty!\n"); + } + + // Cleanup just in case + clearStack(stack); + + return 0; +} \ No newline at end of file diff --git a/test_stack.exe b/test_stack.exe new file mode 100644 index 0000000000000000000000000000000000000000..50030d5d9df946ae2f1da6e6cac8bd937b1960ae GIT binary patch literal 61431 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 thn#5WrsiYEwS9>01!l8V*s-*<{{aM=&e8w? literal 0 HcmV?d00001