/* Ε.Α.Π. Πληροφορική Αθανασίου Κωνσταντίνος Α.Μ. 170612 ΗΛΕ-42 2η Γραπτή Εργασία - ΠΛΗ10 Υποεργασία 2.B.: Ταξινόμηση Bead Sort ή Gravity Sort */ #include /* Συμπερίληψη της βιβλιοθήκης για λειτουργίες εισόδου/εξόδου (printf, scanf)*/ #define N 10 /* Σταθερά: Πλήθος στοιχείων του πίνακα Α (είσοδος) και Β (έξοδος)*/ #define M 50 /* Σταθερά: Μέγιστη τιμή κονταριών (ύψος) που επιτρέπεται, max(A[i])*/ int main() { /* Βήμα 1: Ανάγνωση των στοιχείων του πίνακα A */ int A[N]; /* Επανάληψη για την εισαγωγή των Ν στοιχείων του πίνακα Α*/ for(int i=0; i M) { /* Ενημέρωση χρήστη και επανεισαγωγή τιμής αν δεν είναι εντός του ορίου [0, M]*/ printf("Η τιμή που εισάγετε πρέπει να είναι μεταξύ 0 και %d. Επαναλάβετε την είσοδο.\n", M); printf("Εισάγετε το στοιχείο %d (επιτρεπόμενες τιμές από 0 έως και %d): ", i+1, M); scanf("%d", &A[i]); } } /* Βήμα 2: Υπολογισμός του πίνακα counts*/ /* Δήλωση του πίνακα counts (κοντάρια) με μέγεθος M.*/ /* Οι δείκτες 0 έως M-1 αντιπροσωπεύουν τις τιμές 1 έως M.*/ int counts[M] = {0}; /* Τοποθέτηση "χαντρών" στα αντίστοιχα κοντάρια.*/ for(int i=0; i= threshold) { /* Κάθε κοντάρι που ικανοποιεί τη συνθήκη αντιπροσωπεύει μία μονάδα */ /* στην ταξινομημένη τιμή B[k]*/ counter++; } } /* Το k-οστό στοιχείο του ταξινομημένου πίνακα B ισούται με τον τελικό μετρητή*/ /* Το B[0] (k=0) παίρνει τη μικρότερη τιμή*/ B[k] = counter; } /* Βήμα 4: Εμφάνιση των στοιχείων του πίνακα B */ for(int i=0; i