ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 1 ο Μέρος

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 1 ο Μέρος"

Transcript

1 Πανεπιστήμιο Κρήτης, Τμήμα Επιστήμης Υπολογιστών 12 Οκτωβρίου 2012 ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία 1 ο Μέρος Ημερομηνία Παράδοσης: Δευτέρα, 12 Νοεμβρίου 2012, ώρα 23:59. Τρόπος Παράδοσης: Χρησιμοποιώντας το πρόγραμμα submit. Πληροφορίες για το πώς λειτουργεί το submit παρέχονται στην ιστοσελίδα του μαθήματος. Γενική Περιγραφή Στην εργασία αυτή σας ζητείται να υλοποιήσετε ένα πρόγραμμα προσομοίωσης μιας κοινωνίας δεινοσαύρων. Οι δεινόσαυροι ήταν σπονδυλωτά ζώα που κυριάρχησαν στο γήινο οικοσύστημα για περισσότερα από 160 εκατομμύρια έτη και πρωτοεμφανίστηκαν πριν περίπου 230 εκατομμύρια έτη. Οι δεινόσαυροι κατηγοριοποιούνται σε χορτοφάγους (0) και σαρκοφάγους (1). Ένας παμφάγος δεινόσαυρος θα θεωρείται σαρκοφάγος. Υπάρχουν πολλά είδη σαρκοφάγων δεινόσαυρων, όπως π.χ. οι: (1) αβελίσαυρος, (2) ακροκανθόσαυρος, (3) αλλόσαυρος, (4) βελοσιράπτορας, (5) τυραννόσαυρος, (6) γιγαντόσαυρος, (7) ερρεράσαυρος, και άλλοι. Αντίστοιχα, μερικοί χορτοφάγοι δεινόσαυροι είναι οι εξής: (1) αετόσαυρος, (2) ιγκουανόδοντας, (3) στεγόσαυρος, (4) τιτανόσαυρος, (5) αργεντινόσαυρος, (6) καμαρόσαυρος, και άλλοι. Κάθε δεινόσαυρος ανήκει σε ένα το πολύ είδος. Στα χρόνια που ζούσαν οι δεινόσαυροι όλες οι ήπειροι ήταν ενωμένες σε μία, την Παγγαία. Δεινόσαυροι ζούσαν σε όλη την Παγγαία, γι αυτό και τα κόκαλά τους ανακαλύφθηκαν σε όλες τις ηπείρους που την αποτελούσαν. Συγκεκριμένα, δεινόσαυροι έχουν βρεθεί (1) στην Παταγονία, (2) στο Κλήβελαντ, (3) στην Ανταρκτική, (4) στην Βόρεια Κορέα, (5) στον Καναδά και αλλού. 1

2 Το ζητούμενο της εργασίας αυτής είναι να προσομοιώσετε μια κοινωνία δεινοσαύρων. Οι δεινόσαυροι μπορεί να συναθροίζονταν σε κοπάδια για προστασία, για μεταναστευτικούς λόγους ή για να παρέχουν προστασία στα μικρά τους. Θεωρήστε ότι κάθε δεινόσαυρος μπορεί να έρθει αντιμέτωπος με πολλούς κινδύνους, π.χ., με έλλειψη τροφής, δυσχερείς καιρικές συνθήκες, να πέσει θύμα άλλων δεινόσαυρων σε διαμάχη μεταξύ τους, κλπ. Στην εργασία αυτή θα θεωρήσουμε πως κάθε δεινόσαυρος ανήκει σε ένα κοπάδι. Τα κοπάδια ταξιδεύουν. Κατά τη διάρκεια τέτοιων ταξιδιών, μπορεί δύο κοπάδια δεινοσαύρων να συναντηθούν και να έρθουν σε διαπληκτισμό μεταξύ τους. Σε αυτή την περίπτωση κάποιοι από τους δεινόσαυρους μπορεί να πεθάνουν στη μάχη. Μετά τη μάχη, οι εναπομείναντες δεινόσαυροι μπορεί να αποτελούν ένα κοινό κοπάδι ή όχι. Επίσης, ανάλογα με τις καιρικές συνθήκες ή τις συνθήκες τροφής κάποια από τα κοπάδια ή κάποιοι δεινόσαυροι σε ένα κοπάδι μπορούν να πεθάνουν. Επιπλέον, νέοι δεινόσαυροι μπορούν να γεννιούνται. Τότε αυτοί αποτελούν νέα μέλη του κοπαδιού στο οποίο ανήκουν οι γονείς τους. Κάποιοι από τους δεινόσαυρους μπορεί να έχουν πτερύγια (και άρα μπορούν να πετάνε), ενώ άλλοι όχι. Αναλυτική Περιγραφή Ζητούμενης Υλοποίησης Το πρόγραμμα σας θα πρέπει να υλοποιεί τις ακόλουθες δομές δεδομένων. Για κάθε δεινόσαυρο υπάρχει ένα struct Dinosaur με τα εξής πεδία: DId: αναγνωριστικό του δεινόσαυρου, μοναδικό για κάθε δεινόσαυρο, ανεξαρτήτως αν αυτός είναι χορτοφάγος ή σαρκοφάγος και ανεξαρτήτως του είδους στο οποίο ανήκει ο δεινόσαυρος. Fed: το πεδίο αυτό είναι 0 αν ο δεινόσαυρος είναι χορτοφάγος και 1 αν είναι σαρκοφάγος. SpieceId: ένας αριθμός που δηλώνει το είδος του δεινόσαυρου, π.χ. αν ο δεινόσαυρος είναι σαρκοφάγος, οι αριθμοί μπορεί να είναι (1) αβελίσαυρος, (2) ακροκανθόσαυρος, (3) αλλόσαυρος, (4) βελοσιράπτορας, (5) τυραννόσαυρος, (6) γιγαντόσαυρος, (7) ερρεράσαυρος ή μεγαλύτεροι για άλλα είδη δεινοσαύρων. SpreadId: αναγνωριστικό του κοπαδιού στο οποίο ανήκει ο δεινόσαυρος. Age: ηλικία του δεινόσαυρου. Strength: αριθμός που εκφράζει τη δύναμη του δεινόσαυρου. Ο αριθμός αυτός μειώνεται κάθε φορά που ο δεινόσαυρος εμπλέκεται σε έναν πόλεμο, ενώ δεινόσαυροι που δεν έχουν αρκετά μεγάλη δύναμη για να ανταπεξέλθουν στον πόλεμο πεθαίνουν. Το πρόγραμμα σας θα πρέπει να διατηρεί μια λίστα η οποία περιέχει πληροφορίες για όλους τους δεινόσαυρους στη Παγγαία. Η λίστα αυτή αποτελείται από κόμβους τύπου struct DNode και λέγεται λίστα δεινοσαύρων. Η λίστα αυτή είναι διπλά συνδεδεμένη και ταξινομημένη ως προς το πεδίο DΙd των δεινοσαύρων που περιέχει. Το struct DNode έχει τα εξής πεδία: struct dinosaur *d: δείκτης σε struct τύπου dinosaur όπου αποθηκεύονται πληροφορίες για τον εν λόγω δεινόσαυρο, 2

3 struct Dnode *prev: δείκτης στο προηγούμενο στοιχείο της λίστας. struct Dnode *next: δείκτης στο επόμενο στοιχείο της λίστας. Η λίστα δεινοσαύρων παρουσιάζεται στο Σχήμα 1. DNode DNode DNode Dinosaur Dinosaur Σχήμα 1 Όπως προαναφέρθηκε, οι δεινόσαυροι κατηγοριοποιούνται είτε ως φυτοφάγοι ή ως σαρκοφάγοι. Πληροφορίες για κάθε κατηγορία αποθηκεύονται στα στοιχεία ενός πίνακα Eater[2], όπως φαίνεται στο Σχήμα 2. Ο πίνακας αυτός ονομάζεται πίνακας διατροφικών κατηγοριών δεινοσαύρων. Eater[0] Eater[1] Dinosaur Σχήμα 2 Τα στοιχεία του πίνακα Eater[2] είναι τύπου Feed (struct Feed). Κάθε ένα από αυτά αποτελείται από τα εξής πεδία: o Έναν δείκτη, SpieceL, ο οποίος δείχνει στο πρώτο στοιχείο μιας απλά συνδεδεμένης λίστας που ονομάζεται λίστα ειδών δεινοσαύρων. Κάθε κόμβος της λίστας περιέχει πληροφορίες για κάποιο είδος δεινόσαυρων. o Έναν δείκτη, SpreadL, ο οποίος δείχνει στο πρώτο στοιχείο μιας συνδεδεμένης λίστας που ονομάζεται λίστα κοπαδιών δεινοσαύρων. Κάθε κόμβος της λίστας αυτής περιέχει πληροφορίες για κάποιο κοπάδι δεινοσαύρων. Η μορφή κάθε στοιχείου του πίνακα διατροφικών κατηγοριών παρουσιάζεται στο Σχήμα 3. SpieceL SpreadL Σχήμα 3 Κάθε στοιχείο της λίστας ειδών δεινοσαύρων είναι ένα struct τύπου SpieceNode που αποτελείται από τα ακόλουθα πεδία: Έναν ακέραιο SpieceId που αποτελεί το αναγνωριστικό του είδους. Για παράδειγμα, στη λίστα ειδών της εγγραφής Eater[0] που αντιστοιχεί σε φυτοφάγους δεινόσαυρους, το αναγνωριστικό ενός στοιχείου της λίστας μπορεί να είναι 1 για τους αβελίσαυρους, 3

4 2 για τους ακροκανθόσαυρους, 3 για τους αλλόσαυρους, 4 για τους βελοσιράπτορες, 5 για τους τυραννόσαυρους, κ.ο.κ. Το αναγνωριστικό είναι μοναδικό για κάθε είδος. Έναν δείκτη SpieceDp που δείχνει στον πρώτο στοιχείο μιας λίστας δεινοσαύρων που ανήκουν σε αυτό το είδος. H λίστα αυτή λέγεται λίστα δεινοσαύρων τύπου SpieceId. Έναν δείκτη next που δείχνει στο επόμενο στοιχείο της λίστας. Η λίστα ειδών δεινοσαύρων είναι ταξινομημένη ως προς το SpieceId. Κάθε στοιχείο της λίστας δεινοσαύρων τύπου SpieceId περιέχει στοιχεία τύπου struct SpieceDin. Το struct αυτό έχει τα ακόλουθα πεδία: struct Dinosaur *d: δείκτης σε struct τύπου Dinosaur που περιέχει πληροφορίες για τον δεινόσαυρο. struct SpieceDin *next: δείκτης στο επόμενο στοιχείο της λίστας. Η λίστα δεινοσαύρων τύπου SpieceId είναι μη ταξινομημένη. Ομοίως, κάθε στοιχείο της λίστας κοπαδιών δεινοσαύρων είναι ένα struct που αποτελείται από τα ακόλουθα πεδία: Έναν ακέραιο spreadid που αποτελεί το αναγνωριστικό του κοπαδιού. Για παράδειγμα, στη λίστα ειδών της εγγραφής Feeding[0] που αντιστοιχεί σε χορτοφάγους δεινόσαυρους, το αναγνωριστικό ενός κόμβου της λίστας κοπαδιών μπορεί να είναι 1 για ένα κοπάδι χορτοφάγων δεινόσαυρων που βρίσκεται στην Παταγονία, 2 για κάποιο κοπάδι που βρίσκονται στο Κλήβελαντ, 3 για το κοπάδι δεινοσαύρων της Ανταρκτικής, κ.ο.κ. Θεωρήστε πως οι δεινόσαυροι ταξιδεύουν πολύ γρήγορα και έτσι είναι εφικτό να διανύσουν ολόκληρη την Παγγαία μέσα σε μερικούς μόνο μήνες. Έναν δείκτη spreaddp που δείχνει στον πρώτο στοιχείο μιας λίστας δεινοσαύρων που ανήκουν σε αυτό το κοπάδι. H λίστα αυτή λέγεται λίστα του κοπαδιού SpreadId και είναι ταξινομημένη ως προς τη δύναμη (Strength) των δεινόσαυρων. Έναν δείκτη next που δείχνει στο επόμενο στοιχείο της λίστας. Η λίστα κοπαδιών δεινοσαύρων είναι ταξινομημένη ως προς το SpreadId. Κάθε στοιχείο της λίστας του κοπαδιού SpreadId περιέχει στοιχεία τύπου struct SpreadDin. Το struct αυτό έχει τα ακόλουθα πεδία: struct Dinosaur *d: δείκτης σε struct τύπου Dinosaur που περιέχει πληροφορίες για τον δεινόσαυρο. struct SpreadDin *next: δείκτης στο επόμενο στοιχείο της λίστας. Υπενθυμίζεται ότι η λίστα του κοπαδιού SpreadId είναι ταξινομημένη ως προς τη δύναμη (Strength) των δεινόσαυρων που περιέχει. Οι δομών δεδομένων που περιγράφονται παραπάνω παρουσιάζονται στο Σχήμα 4. 4

