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

Σχετικά έγγραφα
ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 27/11/11, 22:00

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

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

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

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

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

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

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

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

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 15/11/09, 23:59

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 1. Προθεσµία: Τρίτη 10/11/2015, 22:00

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 1. Προθεσμία: Τετάρτη 9/11/2016, 21:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσμία: Τετάρτη 23/11/2016, 21:00

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

Προγραµµατισµός Ι ΕΡΓΑΣΤΗΡΙΟ 5 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: Τετάρτη 7/12/2016, 21:00

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

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

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

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

Προγραµµατισµός Ι ΕΡΓΑΣΤΗΡΙΟ 2 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

ΣΕΤ ΑΣΚΗΣΕΩΝ 4 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ Προθεσµία: 9/1/2015, 22:00

Προγραµµατισµός Ι ΕΡΓΑΣΤΗΡΙΟ 5 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Προγραµµατισµός Ι Εργαστήριο 9ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 9 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Προγραµµατισµός Ι Εργαστήριο 6ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 6 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Προγραµµατισµός Ι Εργαστήριο 6ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 6 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

ΣΕΤ ΑΣΚΗΣΕΩΝ 3 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ Προθεσµία: 10/12/2014, 22:00

Προγραµµατισµός Ι ΕΡΓΑΣΤΗΡΙΟ 4 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Προγραµµατισµός Ι Εργαστήριο 13ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 13 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Προγραµµατισµός Ι Εργαστήριο 13ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 13 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

lab7: Συμβολοσειρές Συμβολοσειρές Ασφάλεια εισόδου Αναγνωσιμότητα κώδικα (σχόλια, στοίχιση, περιγραφικά ονόματα μεταβλητών, κτλ.)

Προγραµµατισµός Ι ΕΡΓΑΣΤΗΡΙΟ 3 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

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

Προγραµµατισµός Ι ΕΡΓΑΣΤΗΡΙΟ 4 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Προγραμματισμός Ι Εργαστήριο 5ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 5 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Προγραμματισμός Ι Εργαστήριο 9ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 9 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Προγραµµατισµός Ι Εργαστήριο 3ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 3 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Προγραμματισμός Ι Εργαστήριο 8ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 8 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Προγραμματισμός Ι Εργαστήριο 8ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 8 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ' ΛΥΚΕΙΟΥ ΤΕΧΝ/ΚΗΣ ΚΑΤ/ΝΣΗΣ (Πλ. & Υπ.) 2006 ΕΚΦΩΝΗΣΕΙΣ ÈÅÌÅËÉÏ

ΘΕΜΑ Α. 1. Η δυαδική αναζήτηση χρησιμοποιείται μόνο σε ταξινομημένες συλλογές δεδομένων.

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ (ΝΕΟ ΣΥΣΤΗΜΑ) 27 ΜΑΪΟΥ 2016 ΕΚΦΩΝΗΣΕΙΣ ÊÁËÁÌÁÔÁ

Sheet2. Σωστή, και µπράβο που µεριµνήσατε για λίστες διαφορετικών µεγεθών.

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ' ΛΥΚΕΙΟΥ ΤΕΧΝ/ΚΗΣ ΚΑΤ/ΝΣΗΣ (Πλ. & Υπ.) 2006 ΕΚΦΩΝΗΣΕΙΣ

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

Sheet2 Α.Μ FAIL. οριακό PASS. - Έπρεπε να χρησιµοποιήσετε συναρτήσεις από τη string.h

ΘΕΜΑ Α ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

Βαθμός Σχόλια. lab5 PASS PASS PASS PASS PASS. Οριακά PASS - Καλή δουλειά

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ 12 ΙΟΥΝΙΟΥ 2017 ΕΚΦΩΝΗΣΕΙΣ

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

Γ. ίνεται το παρακάτω πρόγραµµα και υποπρογράµµατα: ΠΡΟΓΡΑΜΜΑ Κύριο ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Α, Β, Γ ΑΡΧΗ ΙΑΒΑΣΕ Α, Β, Γ ΚΑΛΕΣΕ ιαδ1(α, Β, Γ)

