uni

University stuff
git clone git://git.christosmarg.xyz/uni-assignments.git
Log | Files | Refs | README | LICENSE

commit 8c6c5bb448195311a9879e1b36faf30fd4d1ffdc
parent be326795987d0b0714dced446c2ec48bc2504983
Author: Christos Margiolis <christos@margiolis.net>
Date:   Sun, 26 Jan 2020 13:09:05 +0200

finished assignment

Diffstat:
Massignment-1.5-arrays-pointers-files/documentation/assignment-1.5.pdf | 0
Massignment-1.5-arrays-pointers-files/documentation/assignment-1.5.synctex.gz | 0
Massignment-1.5-arrays-pointers-files/documentation/assignment-1.5.tex | 15++++++++-------
Massignment-1.5-arrays-pointers-files/kcombinations/bin/kcombs | 0
Massignment-1.5-arrays-pointers-files/kcombinations/include/arrhandler.h | 2++
Massignment-1.5-arrays-pointers-files/kcombinations/include/kcombinations.h | 2+-
Massignment-1.5-arrays-pointers-files/kcombinations/obj/kcombinations.o | 0
Massignment-1.5-arrays-pointers-files/kcombinations/src/kcombinations.c | 6+++---
8 files changed, 14 insertions(+), 11 deletions(-)