5 Eater[0] Eater[1] SpieceL SpreadL SpieceL SpreadL SpieceDp SpieceId next d next SpieceDp SpieceId next d next SpreadDp SpreadId next d next d next SpreadDp SpreadId next Σχήμα 4 5

6 Πανεπιστήμιο Κρήτης, Τμήμα Επιστήμης Υπολογιστών 12 Οκτωβρίου 2012 Τρόπος Λειτουργίας Προγράμματος Το πρόγραμμα που θα δημιουργηθεί θα πρέπει να εκτελείται καλώντας την ακόλουθη εντολή: <name of executable file> <input-file> <MAX_AGE> όπου <name of executable file> είναι το όνομα του εκτελέσιμου αρχείου του προγράμματος (π.χ., a.out), <MAX_AGE> είναι ένας ακέραιος που υποδηλώνει πόσα το πολύ χρόνια ζει κάθε δεινόσαυρος και <input-file> είναι το όνομα ενός αρχείου εισόδου που περιέχει γεγονότα των ακόλουθων μορφών: o C <N> <Fed> <SpieceId> <SpreadId> <Strength>: Γεγονός τύπου Create το οποίο σηματοδοτεί τη δημιουργία <N> νέων δεινοσαύρων στο οικοσύστημα. Το πεδίο <Fed> είναι 0 ή 1 και παρέχει την πληροφορία του αν οι νέοι δεινόσαυροι είναι χορτοφάγοι ή σαρκοφάγοι, αντίστοιχα. Το πεδίο <SpieceId> είναι το αναγνωριστικό του είδους στο οποίο ανήκουν οι νέοι δεινόσαυροι. Επιπρόσθετα, οι νέοι δεινόσαυροι ανήκουν στο κοπάδι με αναγνωριστικό <SpreadId> και η δύναμή τους αρχικοποιείται σε <Strength>. Επομένως, τα <Ν>, <Fed>, <SpieceId>, <SpreadId> και <Strength> είναι ακέραιοι αριθμοί που παρέχουν τις παραπάνω πληροφορίες για το δεινόσαυρο. Αν το <SpieceId> ισούται με -1, τότε δημιουργούνται δεινόσαυροι όλων των ειδών με τον ακόλουθο τρόπο. Αν υπάρχουν k είδη δεινοσαύρων στο οικοσύστημα με τις δεδομένες διατροφικές συνήθειες, δημιουργούνται N/k νέοι δεινόσαυροι σε κάθε είδος. Όλοι ανήκουν ωστόσο στο ίδιο κοπάδι και όλοι έχουν τις ίδιες διατροφικές συνήθειες. Όλοι οι νέοι δεινόσαυροι έχουν ηλικία 0. H λίστα δεινοσαύρων θα πρέπει να ενημερωθεί προκειμένου να περιέχει τους νέους δεινόσαυρους. Επιπρόσθετα, αν <SpieceId> -1 και ο δεινόσαυρος ανήκει σε κάποιο είδος που δεν υπάρχει στο σύστημα, θα πρέπει να προστεθεί μια νέα εγγραφή στη λίστα ειδών δεινοσαύρων και <Ν> νέες εγγραφές στη λίστα δεινοσαύρων του είδους στο οποίο ανήκει ο δεινόσαυρος. Αν <SpieceId> = -1, για κάθε είδος της λίστας ειδών του Eater[<Fed>] πρέπει να γίνουν Ν/k εισαγωγές στη λίστα δεινοσαύρων του είδους. Αλλαγές θα πρέπει να γίνουν στη λίστα κοπαδιών δεινοσαύρων καθώς και στη λίστα του κοπαδιού στο οποίο ανήκουν οι νέοι δεινόσαυροι. Οι αλλαγές αυτές πρέπει να γίνουν με κατάλληλο τρόπο ώστε οι λίστες αυτές να παραμείνουν ταξινομημένες. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος, το πρόγραμμα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: C <N> <Fed> <SpieceId> <SpreadId> <Strength> DONE Eater[0] SpieceLIST = <SpieceId1>, List of Spiece <SpieceId1> = <d 1 1, d 2 1,, d r1 1 > < SpieceId2>, List of Spiece <SpieceId2> = <d 1 2, d 2 2,, d r2 2 > <SpieceIdk>, List of Spiece <SpieceIdk> = <d 1 k, d 2 k,, d rk k > SpreadList = <SpreadId1>, List of Spread <SpreadId1> = <d 1 1, d 2 1,, d m1 1 > < SpreadId2>, 6

7 List of Spread <SpreadId2> = <d 2 1, d 2 2,, d 2 m2 > <SpreadIdl>, List of Spread <SpreadIdl> = <d l 1, d l 2,, d l ml > Eater[1] <τυπώνεται παρόμοια πληροφορία όπως και για την κατηγορία Eater[0]> <η τύπωση της πληροφορίας πρέπει να ακολουθεί παρόμοιο format όπως εκείνο της πληροφορίας για την κατηγορία Eater[0]> LIST OF DINOSAURS: <DId 1, Fed 1, SpieceId 1, SpreadId 1, Age 1, Strength 1 > <DId 2, Fed 2, SpieceId 2, SpreadId 2, Age 2, Strength 2 > <DId h, Fed h, SpieceId h, SpreadId h, Age h, Strength h > όπου k, l είναι το πλήθος στοιχείων στις λίστες ειδών δεινοσαύρων και κοπαδιών, αντίστοιχα, της κατηγορίας Eater[0] και <d 1 i, d 2 i,, d ri i >, 1 i k, είναι τα αναγνωριστικά των δεινόσαυρων που είναι αποθηκευμένα στη λίστα δεινοσαύρων του είδους <SpieceId i > (όπου έχουμε υποθέσει πως αυτά είναι r i στο πλήθος). Επίσης, <d 1 i, d 2 i,, d mi i >, 1 i k, είναι τα αναγνωριστικά των δεινόσαυρων που είναι αποθηκευμένα στη λίστα δεινοσαύρων του κοπαδιού <SpreadId i > (όπου έχουμε υποθέσει πως αυτά είναι m i στο πλήθος). Τέλος, h είναι το πλήθος των στοιχείων στη λίστα δεινοσαύρων και <DId i, Fed i, Spiece i, Spread i, Age i, Strength i >, 1 i k, είναι τo αναγνωριστικό, η διατροφική συνήθεια, το είδος, το κοπάδι, η ηλικία και η δύναμη του δεινόσαυρου που αντιστοιχεί στη i-οστή εγγραφή της λίστας δεινοσαύρων. o B <N> <DId> <Strength>: Γεγονός τύπου Born το οποίο σηματοδοτεί τη γέννηση <N> νέων δεινοσαύρων στο οικοσύστημα. Οι δεινόσαυροι αυτοί είναι παιδιά της δεινόσαυρου με αναγνωριστικό <DId> και άρα έχουν τις ίδιες διατροφικές συνήθειες, ανήκουν στο ίδιο κοπάδι και είναι του ιδίου είδους με τη μητέρα τους, δηλαδή με το δεινόσαυρο με αναγνωριστικό <DId>. Η δύναμη των νέων δεινοσαύρων που μόλις γεννήθηκαν καθορίζεται από τον ακέραιο <Strength>. Η ηλικία τους τη στιγμή της γέννησης είναι 0. Ο δεινόσαυρος <Did> θα πρέπει να αναζητηθεί στη λίστα δεινοσαύρων. Η εύρεση του στοιχείου αυτού θα παρέχει την πληροφορία του αν οι νέοι δεινόσαυροι είναι χορτοφάγοι ή σαρκοφάγοι, καθώς και τα αναγνωριστικά (έστω SpieceId και SpreadId) του είδους και του κοπαδιού, αντίστοιχα, στα οποία αυτοί θα ανήκουν. Υποθέτοντας για παράδειγμα, ότι οι νέοι δεινόσαυροι είναι σαρκοφάγοι, οι ενέργειες που θα πρέπει να πραγματοποιηθούν είναι οι εξής: (1) αναζήτηση του SpieceId στη λίστα ειδών του Eater[1] και εισαγωγή των νέων δεινόσαυρων στη λίστα δεινοσαύρων αυτού του είδους, και (2) αναζήτηση του SpreadId στη λίστα Eater[1] και εισαγωγή των νέων δεινόσαυρων στο κατάλληλο κοπάδι. Οι εισαγωγές αυτές πρέπει να γίνουν με κατάλληλο τρόπο ώστε οι λίστες αυτές να διατηρούν τις ιδιότητές τους. Οι νέοι δεινόσαυροι θα πρέπει, προφανώς, να εισαχθούν και στη λίστα δεινοσαύρων. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος, το πρόγραμμα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: 7