FAIL PASS PASS οριακά

ΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ. Σχήµα 1: H έννοια των πινάκων

Τελικός Κύκλος Διαγωνισμάτων Γ ΛΥΚΕΙΟΥ Κυριακή 17 Απριλίου 2016 Μάθημα: Α.Ε.Π.Π. KTIΡΙΟ ΤΜΗΜΑΤΑ ΚΑΛΟΚΑΙΡΙΝΑ ΑΡΓΥΡΟΥΠΟΛΗΣ - ΗΛΙΟΥΠΟΛΗΣ - ΓΛΥΦΑΔΑΣ

ÔÏÕËÁ ÓÁÑÑÇ ÊÏÌÏÔÇÍÇ

Να το ξαναγράψετε χρησιμοποιώντας αντί για την εντολή Για Τέλος_επανάληψης: α. την εντολή Όσο Τέλος_επανάληψης

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ (ΝΕΟ ΣΥΣΤΗΜΑ) 27 ΜΑΪΟΥ 2016 ΕΚΦΩΝΗΣΕΙΣ

lab6grades ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ Διαδικαστικά: Όλα οκ.

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

ÁÎÉÁ ÅÊÐÁÉÄÅÕÔÉÊÏÓ ÏÌÉËÏÓ

Α2. Να γράψετε στο τετράδιο απαντήσεών σας το κατάλληλο τμήμα κώδικα, κάνοντας τις απαραίτητες αλλαγές σύμφωνα με την εκάστοτε εκφώνηση:

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ ΛΥΚΕΙΟΥ ΗΜΕΡΟΜΗΝΙΑ: 6/04/2014

ΘΕΜΑ Α. Α2. Να αναφέρετε από τι εξαρτάται η επιλογή του καλύτερου αλγορίθμου ταξινόμησης. Μονάδες 4. Σελίδα 1 από 8

Γ' ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΚΦΩΝΗΣΕΙΣ ÏÅÖÅ

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

Β. Να εξηγήσετε τι σηµαίνει ολίσθηση ενός δυαδικού αριθµού 3 θέσεις αριστερά µπορεί να είναι: Α: ουρά Β:στοίβα Γ:και τα δυο :τίποτα

Θεωρητικό Μέρος. 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); } }

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

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

Sheet1_2. - Δεν απελευθερώνεις τη δυναµικά δεσµευµένη µνήµη. - Η έξοδος του προγράµµατός σου δεν είναι ακριβώς όπως ζητούσε η άσκηση.

H ΓΛΩΣΣΑ C. Μάθηµα 1: Το Πρώτο µας Πρόγραµµα σε C. ηµήτρης Ψούνης

lab5 -Ο κώδικάς σου είναι σωστός αλλά από εδώ και στο εξής προσπάθησε να βάζεις σχόλια στην µορφή που ζητάει το φυλλάδιο

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ. ii) Πόσες φορές θα εκτελεστεί η εντολή ΔΙΑΒΑΣΕ Α[μ,λ] στον αλγόριθμο της προηγούμενης ερώτησης; α) 35 β) 12 γ) 20

char name[5]; /* define a string of characters */

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ

k 1 j 1 A[k] i A[...]... A[...]... k A4.

Προγραμματισμός Υπολογιστών Τάξη Γ Αθανασιάδης Χρήστος ΠΕ19 ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

an:3 are:6 a:10

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

Ανακτήθηκε από την ΕΚΠΑΙΔΕΥΤΙΚΗ ΚΛΙΜΑΚΑ edu.klimaka.gr ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ

ΟΜΟΣΠΟΝ ΙΑ ΕΚΠΑΙ ΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑ ΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2014 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Γ ΤΑΞΗ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΚΑΙ ΕΠΑΛ (ΟΜΑΔΑ Β

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης Τα Εργαστηριακά Προγράμματα. Η δομή Επιλογής στη PASCAL. H δομή Επανάληψης στη PASCAL. Η εντολή επανάληψης for

Μονάδες 10. Μονάδες 9 5 PROLOG. Μονάδες 5

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ Γ ΤΑΞΗ

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

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

lab14grades ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ Γ ΤΑΞΗ

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ. ii) Πόσες φορές θα εκτελεστεί η εντολή ΔΙΑΒΑΣΕ Α[μ,λ] στον αλγόριθμο της προηγούμενης ερώτησης; α) 35 β) 12 γ) 20

lab2 -Στην printf να βάζεις \n έτσι ώστε να αλλάζει γραµµή όποτε σου εµφανίζει κάποιο µήνυµα.

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ

Transcript:

ΣΕΤ ΑΣΚΗΣΕΩΝ 4 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2011-2012 Προθεσµία: 8/1/12, 22:00 Περιεχόµενα Διαβάστε πριν ξεκινήσετε Εκφώνηση άσκησης Οδηγίες αποστολής άσκησης Πριν ξεκινήσετε (ΔΙΑΒΑΣΤΕ ΑΥΤΗ ΤΗΝ ΕΝΟΤΗΤΑ!! ) Διαβάστε ολόκληρη την εκφώνηση προσεκτικά και σχεδιάστε το πρόγραµµά σας στο χαρτί. Αποθηκεύστε το πρόγραµµά σας σε ένα αρχείο µε όνοµα hw4.c Μην προσπαθήσετε να γράψετε το πρόγραµµα µια κι έξω. Να υλοποιείτε µία-µία τις συναρτήσεις µε τη µέθοδο που χρησιµοποιήσαµε στο φροντιστήριο (αρχικά όλες οι συναρτήσεις είναι άδειες). Μετά την υλοποίηση κάθε µίας συνάρτησης, την τεστάρετε εκτεταµένα, διορθώνετε ότι λάθη έχει και µετά προχωράτε στην επόµενη συνάρτηση. Μην παραλείπετε να αποθηκεύετε αντίγραφα του προγράµµατός σας κάθε φορά που υλοποιείτε ένα µεγάλο κοµµάτι, ώστε αν σε κάποιο επόµενο στάδιο καταστραφεί το αρχείο σας, θα έχετε µια παλιότερη έκδοση από την οποία µπορείτε να συνεχίσετε. Τις επιµέρους "εκδόσεις" να τις ονοµάζετε µε διαφορετικά ονόµατα. Η άσκηση βαθµολογείται ως προς την ορθότητα, καλή χρήση συναρτήσεων, σωστή χρήση σταθερών, αναγνωσιµότητα και σχολιασµό. Επίσης, πρέπει να ακολουθήσετε ακριβώς τις προδιαγραφές κάθε συνάρτησης και η έξοδος του προγράµµατός σας να είναι ακριβώς ίδια µε την αναµενόµενη. Μη διστάζετε να ζητήσετε βοήθεια! Μπορείτε να χρησιµοποιήσετε το forum προγραµµατισµού (http://infserver.inf.uth.gr/courses/coding/) και φυσικά email. Η εργασία αυτή µπορεί να γίνει σε οµάδες µέχρι 2 ατόµων. Μπορείτε να συζητάτε τις ασκήσεις µε συµφοιτητές σας αλλά δεν επιτρέπεται η ανταλλαγή κώδικα µε οποιοδήποτε τρόπο. Ξεκινήστε νωρίς! Ο προγραµµατισµός είναι πάντα ΠΟΛΥ πιο χρονοβόρος από ό,τι περιµένετε. Εκπρόθεσµες ασκήσεις δε γίνονται δεκτές.

Άσκηση Εισαγωγή Θα γράψετε ένα πρόγραµµα το οποίο διαβάζει από ένα αρχείο πληροφορίες (τίτλο και τιµή) για ένα άγνωστο αριθµό βιβλίων, τις αποθηκεύει σε µια διασυνδεδεµένη δοµή η οποία διευκολύνει την ταξινόµησή τους, και τέλος εκτυπώνει σε δύο διαφορετικά αρχεία τις πληροφορίες ταξινοµηµένες µε βάση τον τίτλο και µε βάση την τιµή αντίστοιχα. Ακολουθούν λεπτοµερείς οδηγίες για το πώς πρέπει να λειτουργεί το πρόγραµµά σας και τι συναρτήσεις πρέπει να περιέχει. Δοµές Δεδοµένων Θα χρησιµοποιήσουµε δύο πίνακες από δείκτες σε λίστες µε κοινά σηµεία. Για την ακρίβεια: Γνωρίζουµε πως οι τιµές των βιβλίων κυµαίνονται από 0 (µη συµπεριλαµβανοµένου) έως και 100. Θέλουµε να κατασκευάσουµε ένα πίνακα από δείκτες προς την αρχή λιστών, έτσι ώστε στην 1η θέση του πίνακα να βρίσκεται δείκτης προς την αρχή λίστας που περιέχει όλα τα βιβλία µε τιµή το πολύ 10, στη δεύτερη θέση να βρίσκεται δείκτης προς λίστα που περιέχει όλα τα βιβλία µε τιµή µεγαλύτερη του 10 αλλά το πολύ 20, κοκ. Γενικά στη θέση i θα βρίσκεται µια λίστα που περιέχει όλα τα βιβλία µε τιµή µεγαλύτερη από (i-1)*10 και έως το πολύ i*10. Τα περιεχόµενα κάθε λίστας διατηρούνται ταξινοµηµένα σε αύξουσα σειρά. Παράλληλα, γνωρίζουµε πως οι τίτλοι των βιβλίων ξεκινούν από ένα γράµµα µεταξύ 'Α' και 'Ζ' (στο αγγλικό αλφάβητο). Θέλουµε να κατασκευάσουµε ένα πίνακα από δείκτες σε αρχή λιστών έτσι ώστε στην 1η θέση του πίνακα να βρίσκεται δείκτης προς µια λίστα που περιέχει όλα τα βιβλία µε τίτλους που αρχίζουν από 'Α', στη 2η θέση του πίνακα να βρίσκεται δείκτης προς µια λίστα που περιέχει όλα τα βιβλία µε τίτλους που αρχίζουν από 'Β', κοκ. Τα περιεχόµενα καθεµιάς από αυτές τις λίστες διατηρούνται ταξινοµηµένα σε λεξικογραφικά αύξουσα σειρά. Για κάθε βιβλίο θα υπάρχει ένας µόνο κόµβος ο οποίος όµως θα συµµετέχει σε δύο λίστες. Για παράδειγµα, αν έχουµε βιβλία µε τους παρακάτω τίτλους και τιµές ABC 25.6 CPU 12.39 AAA 47.4 CMOS 43.12 τότε θα είναι οργανωµένα όπως φαίνεται στο παρακάτω σχήµα:

Οι λίστες είναι απλά διασυνδεδεµένες, µη-κυκλικές, χωρίς τερµατικό. Όπως βλέπετε στο σχήµα, κάθε κόµβος έχει δύο "επόµενους" δείκτες. Έναν προς τον επόµενο κόµβο µε βάση τον τίτλο (στην ίδια "σειρά" στο σχήµα) κι έναν προς τον επόµενο κόµβο µε βάση την τιµή (στην ίδια "στήλη" στο σχήµα). Εποµένως, το struct που πρέπει να κατασκευάσετε για να αναπαραστήσετε ένα κόµβο θα περιέχει πεδία για: Τον τίτλο του βιβλίου (συµβολοσειρά µέχρι 50 χαρακτήρες, συµπεριλαµβανοµένου του '\0') Την τιµή του βιβλίου (αριθµός κινητής υποδιαστολής µεγαλύτερος του 0 και το πολύ 100) Ένα δείκτη προς τον επόµενο κόµβο ως προς την τιµή Ένα δείκτη προς τον επόµενο κόµβο ως προς τον τίτλο Τέλος, θα χρειαστεί να δηλώσετε ένα πίνακα δεικτών, µεγέθους 26 (πλήθος γραµµάτων αλφαβήτας), για την οργάνωση των δεδοµένων µε βάση τους τίτλους, κι έναν πίνακα δεικτών, µεγέθους 10 (πλήθος δεκάδων), για την οργάνωση των δεδοµένων µε βάση τις τιµές. Στάδια προγράµµατος Το πρόγραµµά σας πρέπει να αποτελείται από τα παρακάτω στάδια, τα οποία θα αναλυθούν σε επόµενες ενότητες: 1. Διαβάζει από τη γραµµή εντολής (ως όρισµα) το όνοµα ενός αρχείου εισόδου και κατασκευάζει τα ονόµατα δύο αρχείων εξόδου. 2. Διαβάζει τα στοιχεία των βιβλίων από το αρχείο εισόδου και τα αποθηκεύει στην παραπάνω δοµή 3. Εκτυπώνει τα στοιχεία στα αρχεία εξόδου όπως περιγράφεται πιο κάτω 4. Απελευθερώνει όλη τη δυναµικά δεσµευµένη µνήµη. 1: Αρχείου εισόδου Διαβάστε το όνοµα του αρχείου εισόδου ως όρισµα από τη γραµµή εντολής. Θα χρειαστεί να κατασκευάσετε δύο αρχεία εξόδου. Το ένα έχει όνοµα ίδιο µε του αρχείου εισόδου µε κατάληξη.prices και το άλλο έχει όνοµα ίδιο µε του αρχείου εισόδου µε κατάληξη.titles. Τα ονόµατα των αρχείων εξόδου αποθηκεύστε τα σε κατάλληλες συµβολοσειρές για τις οποίες έχετε δεσµεύσει ακριβώς όση µνήµη χρειάζεται. 2: Ανάγνωση δεδοµένων και εισαγωγή στη δοµή Το αρχείο εισόδου περιέχει τα στοιχεία για ένα άγνωστο αριθµό βιβλίων. Σε κάθε µία γραµµή βρίσκεται ο τίτλος ενός βιβλίου (χωρίς κενά ανάµεσα στις λέξεις), κενό και η τιµή. Κάθε φορά που διαβάζετε ένα τίτλο και µια τιµή πρέπει να χρησιµοποιείτε µια συνάρτηση µε όνοµα insert για να κατασκευάσετε τον αντίστοιχο κόµβο και τον εισάγετε στη δοµή. Η insert παίρνει τέσσερις παραµέτρους: τον πίνακα από λίστες όπου οι κόµβοι συνδέονται µε βάση τον τίτλο τον πίνακα από λίστες όπου οι κόµβοι συνδέονται µε βάση την τιµή τον τίτλο την τιµή και δεν επιστρέφει τίποτα. Αν η εισαγωγή έχει γίνει σωστά, τότε τα βιβλία θα είναι οργανωµένα µε τέτοιο τρόπο ώστε να είναι ταξινοµηµένα και ως προς τους τίτλους και ως προς τις τιµές.

3: Εκτύπωση στα αρχεία εξόδου Θυµηθείτε πως στο στάδιο 1 κατασκευάσατε δύο αρχεία εξόδου. Σε αυτό µε επέκταση.price θέλουµε να γράψουµε τα στοιχεία των βιβλίων έτσι ώστε να είναι ταξινοµηµένα ως προς την τιµή, σε αύξουσα σειρά. Σε κάθε γραµµή γράφονται τα στοιχεία ενός βιβλίου ως εξής: τίτλος κενό αριστερή_παρένθεση τιµή δεξιά_παρένθεση αλλαγή_γραµµής Αντίστοιχα, στο αρχείο µε επέκταση.title θέλουµε να γράψουµε τα στοιχεία των βιβλίων έτσι ώστε να είναι ταξινοµηµένα ως προς τον τίτλο, σε λεξικογραφικά αύξουσα σειρά. Σε κάθε γραµµή γράφονται τα στοιχεία ενός βιβλίου ως εξής: τιµή κενό αριστερή_παρένθεση τίτλος δεξιά_παρένθεση αλλαγή_γραµµής Αυτό θα το κάνετε χρησιµοποιώντας µια µόνο συνάρτηση την οποία θα καλέσετε δύο φορές. Η συνάρτηση θα έχει όνοµα save και παίρνει τις παρακάτω παραµέτρους: µια τιµή που εκφράζει επιλογή ανάµεσα σε εκτύπωση ανά τίτλο ή ανά τιµή ένα δείκτη σε αρχείο (file descriptor) ένα πίνακα δεικτών σε κόµβους όπως αυτοί περιγράφονται πιο πάνω το µέγεθος του πίνακα (ακέραιος) Την πρώτη φορά που θα καλέσετε τη save θα της δώσετε την επιλογή που σηµαίνει 'εκτύπωση ως προς τίτλο', το αρχείο µε επέκταση.title, τον αντίστοιχο πίνακα και το µέγεθός του. Η εγγραφή στο αρχείο θα γίνει όπως περιγράφεται πιο πάνω. Τη δεύτερη φορά που θα καλέσετε τη save θα δώσετε τις αντίστοιχες παραµέτρους ώστε να γίνει η εγγραφή των στοιχείων ως προς την τιµή. 4: Απελευθέρωση δυναµικά δεσµευµένης µνήµης Γράψτε µια κατάλληλη συνάρτηση για την απελευθέρωση όλης της δυναµικά δεσµευµένης µνήµης του προγράµµατος. Υποθέσεις Η είσοδος είναι πάντα σωστή. Για παράδειγµα, οι τιµές των βιβλίων θα είναι πάντα µεταξύ 0 (µη συµπεριλαµβανοµένου) και 100 (συµπεριλαµβανοµένου) εποµένως δε χρειάζεται να κάνετε ελέγχους Οι τίτλοι των βιβλίων έχουν µέγεθος το πολύ 50 (µαζί µε το '\0') και όλα τα γράµµατα είναι κεφαλαία Οι τίτλοι των βιβλίων είναι µοναδικοί. Οµοίως οι τιµές. Απαιτήσεις Απαγορεύεται η χρήση καθολικών µεταβλητών Πρέπει να ελέγχετε πάντα τις περιπτώσεις λάθους κατά την εκτέλεση (πχ αποτυχία δέσµευσης µνήµης, ανοίγµατος αρχείου, κτλ), να εκτυπώνετε βοηθητικό µήνυµα και να χειρίζεστε το πρόβληµα µε κατάλληλο τρόπο Για τη διαχείριση συµβολοσειρών πρέπει να χρησιµοποιήσετε συναρτήσεις από τη string.h Πριν παραδώσετε το πρόγραµµά σας, προσθέστε σε σχόλια στην αρχή του αρχείου τα πλήρη ονόµατα και ΑΜ των µελών της οµάδας. Παρακαλούµε να γράφετε τα σχόλια ΜΟΝΟ µε λατινικούς χαρακτήρες.

Αρχεία προς παράδοση: hw4.c Πώς να παραδώσετε τη δουλειά σας (Ακολουθείστε τις οδηγίες ακριβώς αλλιώς µπορεί να µη δούµε τα αρχεία σας) Κατασκευάστε ένα φάκελο µε όνοµα epwnumo1_am1_epwnumo2_am2 και αντιγράψτε µέσα σε αυτόν το hw4.c Πηγαίνετε στο φάκελο µέσα στον οποίο βρίσκεται το κατασκευάσατε και γράψτε την παρακάτω εντολή: tar czf epwnumo1_am1_epwnumo2_am2.tgz epwnumo1_am1_epwnumo2_am2 που epwnumo1_am1_epwnumo2_am2 Στείλτε email: στη διεύθυνση ce120lab@gmail.com αντίγραφο (CC) στον άλλο µέλος της οµάδας σας θέµα (subject) CE120 hw4 και επικολληµένο αρχείο το epwnumo1_am1_epwnumo2_am2.tgz