diff --git a/assignment-1.5-arrays-pointers-files/documentation/assignment-1.5.pdf b/assignment-1.5-arrays-pointers-files/documentation/assignment-1.5.pdf Binary files differ. diff --git a/assignment-1.5-arrays-pointers-files/documentation/assignment-1.5.synctex.gz b/assignment-1.5-arrays-pointers-files/documentation/assignment-1.5.synctex.gz Binary files differ. diff --git a/assignment-1.5-arrays-pointers-files/documentation/assignment-1.5.tex b/assignment-1.5-arrays-pointers-files/documentation/assignment-1.5.tex @@ -258,13 +258,14 @@ $ make clean Από το main.c καλούνται αρχικά οι συναρτήσεις δημιουργίας των παραθύρων που θα εμφανιστούν στην οθόνη και στην συνέχεια καλούνται οι συναρτήσεις δημιουργίας των πινάκων $Μ \times N$, για το ναρκοπέδιο και για τον πίνακα που έχει "κρυμμένα" τα κελιά αντίστοιχα. - Τέλος από την main καλείται η συνάρτηση που θα ξεκινήσει το παιχνίδι. + Τέλος από την main καλείται η συνάρτηση που θα ξεκινήσει το παιχνίδι και την μουσική. - Οι συναρτήσεις για τον ορισμό στηλών, γραμμών, και αριθμό των ναρκών βρίσκονται στο settings.c. - % όρια διαστάσεων κλπ + Οι συναρτήσεις για τον ορισμό στηλών, γραμμών, και αριθμό των ναρκών βρίσκονται στο settings.c. + Τα όρια των διαστάσεω που μπορεί να δώσει ο χρήστης καθορίζονται από το μέγεθος της οθόνης του, το + οποίο αποθηκεύεται στις μεταβλητές yMax και xMax. Στο wins.c υπάρχουν όλες οι συνάρτησεις δημιουργίας παραθύρων. Στο minesweeper.c εκτελούνται όλες οι συναρτήσεις δημιουργίας πινάκων, τοποθέτησεις ναρκών, - μέτρημα των βομβών στα γειτονικά κελιά, καθώς και γέμισμα των κενών θέσεων τους. + μέτρημα των ναρκών στα γειτονικά κελιά, καθώς και γέμισμα των κενών θέσεων τους. Έπειτα, στο gameplay.c εκτελείται το παιχνίδι - αρχικά τυπώνεται ο πίνακας και το περίγραμμα που υπάρχει ανάμεσα σε κάθε κελί ώστε να είναι πιο εμφανίσιμο και πιο εύχρηστο το παιχνίδι. Προκειμένου @@ -300,8 +301,8 @@ $ make clean \item Εξουδετέρωση νάρκης (μόνο αν το κελί είναι ήδη flagged) \end{itemize} Σε περίπτωση όμως που ο χρήστης κάνει flag ένα κελί που δεν περιέχει νάρκη, και προσπαθήσει να βγάλει την νάρκη, - θα χάσει. Οπότε το παιχνίδι νικιέται \textit{μόνο} όταν ο χρήστης βγάλει όλες τις νάρκες από το πεδίο, και όχι όταν - ανοίξει όλα τα κελιά που δεν έχουνε νάρκες, όπως συμβαίνει στον ναρκαλιευτή των Windows. + ή ανοίξει κελί το οποίο περιέχει νάρκη, θα χάσει. Οπότε το παιχνίδι νικιέται \textit{μόνο} όταν ο χρήστης βγάλει + όλες τις νάρκες από το πεδίο, και όχι όταν ανοίξει όλα τα κελιά που δεν έχουνε νάρκες, όπως συμβαίνει στον ναρκαλιευτή των Windows. Συνοπτικά, τα υπόλοιπα αρχεία χειρίζονται ορισμένες λειτουργίες του παιχνιδιού, όπως την κίνηση από κελί σε κελί, τον χειρισμό των εμφανίσεων διαφόρων μηνυμάτων στην οθόνη, και τον ήχο. Συγκεκριμένα για τον ήχο χρησιμοποίησα την @@ -323,7 +324,7 @@ $ make clean Τέλος, όσο αφορά τον ναρκαλιευτή, θα ήθελα να σημειώσω οτι έχει πολύ περιθώριο για βελτιώση (και λίγο καθαρισμό στον κώδικα), και πολλές λειτουργίες, όπως ο ήχος και το multithreading, τις έβαλα περισσότερο πειραματικά, οπότε είναι αρκετά πιθανό να περιέχουν τυχόν κακές πρακτικές ή και λάθη, αλλά θεώρησα ότι ήταν μία καλή ευκαιρία για πειραματισμό. Ένα πρόβλημα το οποίο δεν κατάφερα - να λύσω ήταν το να κάνει αυτόματο resize το παράθυρο σε περίπτωση που αλλάξει το μέγεθος του terminal. Μία λειτουργία που + να λύσω ήταν το να κάνουν αυτόματο resize τα παράθυρα σε περίπτωση που αλλάξει το μέγεθος του terminal. Μία λειτουργία που θα βάλω στο μέλλον επίσης είναι να δίνεται η επιλογή στον χρήστη να ξαναπαίξει αν θέλει, πιθανώς πατώντας το κουμπί r (restart), καθώς και να βάλω χρώματα στους αριθμούς, ώστε να είναι πιο ευδιάκριτοι και να είναι πιο ξεκούραστο στο μάτι το πρόγραμμα. diff --git a/assignment-1.5-arrays-pointers-files/kcombinations/bin/kcombs b/assignment-1.5-arrays-pointers-files/kcombinations/bin/kcombs Binary files differ. diff --git a/assignment-1.5-arrays-pointers-files/kcombinations/include/arrhandler.h b/assignment-1.5-arrays-pointers-files/kcombinations/include/arrhandler.h @@ -10,4 +10,6 @@ void quicksort(int *, int, int); int partition(int *, int, int); void swap(int *, int *); +int find_pos(int *, int, int); + #endif \ No newline at end of file diff --git a/assignment-1.5-arrays-pointers-files/kcombinations/include/kcombinations.h b/assignment-1.5-arrays-pointers-files/kcombinations/include/kcombinations.h @@ -17,7 +17,7 @@ void combinations(int *, int *, int *, int, int, int, int, int, int *, int *, in bool even_calc(int *, int, int, int); bool sum_comb_calc(int *, int, int, int); -int frequency(int *, int *, int *, int); +void frequency(int *, int *, int *, int, int); long int combinations_count(int, int); long double factorial(int); void print_other(int, int, int, int, int, int *, int *); diff --git a/assignment-1.5-arrays-pointers-files/kcombinations/obj/kcombinations.o b/assignment-1.5-arrays-pointers-files/kcombinations/obj/kcombinations.o Binary files differ. diff --git a/assignment-1.5-arrays-pointers-files/kcombinations/src/kcombinations.c b/assignment-1.5-arrays-pointers-files/kcombinations/src/kcombinations.c @@ -92,7 +92,7 @@ void combinations(int *arr, int *currComb, int *freqArr, int start, int end, int printf("%d ", *(currComb + j)); if (j == K - 1) { - frequency(freqArr, currComb, arr, N); + frequency(freqArr, currComb, arr, N, K); (*printed)++; printf("\n"); } @@ -133,11 +133,11 @@ bool sum_comb_calc(int *arr, int K, int y1, int y2) } -int frequency(int *freqArr, int *currComb, int *arr, int N) +void frequency(int *freqArr, int *currComb, int *arr, int N, int K) { int pos, i; - for (i = 0; i < N; i++) + for (i = 0; i < K; i++) { pos = find_pos(arr, N, *(currComb + i)); (*(freqArr + pos))++;