8 B <N> <DId> <Strength> DONE Parent Dinosaur: Eater = <Fed>, Spc = <SpieceId>, Spr = <SpreadId>,Age = <Age>,Str = <Strength> SpieceLIST of <SpieceId> = <d 1, d 2,, d k > SpreadList of <SpreadId> = <d 1, d 2,, d r > LIST OF DINOSAURS: <DId 1, Fed 1, SpieceId 1, SpreadId 1, Age 1, Strength 1 > <DId 2, Fed 2, SpieceId 2, SpreadId 2, Age 2, Strength 2 > <DId h, Fed h, SpieceId h, SpreadId h, Age h, Strength h > όπου <Fed>, <SpieceId>, <SpreadId>, <Age>, <Strength> υποδηλώνουν τις διατροφικές συνήθειες, το είδος, το κοπάδι, την ηλικία και τη δύναμη του γονικού δεινόσαυρου. Επομένως, οι νέοι δεινόσαυροι ανήκουν στο είδος με αναγνωριστικό <SpieceId> και στο κοπάδι με αναγνωριστικό <SpreadId>. Επιπρόσθετα, k είναι το πλήθος στοιχείων στη λίστα δεινοσαύρων του είδους <SpieceId> και <d 1, d 2,, d k > είναι τα αναγνωριστικά των δεινόσαυρων που είναι αποθηκευμένα στη λίστα αυτή. Επίσης, r είναι το πλήθος στοιχείων στη λίστα δεινοσαύρων του κοπαδιού <SpreadId> και <d 1, d 2,, d r > είναι τα αναγνωριστικά των δεινόσαυρων που είναι αποθηκευμένα στη λίστα αυτή. Τέλος, h είναι το πλήθος των στοιχείων στη λίστα δεινοσαύρων και <DId i, Fed i, SpieceId i, SpreadId i, Age i, Strength i >, 1 i k, είναι τo αναγνωριστικό, η διατροφική συνήθεια, το είδος, το κοπάδι, η ηλικία και η δύναμη του δεινόσαυρου που αντιστοιχεί στη i-οστή εγγραφή της λίστας δεινοσαύρων. o W <Fed1> <SpreadId1> <Fed2> <SpreadId2> <Strength>: Γεγονός τύπου War που σηματοδοτεί έναν διαπληκτισμό μεταξύ του κοπαδιού της διατροφικής κατηγορίας <Fed1> με αναγνωριστικό <SpreadId1> και εκείνου της διατροφικής κατηγορίας <Fed2> με αναγνωριστικό <SpreadId2>. Η δύναμη όλων των δεινόσαυρων και των δύο κοπαδιών μειώνεται κατά <Strength>. Οι δεινόσαυροι των οποίων η δύναμη μειώνεται σε μια τιμή μικρότερη ή ίση του μηδενός πεθαίνουν. Αν τα δύο κοπάδια αποτελούνται από δεινόσαυρους με τις ίδιες διατροφικές συνήθειες (π.χ. οι δεινόσαυροι και στα δύο κοπάδια είναι χορτοφάγοι), τα κοπάδια συνενώνονται. Διαφορετικά, τα κοπάδια παραμένουν με όσα μέλη τους έχουν απομείνει. Το κοπάδι με αναγνωριστικό <Spread1> θα πρέπει να αναζητηθεί στην διατροφική κατηγορία δεινοσαύρων Eater[<Fed1>]. Η λίστα δεινοσαύρων του κοπαδιού <Spread1> διατρέχεται και για κάθε δεινόσαυρο η δύναμή του μειώνεται κατά <Strength>. Αν η δύναμη του δεινόσαυρου γίνει ίση ή μικρότερη του 0, ο δεινόσαυρος διαγράφεται. Αυτό πραγματοποιείται ως εξής: (1) ο δεινόσαυρος διαγράφεται από τη λίστα δεινοσαύρων του συγκεκριμένου κοπαδιού, (2) ο δεινόσαυρος διαγράφεται από τη λίστα δεινοσαύρων του είδους στο οποίο αυτός ανήκει, και τέλος (3) ο δεινόσαυρος διαγράφεται από τη λίστα δεινοσαύρων γενικά. Παρόμοιες ενέργειες γίνονται για τους δεινόσαυρους του κοπαδιού με αναγνωριστικό <Spread 2 > της διατροφικής κατηγορίας Eater[<Fed2>]. Αν η λίστα των κοπαδιών <SpreadId1> ή <SpreadId2> είναι κενή μετά τις διαγραφές, το αντίστοιχο στοιχείο της λίστας κοπαδιών πρέπει να διαγραφεί. Διαγραφές στοιχείων ενδέχεται να χρειάζονται και στη λίστα ειδών, αν η λίστα για κάποιο συγκεκριμένο είδος μείνει κενή. Αν <Fed1> = <Fed2> τότε τα κοπάδια <SpreadId1> και <SpreadId2> πρέπει να συγχωνευτούν. Η συγχώνευση θα πρέπει να γίνει με τέτοιο τρόπο ώστε η χρονική πολυπλοκότητά του κώδικα της συγχώνευσης να είναι Ο(n1+n2), όπου n1 (και n2) είναι το πλήθος των στοιχείων στη λίστα δεινοσαύρων των κοπαδιών <SpreadId1> (και <SpreadId2>, αντίστοιχα). Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος, το πρόγραμμα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: 8

9 W <Fed1> <SpreadId1> <Fed2> <SpreadId2> <Strength> DONE Eater[<Fed1>] Eater[<Fed2>] SpieceLIST = <SpieceId1>, List of Spiece <SpieceId1> = <d 1 1, d 2 1,, d r1 1 > < SpieceId2>, List of Spiece <SpieceId2> = <d 1 2, d 2 2,, d r2 2 > <SpieceIdk>, List of Spiece <SpieceIdk> = <d 1 k, d 2 k,, d rk k > SpreadList = <SpreadId1>, List of Spread <SpreadId1> = <d 1 1, d 2 1,, d m1 1 > < SpreadId2>, List of Spread <SpreadId2> = <d 1 2, d 2 2,, d m2 2 > <SpreadIdl>, List of Spread <SpreadIdl> = <d 1 l, d 2 l,, d ml l > <Αν <Fed1> <Fed2>, παρόμοια πληροφορία όπως και για την κατηγορία Εater[<Fed1>]> <η τύπωση της πληροφορίας πρέπει να ακολουθεί παρόμοιο format όπως εκείνο της πληροφορίας για την κατηγορία Eater[0]> LIST OF DINOSAURS: <DId 1, Fed 1, SpieceId 1, SpreadId 1, Age 1, Strength 1 > <DId 2, Fed 2, SpieceId 2, SpreadId 2, Age 2, Strength 2 > <DId h, Fed h, SpieceId h, SpreadId h, Age h, Strength h > όπου k, l είναι το πλήθος στοιχείων στις λίστες ειδών δεινοσαύρων και κοπαδιών, αντίστοιχα, της διατροφικής κατηγορίας Eater[0] και <d 1 i, d 2 i,, d ri i >, 1 i k, είναι τα αναγνωριστικά των δεινόσαυρων που είναι αποθηκευμένα στη λίστα δεινοσαύρων του είδους <SpieceId i > (όπου έχουμε υποθέσει πως αυτά είναι r i στο πλήθος). Επίσης, <d 1 i, d 2 i,, d mi i >, 1 i k, είναι τα αναγνωριστικά των δεινόσαυρων που είναι αποθηκευμένα στη λίστα δεινοσαύρων του κοπαδιού <SpreadId i > (όπου έχουμε υποθέσει πως αυτά είναι m i στο πλήθος). Τέλος, h είναι το πλήθος των στοιχείων στη λίστα δεινοσαύρων και <DId i, Fed i, Spiece i, Spread i, Age i, Strength i >, 1 i k, είναι τo αναγνωριστικό, η διατροφική συνήθεια, το είδος, το κοπάδι, η ηλικία και η δύναμη του δεινόσαυρου που αντιστοιχεί στη i-οστή εγγραφή της λίστας δεινοσαύρων. 9

10 o S <Fed> <SpreadId> <Age>: Γεγονός τύπου Split που σηματοδοτεί το διαχωρισμό του κοπαδιού με αναγνωριστικό <SpreadId> της διατροφικής κατηγορίας <Fed> σε δύο διαφορετικά κοπάδια. Συγκεκριμένα, οι δεινόσαυροι του κοπαδιού <SpreadId> που έχουν ηλικία μεγαλύτερη από <Age> μένουν στο κοπάδι ενώ εκείνοι με μικρότερη ηλικία από <Age> δημιουργούν ένα νέο κοπάδι. Οι ενέργειες που θα πρέπει να πραγματοποιηθούν είναι οι εξής: (1) εισαγωγή ενός νέου στοιχείου που θα αντιστοιχεί στο νέο κοπάδι στη λίστα κοπαδιών δεινοσαύρων του Eater[<Fed>], (2) εισαγωγή των δεινοσαύρων που απαιτούνται στη λίστα δεινοσαύρων του νέου κοπαδιού, και (3) αλλαγές θα πρέπει να γίνουν και στα struct Dinosaur των δεινοσαύρων αυτών. Το γεγονός αυτό θα πρέπει να εκτελείται σε χρόνο Ο(n), όπου n είναι το πλήθος των στοιχείων στη λίστα του κοπαδιού με αναγνωριστικό <SpreadId> της διατροφικής κατηγορίας <Fed>. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος, το πρόγραμμα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: S <Fed> <SpreadId> <Strength> DONE Eater[<Fed>] SpreadLIST = <SpreadId1>, List of Spread <SpreadId1> = <d 1 1, d 2 1,, d r1 1 > < SpreadId2>, List of Spread <SpreadId2> = <d 1 2, d 2 2,, d r2 2 > <SpreadIdk>, List of Spread <SpreadIdk> = <d 1 k, d 2 k,, d rk k > LIST OF DINOSAURS: <DId 1, SpreadId 1 >, <DId 2, SpreadId 2 >,, <DId h, SpreadId h > όπου k είναι το πλήθος των στοιχείων στη λίστα κοπαδιών δεινοσαύρων της διατροφικής κατηγορίας Eater[<Fed>] και <d 1 i, d 2 i,, d ri i >, 1 i k, είναι τα αναγνωριστικά των δεινόσαυρων που είναι αποθηκευμένα στη λίστα δεινοσαύρων του κοπαδιού <SpreadId i > (όπου έχουμε υποθέσει πως αυτά είναι r i στο πλήθος). Τέλος, h είναι το πλήθος των στοιχείων στη λίστα δεινοσαύρων και <DId i, SpreadId i >, 1 i k, είναι τo αναγνωριστικό του δεινόσαυρου που αντιστοιχεί στη i-οστή εγγραφή της λίστας δεινοσαύρων και το αναγνωριστικό του κοπαδιού του. o Y <Ν>: Γεγονός τύπου Year. Το γεγονός αυτό σηματοδοτεί την αύξηση της ηλικίας όλων των δεινόσαυρων κατά <Ν> έτη. Οι δεινόσαυροι που αποκτούν ηλικία μεγαλύτερη του MAX_AGE πεθαίνουν, όπου MAX_AGE είναι μια σταθερά που παρέχεται από τη γραμμή εντολών κατά την εκκίνηση του προγράμματος. Η δύναμη κάθε δεινόσαυρου επίσης αυξάνει κατά μία ποσότητα που είναι συνάρτηση της τρέχουσας ηλικίας του κάθε δεινόσαυρου. Συγκεκριμένα, διατρέχουμε τη λίστα των δεινόσαυρων και αυξάνουμε την ηλικία του κάθε δεινόσαυρου κατά <N>. Αν ο δεινόσαυρος αποκτά ηλικία μεγαλύτερη του MAX_AGE διαγράφεται από το σύστημα. Επιπρόσθετα, αυξάνουμε τη δύναμη του κάθε δεινόσαυρου κατά (1 + (MAX_AGE-Age)/MAX_AGE) * 12 * <N>, όπου Age είναι η τρέχουσα ηλικία του κάθε δεινόσαυρου. 10

11 Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος, το πρόγραμμα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: Y DONE LIST OF DINOSAURS: <DId 1, Fed 1, SpieceId 1, SpreadId 1, Age 1, Strength 1 > <DId 2, Fed 2, SpieceId 2, SpreadId 2, Age 2, Strength 2 > <DId h, Fed h, SpieceId h, SpreadId h, Age h, Strength h > όπου h είναι το πλήθος των στοιχείων στη λίστα δεινοσαύρων και <DId i, Fed i, Spiece i, Spread i, Age i, Strength i >, 1 i k, είναι τo αναγνωριστικό, η διατροφική συνήθεια, το είδος, το κοπάδι, η ηλικία και η δύναμη του δεινόσαυρου που αντιστοιχεί στη i-οστή εγγραφή της λίστας δεινοσαύρων. o P: Γεγονός τύπου Print που σηματοδοτεί την εκτύπωση των δομών δεδομένων του συστήματος. Συγκεκριμένα, για κάθε μία από τις διατροφικές κατηγορίες δεινοσαύρων, θα πρέπει να εκτυπώνεται η λίστα ειδών δεινόσαυρων και η λίστα κοπαδιών δεινόσαυρων της κατηγορίας αυτής. Επίσης, θα πρέπει να εκτυπώνεται η λίστα δεινοσαύρων και για κάθε έναν από αυτούς να εκτυπώνονται οι πληροφορίες της εγγραφής που του αντιστοιχεί. Συγκεκριμένα, οι πληροφορίες που τυπώνονται είναι οι εξής: P DONE Eater[0] Eater[1] SpieceLIST = <SpieceId1>, List of Spiece <SpieceId1> = <d 1 1, d 2 1,, d r1 1 > < SpieceId2>, List of Spiece <SpieceId2> = <d 1 2, d 2 2,, d r2 2 > <SpieceIdk>, List of Spiece <SpieceIdk> = <d 1 k, d 2 k,, d rk k > SpreadList = <SpreadId1>, List of Spread <SpreadId1> = <d 1 1, d 2 1,, d m1 1 > < SpreadId2>, List of Spread <SpreadId2> = <d 1 2, d 2 2,, d m2 2 > <SpreadIdl>, List of Spread <SpreadIdl> = <d 1 l, d 2 l,, d ml l > <τυπώνεται παρόμοια πληροφορία όπως και για την κατηγορία Eater[0]> 11

12 <η τύπωση της πληροφορίας πρέπει να ακολουθεί παρόμοιο format όπως εκείνο της πληροφορίας για την κατηγορία Eater[0]> LIST OF DINOSAURS: <DId 1, Fed 1, SpieceId 1, SpreadId 1, Age 1, Strength 1 > <DId 2, Fed 2, SpieceId 2, SpreadId 2, Age 2, Strength 2 > <DId h, Fed h, SpieceId h, SpreadId h, Age h, Strength h > όπου k, l είναι το πλήθος στοιχείων στις λίστες ειδών δεινοσαύρων και κοπαδιών, αντίστοιχα, της διατροφικής κατηγορίας Eater[0] και <d 1 i, d 2 i,, d ri i >, 1 i k, είναι τα αναγνωριστικά των δεινόσαυρων που είναι αποθηκευμένα στη λίστα δεινοσαύρων του είδους <SpieceId i > (όπου έχουμε υποθέσει πως αυτά είναι r i στο πλήθος). Επίσης, <d 1 i, d 2 i,, d mi i >, 1 i k, είναι τα αναγνωριστικά των δεινόσαυρων που είναι αποθηκευμένα στη λίστα δεινοσαύρων του κοπαδιού <SpreadId i > (όπου έχουμε υποθέσει πως αυτά είναι m i στο πλήθος). Τέλος, h είναι το πλήθος των στοιχείων στη λίστα δεινοσαύρων και <DId i, Fed i, Spiece i, Spread i, Age i, Strength i >, 1 i k, είναι τo αναγνωριστικό, η διατροφική συνήθεια, το είδος, το κοπάδι, η ηλικία και η δύναμη του δεινόσαυρου που αντιστοιχεί στη i-οστή εγγραφή της λίστας δεινοσαύρων. Το πρόγραμμα που θα δημιουργηθεί πρέπει να διαβάζει το αρχείο εισόδου και να εκτελεί με τη σειρά όλα τα γεγονότα που περιγράφονται σε αυτό. 12

13 Δομές Δεδομένων Στο Σχήμα 4 παρουσιάζονται οι δομές σε C που πρέπει να χρησιμοποιηθούν για την υλοποίηση της εργασίας. typedef struct Dinosaur { int Did; int Fed; int SpieceId; int SpreadId; int Age; int Strength; } DINOSAUR; // στοιχεία λίστας δεινοσαύρων typedef struct Dnode { struct Dinosaur *d; struct Dnode *prev; struct Dnode *next; } DNODE; // // στοιχεία λίστας δεινοσαύρων ενός συγκεκριμένου είδους typedef struct SpieceDin { struct Dinosaur *d; struct SpieceDin *next; } SPIECEDIN; // στοιχεία λίστας ειδών δεινοσαύρων typedef struct SpieceNode { int SpieceId; struct SpieceDin *SpieceDp; struct SpieceNode *next; } SPIECENODE; // // στοιχεία λίστας δεινοσαύρων ενός συγκεκριμένου κοπαδιού typedef struct SpreadDin { DINOSAUR *d; struct SpreadDin *next; } SPREADDIN; // στοιχεία λίστας κοπαδιών typedef struct SpreadNode { int SpreadId; struct SpreadDin *SpreadDp; struct SpreadNode *next; } SPREADNODE; // // στοιχεία πίνακα Eater typedef struct Feed { SPIECENODE *SpieceL; SPREADNODE *SpreadL; } FEED; // // πίνακας Eater FEED Eater[2]; 13

14 Οδηγίες και Συμβουλές για την Ομαλή Διεκπεραίωση της Εργασίας Η εργασία θα πρέπει να πραγματοποιηθεί σε βήματα. Ο κάθε φοιτητής είναι υπεύθυνος να αποφασίσει ποια βήματα ταιριάζουν στον τρόπο εργασίας του. Στη συνέχεια, παρατίθεται μια δυνητική ακολουθία βημάτων που θα μπορούσε να ακολουθηθεί για την ομαλή διεκπεραίωση της εργασίας. Σε κάθε βήμα θα πρέπει να κρατάτε αντίγραφα του κώδικα που έχετε φτιάξει μέχρι τώρα και να προχωράτε στην παραγωγή του κώδικα του επόμενου βήματος σε ένα νέο αρχείο, ώστε να μπορείτε να χρησιμοποιήσετε τον κώδικα προηγούμενων βημάτων, αν χρειαστεί. Βήμα 1: Ξεκινήστε υλοποιώντας ένα μέρος του γεγονότος C (Create). Για την υλοποίηση του γεγονότος αυτού πρέπει να υλοποιήσετε τη λίστα κοπαδιών δεινοσαύρων. Η λίστα αυτή είναι απλά συνδεδεμένη και ταξινομημένη ως προς το πεδίο αναγνωριστικό. Φτιάξτε διαδικασίες SSLInsert, SSLDelete και SSLLookUp για μια ταξινομημένη συνδεδεμένη λίστα, προκειμένου να πραγματοποιείτε εισαγωγές, διαγραφές και αναζητήσεις, αντίστοιχα, στη λίστα αυτή. Τα στοιχεία της λίστα αυτής μπορούν να είναι τύπου SpreadNode (όπου στη φάση αυτή, το πεδίο SpreadDp, αντίστοιχα, είναι ίσο με NULL). Δημιουργήστε μια διαδικασία SSLPrint() για την εκτύπωση των στοιχείων της λίστας η οποία θα σας βοηθήσει να ελέγξετε την ορθότητα των διαδικασιών που περιγράφονται παραπάνω. Δημιουργήστε τον παραπάνω κώδικα σε ένα δικό σας αρχείο και φτιάξτε μια δική σας main() για να ελέγξετε ότι ο κώδικας που υλοποιεί τις λειτουργίες μιας απλά συνδεδεμένης ταξινομημένης λίστας λειτουργεί σωστά. Όταν είστε σίγουροι για αυτό συνεχίστε στο επόμενο βήμα. Βήμα 2: Συνεχίστε με την υλοποίηση του γεγονότος C, δημιουργώντας τον πίνακα Eater, κάθε στοιχείο του οποίου δεικτοδοτεί μια λίστα κοπαδιών (μην ασχοληθείτε στην παρούσα φάση με τα υπόλοιπα πεδία). Δημιουργήστε ένα αντίγραφο του βασικού αρχείου (εκείνου που περιέχει τη συνάρτηση main() που σας παρείχαν οι βοηθοί) και βάλτε σε σχόλια τον κώδικα που αναφέρεται σε γεγονότα άλλα από το C. Στο βήμα αυτό θα δουλέψετε μόνο με γεγονότα τύπου C. Απομονώστε στα test_files που σας παρείχαν οι βοηθοί τα γεγονότα τύπου C και εκτελέστε το πρόγραμμά σας μόνο για τέτοια γεγονότα. Το γεγονός τύπου C έχει βέβαια μόνο μερικά υλοποιηθεί αφού δεν υπάρχουν ακόμη οι λίστες δεινοσαύρων συγκεκριμένων ειδών και κοπαδιών, ούτε η λίστα ειδών ή η γενική λίστα δεινοσαύρων. Έτσι, στο βήμα αυτό απλά ελέγχετε αν τα στοιχεία της λίστας κοπαδιών κάθε διατροφικής κατηγορίας ενημερώνονται σωστά. Γεγονότα C που αναφέρονται στην προσθήκη νέων δεινόσαυρων σε κάποιο ήδη υπάρχον κοπάδι δεν προκαλούν στη φάση αυτή καμία ενέργεια. Βήμα 3: Συνεχίστε με την υλοποίηση του γεγονότος C, υλοποιώντας τις λίστες δεινοσαύρων ενός συγκεκριμένου κοπαδιού. Κάθε τέτοια λίστα είναι επίσης απλά-συνδεδεμένη, ταξινομημένη (αν και ως προς το πεδίο Strength). Επομένως, μπορείτε να χρησιμοποιήσετε αντίγραφο του κώδικα που δημιουργήσατε στο Βήμα 1, πραγματοποιώντας κατάλληλες αλλαγές ώστε να πετύχετε την υλοποίηση μιας τέτοιας λίστας με την επιθυμητή ταξινόμηση. Προσέξτε ότι στη λίστα ενός συγκεκριμένου κοπαδιού θα πρέπει να μπορείτε να εισάγετε ένα σύνολο από στοιχεία. Σκεφτείτε ποιος είναι ο πιο αποδοτικός τρόπος για να επιτευχθεί αυτό. Τελειώστε με το βήμα αυτό, ενημερώνοντας κατάλληλα το SpreadDp πεδίο κάθε στοιχείου της λίστας κοπαδιών μιας διατροφικής κατηγορίας ώστε να δείχνει στο πρώτο στοιχείο της λίστας δεινοσαύρων του κοπαδιού στο οποίο αναφέρεται. Με τον τρόπο αυτό έχετε φτιάξει μια λίστα από λίστες (αφού κάθε στοιχείο της λίστας κοπαδιών αποθηκεύει ένα δείκτη στο πρώτο στοιχείο μιας λίστας δεινοσαύρων που ανήκουν στο συγκεκριμένο κοπάδι). Στο βήμα αυτό, τροποποιήστε το struct SpreadDin και αντί να σώζεται στο πεδίο d έναν δείκτη σε ένα struct Dinosaur μπορείτε να αποθηκεύεται εκεί απλά το αναγνωριστικό του δεινόσαυρου. Αυτό θα σήμαινε βέβαια πως όλες τις άλλες πληροφορίες για τον εκάστοτε δεινόσαυρο τις αγνοείτε στην παρούσα φάση. Δημιουργήστε ένα μέρος της Print(), η οποία θα τυπώνει μόνο την εξής πληροφορία: P DONE Eater[0] SpieceLIST = <SpieceId1>, List of Spiece <SpieceId1> = <d 1 1, d 1 2,, d 1 r1 > < SpieceId2>, List of Spiece <SpieceId2> = <d 2 1, d 2 2,, d 2 r2 > <SpieceIdk>, 14

15 Eater[1] List of Spiece <SpieceIdk> = <d 1 k, d 2 k,, d rk k > SpreadList = <SpreadId1>, List of Spread <SpreadId1> = <d 1 1, d 2 1,, d m1 1 > < SpreadId2>, List of Spread <SpreadId2> = <d 1 2, d 2 2,, d m2 2 > <SpreadIdl>, List of Spread <SpreadIdl> = <d 1 l, d 2 l,, d ml l > <τυπώνεται παρόμοια πληροφορία όπως και για την κατηγορία Eater[0]> <η τύπωση της πληροφορίας πρέπει να ακολουθεί παρόμοιο format όπως εκείνο της πληροφορίας για την κατηγορία Eater[0]> Στο βήμα αυτό θα δουλέψετε με τα test_files και main του προηγούμενου βήματος. Μην προχωρήσετε στο επόμενο βήμα, αν δεν είστε βέβαιοι πως η λίστα ειδών και οι λίστες οι οποίες δεικτοδοτούνται από τα στοιχεία της, δημιουργούνται σωστά και περιέχουν μέσα τους τα σωστά αναγνωριστικά (ειδών και δεινοσαύρων, αντίστοιχα). Βήμα 4: Αντιγράψτε τον κώδικα του Βήματος 2 σε ένα νέο αρχείο και κάνετε κατάλληλες τροποποιήσεις ώστε να υλοποιήσετε τη λίστα ειδών κάθε διατροφικής κατηγορίας με αντίστοιχο τρόπο όπως το κάνατε για τη λίστα κοπαδιών. Η λίστα ειδών δεινοσαύρων είναι μια απλά-συνδεδεμένη, ταξινομημένη λίστα και άρα ο κώδικας για να την υλοποιήσετε είναι εντελώς αντίστοιχος με εκείνον για τη λίστα κοπαδιών. Στη φάση αυτή, αφήστε το πεδίο SpieceDp ίσο με NULL). Ωστόσο, η λίστα δεινοσαύρων κάθε είδους είναι μη ταξινομημένη. Αφήστε την υλοποίηση αυτών μιας τέτοιας λίστας για το επόμενο βήμα. Βήμα 5: Σε ένα νέο αρχείο γράψτε τον κώδικα για την υλοποίηση μιας απλά συνδεδεμένης μη-ταξινομημένης λίστας. Δημιουργήστε διαδικασίες SLInsert, SLDelete και SLLookUp για μια μη ταξινομημένη συνδεδεμένη λίστα, προκειμένου να πραγματοποιείτε εισαγωγές, διαγραφές και αναζητήσεις, αντίστοιχα, στη λίστα αυτή. Τα στοιχεία της λίστα αυτής είναι τύπου SpieceDin (όπου το πεδίο d μπορεί να είναι, στο βήμα αυτό, ένας ακέραιος που αποθηκεύει απλά το αναγνωριστικό ενός δεινόσαυρου). Δημιουργήστε μια διαδικασία SLPrint() για την εκτύπωση των στοιχείων της λίστας η οποία θα σας βοηθήσει να ελέγξετε την ορθότητα των διαδικασιών που περιγράφονται παραπάνω. Φτιάξτε μια δική σας main() (ή χρησιμοποιήστε μια έκδοση της main του βήματος 1) για να ελέγξετε ότι ο κώδικας που υλοποιεί τις λειτουργίες μιας απλά συνδεδεμένης, μη ταξινομημένης λίστας λειτουργεί σωστά. Προσέξτε ότι στη λίστα ενός συγκεκριμένου είδους το γεγονός C απαιτεί την εισαγωγή περισσότερων του ενός δεινοσαύρων. Σκεφτείτε ποιος είναι ο πιο αποδοτικός τρόπος για να επιτευχθεί αυτό. Όταν είστε σίγουροι πως ο κώδικας που γράψατε σε αυτό το βήμα είναι σωστός συνεχίστε στο επόμενο βήμα. Βήμα 6: Ακολουθώντας αντίστοιχες ενέργειες με εκείνες του Βήματος 3, υλοποιήστε τη λίστα ειδών ως λίστα από λίστες. Σημειώνεται πως η λίστα ειδών είναι μια ταξινομημένη λίστα ενώ η λίστα δεινοσαύρων κάποιου συγκεκριμένου είδους δεν είναι ταξινομημένη (εν αντιθέσει με τη λίστα δεινοσαύρων ενός συγκεκριμένου κοπαδιού που είναι ταξινομημένη). Υλοποιήστε τη λειτουργικότητα του γεγονότος C όταν το <SpieceId> = -1. Στο βήμα αυτό, μπορείτε να συνεχίσετε να δουλεύετε με την τροποποιημένη έκδοση του struct SpieceDin στην οποία αποθηκεύετε στο πεδίο d, απλά το αναγνωριστικό του δεινόσαυρου. Αυτό θα σήμαινε βέβαια πως όλες τις άλλες πληροφορίες για τον εκάστοτε δεινόσαυρο (που παρέχονται στο γεγονός C) τις αγνοείτε στην παρούσα φάση. Επεκτείνετε την Print(), ώστε να τυπώνει την εξής πληροφορία: P DONE Eater[0] SpreadList = <SpreadId1>, List of Spread <SpreadId1> = <d 1 1, d 2 1,, d m1 1 > < SpreadId2>, List of Spread <SpreadId2> = <d 1 2, d 2 2,, d m2 2 > <SpreadIdl>, 15

16 Eater[1] List of Spread <SpreadIdl> = <d 1 l, d 2 l,, d ml l > <τυπώνεται παρόμοια πληροφορία όπως και για την κατηγορία Eater[0]> <η τύπωση της πληροφορίας πρέπει να ακολουθεί παρόμοιο format όπως εκείνο της πληροφορίας για την κατηγορία Eater[0]> Στο βήμα αυτό μπορείτε πλέον να δουλέψετε και με γεγονότα τύπου B. Απομονώστε στα test_files που σας παρείχαν οι βοηθοί τα γεγονότα τύπου C και B και εκτελέστε το πρόγραμμά σας μόνο για τέτοια γεγονότα. Το γεγονότα αυτά έχουν βέβαια μόνο μερικά υλοποιηθεί αφού δεν υπάρχει ακόμη η λίστα δεινοσαύρων. Μην προχωρήσετε στο επόμενο βήμα, αν δεν είστε βέβαιοι πως ο κώδικάς σας μέχρι εδώ λειτουργεί σωστά. Βήμα 7: Στο βήμα αυτό θα υλοποιήσετε τη λίστα δεινοσαύρων. Αυτή είναι μια διπλά-συνδεδεμένη ταξινομημένη λίστα. Γράψτε κώδικα που θα υλοποιεί τη λίστα αυτή σε ένα εντελώς νέο αρχείο. Αρχικά, υλοποιήστε μια απλούστερη έκδοση της λίστας αυτής στην οποία αντί ο δείκτης d του struct Dnode έχει αντικατασταθεί με έναν ακέραιο ο οποίος αποθηκεύει το αναγνωριστικό ενός δεινόσαυρου (οι υπόλοιπες πληροφορίες για κάθε δεινόσαυρο, προς το παρόν αγνοούνται). Φτιάξτε διαδικασίες SDLInsert, SDLDelete και SDLLookUp για μια ταξινομημένη διπλά συνδεδεμένη λίστα, προκειμένου να πραγματοποιείτε εισαγωγές, διαγραφές και αναζητήσεις, αντίστοιχα, στη λίστα αυτή. Δημιουργήστε μια διαδικασία SDLPrint() για την εκτύπωση των στοιχείων της λίστας η οποία θα σας βοηθήσει να ελέγξετε την ορθότητα των διαδικασιών που περιγράφονται παραπάνω. Τροποποιήστε κατάλληλα τη main() του Βήματος 1 για να ελέγξετε ότι ο κώδικας που υλοποιεί τις λειτουργίες μιας διπλά συνδεδεμένης, ταξινομημένης λίστας λειτουργεί σωστά. Όταν είστε σίγουροι για αυτό συνεχίστε στο επόμενο βήμα. Βήμα 8: Υλοποιήστε τη σωστή λειτουργία του δείκτη d σε κάθε κόμβο της λίστας δεινοσαύρων. Αυτό σημαίνει πως για κάθε κόμβο που τοποθετείτε στη λίστα δεινοσαύρων θα πρέπει να καλείτε τη malloc δύο φορές, μια για να δεσμεύσετε έναν struct Dnode και μια ακόμη για να δεσμεύσετε το struct Dinosaur στο οποίο θα δείχνει το πεδίο d του struct Dnode που δεσμεύσατε. Δοκιμάστε να τρέξετε γεγονότα όλων των ειδών πάνω στη λίστα δεινοσαύρων. Χρησιμοποιήστε επομένως, αυτούσια τα test_files και τη main που θα σας παρέχουν οι βοηθοί και ελέγξετε πως εκτελούνται σωστά (αν και με μη πλήρη τρόπο αφού λείπουν οι περισσότερες δομές της εργασίας από τον κώδικα του βήματος αυτού) όλων των ειδών τα γεγονότα στη λίστα δεινοσαύρων. Βήμα 9: Συνδυάστε τους κώδικες που δημιουργήσατε στο Βήματα 8 και 6 ώστε να πάρετε μια πρώτη έκδοση της εργασίας σας με όλες τις δομές που ζητούνται υλοποιημένες. Κάνετε κατάλληλες αλλαγές ώστε να υλοποιηθεί η σωστή λειτουργία του δείκτη d στα structs SpieceDin και SpreadDin. Ολοκληρώστε την υλοποίηση των γεγονότων C, B, Y και P. Βήμα 10: Υλοποιήστε το γεγονός τύπου S. Βεβαιωθείτε πως και αυτό το γεγονός εκτελείται σωστά. Προσέξτε ώστε η χρονική πολυπλοκότητα του αλγορίθμου διαχωρισμού (split) που υλοποιήσατε να είναι η ζητούμενη. Βήμα 11: Υλοποιήστε το γεγονός τύπου W. Αυτό θα σας επιτρέψει να πειραματιστείτε με διαγραφές και άλλες πολύπλοκες λειτουργίες πάνω στις δομές. Βήμα 12: Ελέγξετε την ορθότητα του κώδικα που δημιουργήσατε εκτελώντας τον κώδικά σας σε όλα τα αρχεία εκτέλεσης που θα σας παρέχουν οι βοηθοί του μαθήματος. Επιπρόσθετα, δημιουργήστε τα δικά σας αρχεία γεγονότων για να ελέγξετε με περισσότερη ακρίβεια την ορθότητα του κώδικά σας. 16

Προγραµµατιστική Εργασία 2 ο Μέρος

Προγραµµατιστική Εργασία 2 ο Μέρος Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών 20 Νοεµβρίου 2012 ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2011-12 ιδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία 2 ο Μέρος Ηµεροµηνία

Διαβάστε περισσότερα

Προγραµµατιστική Εργασία 1 ο Μέρος

Προγραµµατιστική Εργασία 1 ο Μέρος Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών 4 Νοεµβρίου 2011 ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2011-12 ιδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία 1 ο Μέρος Ηµεροµηνία

Διαβάστε περισσότερα

Προγραµµατιστική Εργασία - 2 ο Μέρος

Προγραµµατιστική Εργασία - 2 ο Μέρος Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών 1 εκεµβρίου 2011 ΗΥ240: οµές εδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2011-12 ιδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 2 ο Μέρος Ηµεροµηνία

Διαβάστε περισσότερα

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 1 ο Μέρος

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 1 ο Μέρος Πανεπιστήμιο Κρήτης, Τμήμα Επιστήμης Υπολογιστών 12 Οκτωβρίου 2009 ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2009-10 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία 1 ο Μέρος Ημερομηνία

Διαβάστε περισσότερα

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 1 ο Μέρος

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 1 ο Μέρος Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών 15 Οκτωβρίου 2008 ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2008-09 Παναγιώτα Φατούρου Προγραµµατιστική Εργασία 1 ο Μέρος Ηµεροµηνία Παράδοσης:

Διαβάστε περισσότερα

ΗΥ240: Δοµές Δεδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος

ΗΥ240: Δοµές Δεδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος ΗΥ240: Δοµές Δεδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2016-2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος Ηµεροµηνία Παράδοσης: Δευτέρα, 14 Νοεµβρίου 2016, ώρα 23:59. Τρόπος

Διαβάστε περισσότερα

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 1o Μέρος

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 1o Μέρος ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018-2019 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 1o Μέρος Ημερομηνία Παράδοσης: Δευτέρα, 1 Απριλίου 2019, ώρα 23:59 Τρόπος Παράδοσης:

Διαβάστε περισσότερα

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 1o Μέρος

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 1o Μέρος ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 1o Μέρος Ημερομηνία Παράδοσης: Κυριακή, 1 Απριλίου 2018, ώρα 23:59 Τρόπος Παράδοσης:

Διαβάστε περισσότερα

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών 6 εκεµβρίου 2008 ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2008-09 Παναγιώτα Φατούρου Προγραµµατιστική Εργασία 3 ο Μέρος Ηµεροµηνία Παράδοσης:

Διαβάστε περισσότερα

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος Προγραμματιστική Εργασία - 2o Μέρος

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος Προγραμματιστική Εργασία - 2o Μέρος Πανεπιστήµιο Κρήτης Τµήµα Επιστήµης Υπολογιστών, 4 Μαρτίου 2019 ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018-2019 Προγραμματιστική Εργασία - 2o Μέρος Ημερομηνία Παράδοσης: Δευτέρα, 13 Μαϊου

Διαβάστε περισσότερα

ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2016 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος

ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2016 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2016 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος Ηµεροµηνία Παράδοσης: Κυριακή, 3 Απριλίου 2016, ώρα 23:59. Τρόπος Παράδοσης:

Διαβάστε περισσότερα

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος Ημερομηνία Παράδοσης: Δευτέρα, 15 Μαΐου 2017, ώρα 23:59. Τρόπος Παράδοσης:

Διαβάστε περισσότερα

ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος

ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος Ηµεροµηνία Παράδοσης: Δευτέρα, 3 Απριλίου 2017, ώρα 23:59. Τρόπος Παράδοσης:

Διαβάστε περισσότερα

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος Ημερομηνία Παράδοσης: Δευτέρα, 14 Μαΐου 2018, ώρα 23:59 Τρόπος Παράδοσης: Χρησιμοποιώντας

Διαβάστε περισσότερα

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2009-10 Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 2 ο και 3 ο Μέρος

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2009-10 Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 2 ο και 3 ο Μέρος ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 09- Παναγιώτα Φατούρου Προγραμματιστική Εργασία 2 ο και ο Μέρος Ημερομηνία Παράδοσης: Παρασκευή, 18 Δεκεμβρίου 09, ώρα 08:00 (το πρωί) Τρόπος Παράδοσης:

Διαβάστε περισσότερα

ΗΥ240: Δοµές Δεδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος

ΗΥ240: Δοµές Δεδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος ΗΥ240: Δοµές Δεδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2017-2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος Ηµεροµηνία Παράδοσης: Δευτέρα, 20 Νοεµβρίου 2017, ώρα 23:59. Τρόπος

Διαβάστε περισσότερα

https://csd.uoc.gr/~hy240b/current/submit.php

https://csd.uoc.gr/~hy240b/current/submit.php Project HY240b - 1η Φάση Διδάσκουσα: Παναγιώτα Φατούρου Βοηθός: Νικόλαος Μπατσαράς Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Ηράκλειο, 09 Μαρτίου 2018 Εισαγωγή Διαδικαστικά Θεματολογία Δομές Χρηστών

Διαβάστε περισσότερα

Προγραµµατιστική Εργασία 1 ο Μέρος

Προγραµµατιστική Εργασία 1 ο Μέρος ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2013-14 ιδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία 1 ο Μέρος Ηµεροµηνία Παράδοσης: Παρασκευή, 29 Νοεµβρίου 2013, ώρα 23:59. Τρόπος Παράδοσης:

Διαβάστε περισσότερα

Θεωρητικό Μέρος. int rec(int n) { int n1, n2; if (n <= 5) then return n; else { n1 = rec(n-5); n2 = rec(n-3); return (n1+n2); } }

Θεωρητικό Μέρος. int rec(int n) { int n1, n2; if (n <= 5) then return n; else { n1 = rec(n-5); n2 = rec(n-3); return (n1+n2); } } Πανεπιστήµιο Ιωαννίνων, Τµήµα Πληροφορικής 2 Νοεµβρίου 2005 Η/Υ 432: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκού Έτους 2005-2006 Παναγιώτα Φατούρου Ηµεροµηνία Παράδοσης 1 ο Σετ Ασκήσεων Θεωρητικό Μέρος:

Διαβάστε περισσότερα

Project HY240a - 1η Φάση Διδάσκουσα: Παναγιώτα Φατούρου Βοηθός: Νικόλαος Μπατσαράς Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Ηράκλειο, 24 Οκτωβρίου 2018 Διαδικαστικά Θεματολογία Δομές Μεγάλου Αλεξάνδρου

Διαβάστε περισσότερα

HY-486 Αρχές Κατανεμημένου Υπολογισμού

HY-486 Αρχές Κατανεμημένου Υπολογισμού HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο 2016-2017 Πρώτη Προγραμματιστική Εργασία Προθεσμία παράδοσης: Τρίτη 2/5 στις 23:59. 1. Γενική Περιγραφή Στην πρώτη προγραμματιστική εργασία καλείστε

Διαβάστε περισσότερα

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2014-15 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος Ημερομηνία Παράδοσης: Παρασκευή, 19 Δεκεμβρίου 2014, ώρα 23:59. Τρόπος

Διαβάστε περισσότερα

ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 2 ο Μέρος

ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 2 ο Μέρος ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2014-15 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 2 ο Μέρος Ηµεροµηνία Παράδοσης: Κυριακή, 18 Μαΐου 2015, ώρα 23:59. Τρόπος Παράδοσης:

Διαβάστε περισσότερα

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2017-2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος Ημερομηνία Παράδοσης: Παρασκευή, 22 Δεκεμβρίου 2017, ώρα 23:59. Τρόπος

Διαβάστε περισσότερα

Φροντιστήριο 4 Σκελετοί Λύσεων

Φροντιστήριο 4 Σκελετοί Λύσεων Φροντιστήριο 4 Σκελετοί Λύσεων 1. Ο ζητούμενος ΑΤΔ μπορεί να υλοποιηθεί ως εξής: (i) Διαδοχική χορήγηση μνήμης Υποθέτουμε ότι οι λίστες μας έχουν μέγιστο μέγεθος max και χρησιμοποιούμε τη δομή type elements[max];

Διαβάστε περισσότερα

ΗΥ486 - Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο Δεύτερη Προγραμματιστική Εργασία

ΗΥ486 - Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο Δεύτερη Προγραμματιστική Εργασία ΗΥ486 - Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο 2015-2016 Δεύτερη Προγραμματιστική Εργασία Γενική περιγραφή Στη δεύτερη προγραμματιστική εργασία καλείστε να υλοποιήσετε ένα διομότιμο σύστημα (Peer-to-

Διαβάστε περισσότερα

HY240 : Δομές Δεδομένων. Φροντιστήριο Προγραμματιστικής Εργασίας 2 ο και 3 ο Μέρος

HY240 : Δομές Δεδομένων. Φροντιστήριο Προγραμματιστικής Εργασίας 2 ο και 3 ο Μέρος HY240 : Δομές Δεδομένων Φροντιστήριο Προγραμματιστικής Εργασίας 2 ο και 3 ο Μέρος Εισαγωγή Στο 2 ο μέρος της εργασίας θα πρέπει να γίνουν τροποποιήσεις στο πρόγραμμα που προέκυψε κατά την υλοποίηση του

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 2: Εκφράσεις, πίνακες και βρόχοι 14 Απριλίου 2016 Το σημερινό εργαστήριο

Διαβάστε περισσότερα

My Instagram Παρουσίαση Α Μέρους Προγραμματιστικής Εργασίας

My Instagram Παρουσίαση Α Μέρους Προγραμματιστικής Εργασίας My Instagram Παρουσίαση Α Μέρους Προγραμματιστικής Εργασίας ΗΥ-240 Χειμερινό Εξάμηνο 2013 Διδάσκουσα: Παναγιώτα Φατούρου This presentation by Foivos S. Zakkak is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike

Διαβάστε περισσότερα

Πληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο Καθηγητής Δ. Γουνόπουλος

Πληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο Καθηγητής Δ. Γουνόπουλος Πληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο 2016 2017 Καθηγητής Δ. Γουνόπουλος Άσκηση 2 - Εξωτερική Ταξινόμηση Παράδοση: 20/01/2017 Σκοπός της εργασίας αυτής

Διαβάστε περισσότερα

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 7/1/2014, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 7/1/2014, 22:00 ΣΕΤ ΑΣΚΗΣΕΩΝ 3 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2013-2014 Προθεσµία: 7/1/2014, 22:00 Περιεχόµενα Διαβάστε πριν ξεκινήσετε Εκφώνηση άσκησης 1 Οδηγίες αποστολής άσκησης Πριν ξεκινήσετε (ΔΙΑΒΑΣΤΕ

Διαβάστε περισσότερα

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής Ενότητα 5: Δείκτες και Δυναμική Δέσμευση- Αποδέσμευση Μνήμης στη C/ Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με δείκτες /Ένα πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν

Διαβάστε περισσότερα

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο 2011 2012 Καθηγητές Μ. Χατζόπουλος, Δ. Γουνόπουλος Άσκηση 1 Παράδοση 4 Μαϊου Σκοπός της εργασίας αυτής είναι η κατανόηση

Διαβάστε περισσότερα

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο 2010 2011 Δ. Γουνόπουλος Ι. Ιωαννίδης Άσκηση 1: Συγχώνευση Εγγραφών Δυαδικών Αρχείων Προθεσμία: 2 Μαΐου 2011, 5:00μμ

Διαβάστε περισσότερα

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσμία: 17/1/14, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσμία: 17/1/14, 22:00 ΣΕΤ ΑΣΚΗΣΕΩΝ 4 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2013-2014 Προθεσμία: 17/1/14, 22:00 Περιεχόμενα Διαδικαστικά Οδηγίες Αποστολής Εκφώνηση άσκησης (Στάδιο 0, Στάδιο 1, Στάδιο 2, Στάδιο 3, Στάδιο

Διαβάστε περισσότερα

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ 00497 -Δεν ελέγχετε αν η createlist εκτελλέστικε σωστά και δεν τερµατίζετε το πρόγραµµα σε διαφορετική -Σωστά βρίσκετε το σηµείο στο οποίο πρέπει να προστεθεί ο κόµβος. -Σωστά τερµατίζετε

Διαβάστε περισσότερα

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 8/1/12, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 8/1/12, 22:00 ΣΕΤ ΑΣΚΗΣΕΩΝ 4 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2011-2012 Προθεσµία: 8/1/12, 22:00 Περιεχόµενα Διαβάστε πριν ξεκινήσετε Εκφώνηση άσκησης Οδηγίες αποστολής άσκησης Πριν ξεκινήσετε (ΔΙΑΒΑΣΤΕ

Διαβάστε περισσότερα

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο 2009 2010

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο 2009 2010 Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο 2009 2010 Καθηγητής. Γουνόπουλος Άσκηση 1 Σκοπός της εργασίας αυτής είναι η κατανόηση της εσωτερικής λειτουργίας

Διαβάστε περισσότερα

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2016 Διδάσκουσα: Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 2 ο Μέρος

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2016 Διδάσκουσα: Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 2 ο Μέρος ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2016 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία 2 ο Μέρος Ημερομηνία Παράδοσης: Κυριακή, 15 Μαίου 2016, ώρα 23:59. Τρόπος Παράδοσης: Χρησιμοποιώντας

Διαβάστε περισσότερα

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Άσκηση 1 α) Η δομή σταθμισμένης ένωσης με συμπίεση διαδρομής μπορεί να τροποποιηθεί πολύ εύκολα ώστε να υποστηρίζει τις

Διαβάστε περισσότερα

Santa Claus Παρουσίαση Α Μέρους Προγραμματιστικής Εργασίας

Santa Claus Παρουσίαση Α Μέρους Προγραμματιστικής Εργασίας Santa Claus Παρουσίαση Α Μέρους Προγραμματιστικής Εργασίας ΗΥ-240 Χειμερινό Εξάμηνο 2015 Διδάσκουσα: Παναγιώτα Φατούρου Παρουσίαση: Βασίλειος Θεοδοσιάδης (vtheodos@ics.forth.gr) Πέμπτη, 29 Οκτωβρίου 2015

Διαβάστε περισσότερα

Προγραμματιστική Εργασία Μέρος Β. Δρακωνάκης Κώστας Παπαϊωάννου Αντώνης

Προγραμματιστική Εργασία Μέρος Β. Δρακωνάκης Κώστας Παπαϊωάννου Αντώνης Προγραμματιστική Εργασία Μέρος Β Δρακωνάκης Κώστας Παπαϊωάννου Αντώνης Διαδικαστικά Παράδοση: Σάββατο, 19 Δεκεμβρίου 2016, ώρα 23:59 Compile & run σε μηχανήματα της σχολής Μέρος της βαθμολογίας Τρόπος

Διαβάστε περισσότερα

Πληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο Καθηγητής Δ. Γουνόπουλος

Πληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο Καθηγητής Δ. Γουνόπουλος Πληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο 2018 2019 Καθηγητής Δ. Γουνόπουλος Άσκηση 1/2 - Προθεσμία: 18 Ιαν. 2019 Σκοπός της εργασίας αυτής είναι η κατανόηση

Διαβάστε περισσότερα

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 15: Διασυνδεμένες Δομές - Λίστες Διασυνδεδεμένες δομές δεδομένων Η μνήμη ενός πίνακα δεσμεύεται συνεχόμενα. Η πρόσβαση στο i-οστό στοιχείο είναι άμεση καθώς η διεύθυνση

Διαβάστε περισσότερα

Πληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο Καθηγητής Δ. Γουνόπουλος

Πληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο Καθηγητής Δ. Γουνόπουλος Πληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο 2016 2017 Καθηγητής Δ. Γουνόπουλος Άσκηση 1 - Προθεσμία: 9 Δεκ. 2016 Σκοπός της εργασίας αυτής είναι η κατανόηση

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών Ακαδηµαϊκό έτος 2010 2011, Χειµερινό εξάµηνο Ασκήσεις Επανάληψης Ενδιάµεσης

Διαβάστε περισσότερα

HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο

HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο 2016-2017 Δέυτερη Προγραμματιστική Εργασία Προθεσμία παράδοσης: 19/6/2017 1. Γενική Περιγραφή Στην δεύτερη προγραμματιστική εργασία καλείστε να υλοποιήσετε

Διαβάστε περισσότερα

ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δυναμική Δέσμευση Μνήμης και Δομές Δεδομένων (Φροντιστήριο)

ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δυναμική Δέσμευση Μνήμης και Δομές Δεδομένων (Φροντιστήριο) ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δυναμική Δέσμευση Μνήμης και Δομές Δεδομένων (Φροντιστήριο) Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου http://www.cs.ucy.ac.cy/courses/epl232 Το μάθημα αυτό

Διαβάστε περισσότερα

Πληροφορική 2. Δομές δεδομένων και αρχείων

Πληροφορική 2. Δομές δεδομένων και αρχείων Πληροφορική 2 Δομές δεδομένων και αρχείων 1 2 Δομή Δεδομένων (data structure) Δομή δεδομένων είναι μια συλλογή δεδομένων που έχουν μεταξύ τους μια συγκεκριμένη σχέση Παραδείγματα δομών δεδομένων Πίνακες

Διαβάστε περισσότερα

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Χειμερινό Εξάμηνο M. Χατζόπουλος. Προθεσμία: 19/01/2015

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Χειμερινό Εξάμηνο M. Χατζόπουλος. Προθεσμία: 19/01/2015 Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Χειμερινό Εξάμηνο 2013 2014 M. Χατζόπουλος Προθεσμία: 19/01/2015 Σκοπός της εργασίας είναι η κατανόηση της εσωτερικής λειτουργίας

Διαβάστε περισσότερα

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 13/1/13, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 13/1/13, 22:00 ΣΕΤ ΑΣΚΗΣΕΩΝ 4 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2012-2013 Προθεσµία: 13/1/13, 22:00 Περιεχόµενα Διαδικαστικά Εκφώνηση άσκησης (Στάδιο 0, Στάδιο 1, Στάδιο 2, Στάδιο 3, Στάδιο 4, Στάδιο 5) Οδηγίες

Διαβάστε περισσότερα

Πληροφορική & Τηλεπικοινωνίες K25 Ανάπτυξη Λογισμικού Εαρινό Εξάμηνο 2008 Καθηγητής Γιάννης Ιωαννίδης. Μέρος 2ο: Επίπεδο Ευρετηρίου Β+ Δένδρων

Πληροφορική & Τηλεπικοινωνίες K25 Ανάπτυξη Λογισμικού Εαρινό Εξάμηνο 2008 Καθηγητής Γιάννης Ιωαννίδης. Μέρος 2ο: Επίπεδο Ευρετηρίου Β+ Δένδρων Πληροφορική & Τηλεπικοινωνίες K25 Ανάπτυξη Λογισμικού Εαρινό Εξάμηνο 2008 Καθηγητής Γιάννης Ιωαννίδης Μέρος 2ο: Επίπεδο Ευρετηρίου Β+ Δένδρων (Ημερομηνία Παράδοσης: Δευτέρα 5/5/2008, 11:59μμ Εισαγωγή Στο

Διαβάστε περισσότερα

Οντοκεντρικός Προγραμματισμός II C++ Project Xειμερινό Εξάμηνο Organisms

Οντοκεντρικός Προγραμματισμός II C++ Project Xειμερινό Εξάμηνο Organisms Οντοκεντρικός Προγραμματισμός II C++ Project Xειμερινό Εξάμηνο 2009-2010 Περιγραφή Project Το project αφορά την προσομοίωση ενός οικοσυστήματος. Το οικοσύστημα μας αποτελείται από διάφορα είδη οργανισμών

Διαβάστε περισσότερα

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2018-2019 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος Ημερομηνία Παράδοσης: Παρασκευή, 21 Δεκεμβρίου 2018, ώρα 23:59 Τρόπος

Διαβάστε περισσότερα

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια: Εργαστήριο 6: 6.1 Δομές Επανάληψης Βρόγχοι (Loops) Όταν θέλουμε να επαναληφθεί μια ομάδα εντολών τη βάζουμε μέσα σε ένα βρόχο επανάληψης. Το αν θα (ξανα)επαναληφθεί η εκτέλεση της ομάδας εντολών καθορίζεται

Διαβάστε περισσότερα

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Χειμερινό Εξάμηνο

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Χειμερινό Εξάμηνο Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Χειμερινό Εξάμηνο 2015 2016 Ι. Ιωαννίδης Άσκηση 3: Αποθήκευση κατά στήλες Προθεσμία: 25 Ιανουαρίου 2016, 11:59μμ Ο σκοπός της εργασίας

Διαβάστε περισσότερα

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2016-2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος Ημερομηνία Παράδοσης: Δευτέρα, 19 Δεκεμβρίου 2016, ώρα 23:59. Τρόπος

Διαβάστε περισσότερα

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Άσκηση αυτοαξιολόγησης 2 Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών Ενότητα 2: Στοίβες Ουρές - Λίστες Ασκήσεις και Λύσεις Άσκηση 1 Έστω ότι µια

Διαβάστε περισσότερα

ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ Η/Υ, ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ

ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ Η/Υ, ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ Η/Υ, ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2016-2017 ΕΡΓΑΣΙΑ ΕΞΑΜΗΝΟΥ Ποιος πρέπει να ολοκληρώσει αυτή την εργασία? Φοιτητές έτους >= 2 που

Διαβάστε περισσότερα

Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εύρεση, εισαγωγή, διαγραφή) - Σύγκριση Συνδεδεμένων Λιστών με Πίνακες

Διαβάστε περισσότερα

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: Πέµπτη 17/12/2015, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: Πέµπτη 17/12/2015, 22:00 ΣΕΤ ΑΣΚΗΣΕΩΝ 3 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2015-2016 Προθεσµία: Πέµπτη 17/12/2015, 22:00 Διαβάστε πριν ξεκινήσετε Διαβάστε την εκφώνηση προσεκτικά και σχεδιάστε το πρόγραµµά σας πριν

Διαβάστε περισσότερα

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 2 ο Μέρος

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 2 ο Μέρος ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2013-14 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία 2 ο Μέρος Ημερομηνία Παράδοσης: Τετάρτη, 15 Ιανουαρίου 2014, ώρα 23:59. Τρόπος Παράδοσης:

Διαβάστε περισσότερα

Φροντιστήριο 4 Σκελετοί Λύσεων

Φροντιστήριο 4 Σκελετοί Λύσεων Φροντιστήριο 4 Σκελετοί Λύσεων Άσκηση 1 Υποθέτουμε πως οι λίστες είναι υλοποιημένες χρησιμοποιώντας τις πιο κάτω δομές. typedef struct Node{ type data; struct node *next; node; node *top; list; Υλοποιούμε

Διαβάστε περισσότερα

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 22/12/2016, 21:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 22/12/2016, 21:00 ΣΕΤ ΑΣΚΗΣΕΩΝ 4 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2016-2017 Προθεσµία: 22/12/2016, 21:00 Διαδικαστικά Η εργασία αυτή µπορεί να γίνει σε οµάδες µέχρι 2 ατόµων. Δεν είναι απαραίτητο να συνεργαστείτε

Διαβάστε περισσότερα

Εργαστήριο 5. Εαρινό Εξάμηνο

Εργαστήριο 5. Εαρινό Εξάμηνο Τομέας Υλικού και Αρχιτεκτονικής Υπολογιστών ΗΥ134 - Εισαγωγή στην Οργάνωση και Σχεδίαση Η/Υ 1 Εργαστήριο 5 Εαρινό Εξάμηνο 2012-2013 Στό χόι τόυ εργαστηρι όυ Χρήση στοίβας Αναδρομή Δομές δεδομένων Δυναμική

Διαβάστε περισσότερα

Παράδειγμα 2. Λύση & Επεξηγήσεις. Τέλος_επανάληψης Εμφάνισε "Ναι" Τέλος Α2

Παράδειγμα 2. Λύση & Επεξηγήσεις. Τέλος_επανάληψης Εμφάνισε Ναι Τέλος Α2 Διδακτική πρόταση ΕΝΟΤΗΤΑ 2η, Θέματα Θεωρητικής Επιστήμης των Υπολογιστών Κεφάλαιο 2.2. Παράγραφος 2.2.7.4 Εντολές Όσο επανάλαβε και Μέχρις_ότου Η διαπραγμάτευση των εντολών επανάληψης είναι σημαντικό

Διαβάστε περισσότερα

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα). Κ08 Δομές Δεδομένων και Τεχνικές Προγραμματισμού Διδάσκων: Μανόλης Κουμπαράκης Εαρινό Εξάμηνο 2016-2017. Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

Διαβάστε περισσότερα

Ενότητα 2: Στοίβες Ουρές - Λίστες Ασκήσεις και Λύσεις

Ενότητα 2: Στοίβες Ουρές - Λίστες Ασκήσεις και Λύσεις Ενότητα 2: Στοίβες Ουρές - Λίστες Ασκήσεις και Λύσεις Άσκηση 1 Έστω ότι µια βιβλιοθήκη σας παρέχει πρόσβαση σε στοίβες ακεραίων. Η βιβλιοθήκη σας επιτρέπει να ορίσετε µια στοίβα και να καλέσετε τις 5 βασικές

Διαβάστε περισσότερα

3. Γράψτε μία εντολή που να εμφανίζει π.χ. «Πόσα είναι τα κορίτσια του;» και μία που να εμφανίζει: «Τα κορίτσια του Τζειμς Μποντ είναι 4»

3. Γράψτε μία εντολή που να εμφανίζει π.χ. «Πόσα είναι τα κορίτσια του;» και μία που να εμφανίζει: «Τα κορίτσια του Τζειμς Μποντ είναι 4» 1. Τι φαντάζεστε ότι θα κάνει η παρακάτω εντολή: print("καλημέρα.") εκτελέστε την στο περιβάλλον Python Shell 2. γράψτε μια παρόμοια π.χ. print("το όνομα μου είναι Μποντ.") 3. Γράψτε μία εντολή που να

Διαβάστε περισσότερα

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 12/10/2017

Διαβάστε περισσότερα

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη.

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη. Εργαστήριο 4: 4.1 Η Δομή Ελέγχου if Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη. Γενική Μορφή: Παρατηρήσεις:

Διαβάστε περισσότερα

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 21/10/2016

Διαβάστε περισσότερα

Δρομολόγηση Και Πολύχρωματισμός. Γραφημάτων ΚΑΡΑΓΕΩΡΓΟΣ ΤΙΜΟΘΕΟΣ Α.Μ 1026

Δρομολόγηση Και Πολύχρωματισμός. Γραφημάτων ΚΑΡΑΓΕΩΡΓΟΣ ΤΙΜΟΘΕΟΣ Α.Μ 1026 Δρομολόγηση Και Πολύχρωματισμός Μονοπατιών Γραφημάτων ΚΑΡΑΓΕΩΡΓΟΣ ΤΙΜΟΘΕΟΣ Α.Μ 1026 Εισαγωγή. Το πρόβλημα με το οποίο θα ασχοληθούμε εδώ είναι γνωστό σαν: Δρομολόγηση και Πολύ-χρωματισμός Διαδρομών (Routing

Διαβάστε περισσότερα

Ενότητα 2: Στοίβες Ουρές - Λίστες Ασκήσεις και Λύσεις

Ενότητα 2: Στοίβες Ουρές - Λίστες Ασκήσεις και Λύσεις Ενότητα 2: Στοίβες Ουρές - Λίστες Ασκήσεις και Λύσεις Άσκηση 1 Έστω ότι μια βιβλιοθήκη σας παρέχει πρόσβαση σε στοίβες ακεραίων. Η βιβλιοθήκη σας επιτρέπει να ορίσετε μια στοίβα και να καλέσετε τις 5 βασικές

Διαβάστε περισσότερα

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128] ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2017 (27/1/2017) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

Διαβάστε περισσότερα

Δομές Δεδομένων. Ενότητα 6: Εφαρμογή Συνδεδεμένων Λιστών: Αλφαβητικό ευρετήριο κειμένου- Υλοποίηση ΑΤΔ Στοίβα και Ουρά με δείκτες

Δομές Δεδομένων. Ενότητα 6: Εφαρμογή Συνδεδεμένων Λιστών: Αλφαβητικό ευρετήριο κειμένου- Υλοποίηση ΑΤΔ Στοίβα και Ουρά με δείκτες Ενότητα 6: Εφαρμογή Συνδεδεμένων Λιστών: Αλφαβητικό ευρετήριο κειμένου- Υλοποίηση ΑΤΔ Στοίβα και Ουρά με δείκτες Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

Διαβάστε περισσότερα

Η Απάντηση. Φύλλο Εργασίας. Μηνύματα

Η Απάντηση. Φύλλο Εργασίας. Μηνύματα Η Απάντηση Φύλλο Εργασίας Στο βιβλίο The Hitchhiker s Guide to the Galaxy, περιγράφεται μια υπερευφυής φυλή η οποία αποφασίζει να φτιάξει έναν υπολογιστή που θα δώσει οριστικά την απάντηση για το νόημα

Διαβάστε περισσότερα

FAIL PASS PASS οριακά

FAIL PASS PASS οριακά AEM 0001 0002 COMMENTS οριακά -Το πρόγραµµά σου δουλεύει λάθος για τις εισόδους: 7 -Δεν έχεις µεριµνήσει για την περίπτωση step=1. Μπορούσες να θεωρήσεις ειδική περίπτωση και να την υλοποιείς σε άλλον

Διαβάστε περισσότερα

Διασυνδεδεμένες Δομές. Λίστες. Προγραμματισμός II 1

Διασυνδεδεμένες Δομές. Λίστες. Προγραμματισμός II 1 Διασυνδεδεμένες Δομές Λίστες Προγραμματισμός II 1 lalis@inf.uth.gr Διασυνδεδεμένες δομές Η μνήμη ενός πίνακα δεσμεύεται συνεχόμενα η πρόσβαση στο i-οστό στοιχείο είναι άμεση καθώς η διεύθυνση του είναι

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ 4 ο ΣΕΤ ΑΣΚΗΣΕΩΝ Οι ασκήσεις αυτού του φυλλαδίου καλύπτουν τα παρακάτω θέματα: Δείκτες Δομές Το τέταρτο σύνολο

Διαβάστε περισσότερα

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης Σύνοψη Προηγούμενου Πίνακες (Arrays Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς Διαδικαστικά θέματα. Aντικείμενο Μαθήματος. Aντικείμενα, Κλάσεις, Μέθοδοι, Μεταβλητές.

Διαβάστε περισσότερα

HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο

HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο 2017-2018 Πρώτη Προγραμματιστική Εργασία Προθεσμία παράδοσης: Δευτέρα 30/4 στις 23:59. 1. Γενική Περιγραφή Στην πρώτη προγραμματιστική εργασία καλείστε

Διαβάστε περισσότερα

Ενότητα 6: Κατακερματισμός Ασκήσεις και Λύσεις

Ενότητα 6: Κατακερματισμός Ασκήσεις και Λύσεις ΗΥ2, Ενότητα : Ασκήσεις και Λύσεις Ενότητα : Κατακερματισμός Ασκήσεις και Λύσεις Άσκηση 1 Χρησιμοποιήστε τη συνάρτηση κατακερματισμού της διαίρεσης ως πρωτεύουσα συνάρτηση κατακερματισμού και τη συνάρτηση

Διαβάστε περισσότερα

Ηλεκτρονικοί Υπολογιστές

Ηλεκτρονικοί Υπολογιστές ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΧΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα 9: Πίνακες στη C++ Ζαχαρούλα Ανδρεοπούλου Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 5/12/10, 23:59

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 5/12/10, 23:59 ΣΕΤ ΑΣΚΗΣΕΩΝ 3 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2010-2011 Προθεσµία: 5/12/10, 23:59 Στόχοι structs Πίνακες Συναρτήσεις Συµβολοσειρές Χρήση µεταβλητών και σταθερών Χρήση τελεστών Χρήση δοµών

Διαβάστε περισσότερα

Προγραμματισμός Ι. Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δομές Δεδομένων Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2009-2010 Δομές Δεδομένων Μια δομή δεδομένων είναι μια συλλογή δεδομένων με κάποιες

Διαβάστε περισσότερα

Τµήµα Πληροφορικής. Δοµές Δεδοµένων - Εργασία 2. Φθινοπωρινό Εξάµηνο Διδάσκων: E. Μαρκάκης

Τµήµα Πληροφορικής. Δοµές Δεδοµένων - Εργασία 2. Φθινοπωρινό Εξάµηνο Διδάσκων: E. Μαρκάκης Οικονοµικό Πανεπιστήµιο Αθηνών Τµήµα Πληροφορικής Φθινοπωρινό Εξάµηνο 2016 Δοµές Δεδοµένων - Εργασία 2 Διδάσκων: E. Μαρκάκης Ουρές προτεραιότητας - Προσοµοίωση της λειτουργίας ενός print server Σκοπός

Διαβάστε περισσότερα

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 18/12/12, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 18/12/12, 22:00 ΣΕΤ ΑΣΚΗΣΕΩΝ 3 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2012-2013 Προθεσµία: 18/12/12, 22:00 Περιεχόµενα Διαβάστε πριν ξεκινήσετε Εκφώνηση άσκησης 1 Οδηγίες αποστολής άσκησης Διαδικαστικά Η εργασία

Διαβάστε περισσότερα

Σενάριο Χρήσης myschool

Σενάριο Χρήσης myschool Σενάριο Χρήσης ΦΟΡΕΙΣ Επιβεβαίωση των Στοιχείων του Φορέα Αρχικά, θα κληθείτε να ελέγξετε την ορθότητα των στοιχείων του Φορέα σας. Επιλέγοντας την καρτέλα «Φορείς», από το μενού που βρίσκεται στο πάνω

Διαβάστε περισσότερα

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο 2009 2010 Καθηγητής Δ. Γουνόπουλος Άσκηση 2 Σε συνέχεια της πρώτης άσκησης, σκοπός της δεύτερης εργασίας είναι η

Διαβάστε περισσότερα

Διάλεξη 15: Δομές Δεδομένων IV (Διπλά Συνδεδεμένες Λίστες)

Διάλεξη 15: Δομές Δεδομένων IV (Διπλά Συνδεδεμένες Λίστες) Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Διάλεξη 15: Δομές Δεδομένων IV (Διπλά Συνδεδεμένες Λίστες) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl232

Διαβάστε περισσότερα

Δομές Δεδομένων. Ενότητα 12: Κατακερματισμός: Χειρισμός Συγκρούσεων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής.

Δομές Δεδομένων. Ενότητα 12: Κατακερματισμός: Χειρισμός Συγκρούσεων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Ενότητα 12: Κατακερματισμός: Χειρισμός Συγκρούσεων Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες,

Διαβάστε περισσότερα

Κατ οίκον Εργασία 2 Σκελετοί Λύσεων

Κατ οίκον Εργασία 2 Σκελετοί Λύσεων Κατ οίκον Εργασία 2 Σκελετοί Λύσεων Άσκηση 1 Ο ζητούμενος ΑΤΔ μπορεί να υλοποιηθεί ως μια ακολουθία από στοιχεία τύπου window συνοδευόμενη από τις πράξεις: MakeNewWindow(L,w) Destroy(L,w) SwitchTo(L,w)

Διαβάστε περισσότερα

Διάλεξη 17: Δυαδικά Δέντρα. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διάλεξη 17: Δυαδικά Δέντρα. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 7: Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυαδικά Δένδρα Δυαδικά Δένδρα Αναζήτησης Πράξεις Εισαγωγής, Εύρεσης Στοιχείου, Διαγραφής Μικρότερου Στοιχείου Διδάσκων:

Διαβάστε περισσότερα

- Το πρόγραµµα σας δίνει τα αναµενόµενα αποτελέσµατα.

- Το πρόγραµµα σας δίνει τα αναµενόµενα αποτελέσµατα. Α.Μ. ΒΑΘΜΟΣ ΣΧΟΛΙΑ 1349 FAIL Δεν ελήφθη άσκηση 1482 1556 1559 1562 1563 1565 1566 FAIL - Στην initialize πρέπει να κάνετε έλεγχο αν η malloc αποτυγχάνει για κάθε κλήση της, άρα και για δέσµευση χώρου για

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ 2 ο ΣΕΤ ΑΣΚΗΣΕΩΝ Οι ασκήσεις αυτού του φυλλαδίου καλύπτουν τα παρακάτω θέματα: Συναρτήσεις (κεφάλαιο Functions)

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΗ ΑΣΚΗΣΗ 3

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΗ ΑΣΚΗΣΗ 3 ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 231: Δομές Δεδομένων και Αλγόριθμοι Εαρινό Εξάμηνο 2013 ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΗ ΑΣΚΗΣΗ 3 Διδάσκων Καθηγητής: Παναγιώτης Ανδρέου Ημερομηνία Υποβολής: 05/04/2013 Ημερομηνία

Διαβάστε περισσότερα

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Άσκηση αυτοαξιολόγησης 3-4 Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών Ενότητες 3 & 4: ένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις Άσκηση 1 Γράψτε

Διαβάστε περισσότερα

Προγραµµατισµός Ι (ΗΥ120)

Προγραµµατισµός Ι (ΗΥ120) Προγραµµατισµός Ι (ΗΥ120) Διάλεξη 15: Διασυνδεµένες Δοµές - Λίστες Δοµές δεδοµένων! Ένα τυπικό πρόγραµµα επεξεργάζεται δεδοµένα Πώς θα τα διατάξουµε? 2 Τι λειτουργίες θέλουµε να εκτελέσουµε? Πώς θα υλοποιήσουµε

Διαβάστε περισσότερα