fall2018/k22/home m1436+at-di.

Σχετικά έγγραφα
waitpid(), read(), write(), pipe(), mkfifo() κ.α.).

./mydiz {-c -a -x -m -d -p -j} <archive-file> <list-of-files/dirs>

an:3 are:6 a:10

Kitchen Doormam. Floor with Tables. Restaurant Floorplan and Operation

$./jms console -w <jms in> -r <jms out> -o <operations file> namedpipe. (standard input).

ABC3341, CCD2345, ,... CCDA2345, , ,00E

0 The quick brown fox leaped over the lazy lazy dog 1 Quick brown foxes leaped over lazy dogs for fun

Εισαγωγή. Interface της εφαρμογής. Κ24: Προγραμματισμός Συστήματος - 1η Εργασία, Εαρινό Εξάμηνο 2019 Προθεσμία Υποβολής: Παρασκευή 15 Μαρτίου, 23:59

50 Ketseo,Theoni Sarif,Omar 104

$./MirrorInitiator -n <MirrorServerAddress> -p <MirrorServerPort> \\ -s <ContentServerAddress1:ContentServerPort1:dirorfile1:delay1, \\

... s12 s13 s14. Σχήμα1: ΙεραρχίαΔιεργασιώνμε l=3καιβάθος d=3. Οκάθεεργάτης(worker)δουλεύειμετο 1/27του αρχείου των ψήφων.

Άσκηση 3 (ανακοινώθηκε στις 14 Μαΐου 2018, προθεσμία παράδοσης: 8 Ιουνίου 2018, 12 τα μεσάνυχτα).

inotify system call interface του Linux [1, 2]. prompt >>./mirr source backup uoa.gr/fall2018/k22/home compilation.

Σημειώνουμε ότι τα αρχεία περιλαμβάνουν κανονικά αρχεία, καταλόγους και συνδέσμους (links). Οι αντίστοιχες εντολές είναι οι εξής:

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

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

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

Λειτουργικά Συστήματα (ΗΥ-345) Χειμερινό Εξάμηνο

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

εμφανίζονται σε ένα γράφημα που υλοποιείται από κλήση στην εφαρμογή gnuplot.

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C

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

ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη

ΕΡΓΑΣΤΗΡΙΟ 1: 1 Εισαγωγή, Χρήσιμες Εφαρμογές

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

Εισαγωγή στην Επιστήμη της Πληροφορικής Εργαστήριο. UNIX Μέρος 1

Αλγόριθµοι και Πολυπλοκότητα

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

Έγγραφο Προδιαγραφών Απαιτήσεων Λογισμικού για το παιχνίδι: Asylum : The Escape

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

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

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

ΥΣ02 Τεχνητή Νοημοσύνη Χειμερινό Εξάμηνο

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

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

Οι δυναμικές δομές δεδομένων στην ΑΕΠΠ

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

1 ο ΓΥΜΝΑΣΙΟ ΘΕΡΜΗΣ. Πληροφορική Α' Γυμν. Το Λειτουργικό Σύστημα του Υπολογιστή

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

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

ΘΕΜΑΤΑ ΤΕΛΙΚΗΣ ΦΑΣΗΣ

1 (6) 9 (6) 2 (3) 10 (9) 3 (6) 11 (6) 4 (8) 12 (6) 5 (6) 13 (8) 6 (5) 14 (6) 7 (6) 15 (11) 8 (8)

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη

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

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

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΥ

Δυναμικές Δομές Δεδομένων Λίστες Δένδρα - Γράφοι

ΑΠΟΤΙΜΗΣΗ ΤΟΥ ΕΡΓΟΥ ΤΟΥ ΤΜΗΜΑΤΟΣ ΣΤΟΧΟΙ ΓΙΑ ΤΗΝ ΠΕΡΙΟΔΟ ΠΑΡΑΡΤΗΜΑ ΧΙ

FAIL PASS PASS οριακά

ΕΡΓΑΣΙΑ 3. Παίζοντας Sudoku. Ημερομηνία Ανάρτησης: 16/03/2018 Ημερομηνία Παράδοσης: 03/04/2018, 09:00

Προγραμματισμός I (Θ)

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

Θέματα ΑΕΠΠ Πανελλήνιες Εξετάσεις 2008

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

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

2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΜΟΝΟ ΝΕΟ ΣΥΣΤΗΜΑ Γ ΗΜΕΡΗΣΙΩΝ

ΠΡΩΤΟΚΟΛΟ HTTP ΕΝΤΟΛΩΝ ΔΙΑΣΥΝΔΕΣΗΣ ΕΚΔΟΣΗ 1.2

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

Τι είναι υποπρόγραμμα; Τμήμα προγράμματος το οποίο επιτελεί ένα αυτόνομο υπολογιστικό έργο (γράφεται χωριστά από το υπόλοιπο πρόγραμμα)

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

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή στην Access Κεφάλαιο 2 Χειρισμός πινάκων... 27

Εγχειρίδιο Χρήσης Συστήματος Διαχείρισης Ηλεκτρονικών Ερωτηματολογίων Ο.Π.Σ

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

A ΕΠΑ.Λ ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 7η ΕΝΟΤΗΤΑ: ΟΡΓΑΝΩΣΗ ΧΡΟΝΟΥ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Εκπαιδευτικοί: ΓΑΛΑΝΟΣ ΓΕΩΡΓΙΟΣ ΜΠΟΥΣΟΥΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ

[11] Υπολογιστικά συστήματα: Στρώματα. Περιεχόμενα. Εισαγωγή. επικοινωνία εφαρμογές λειτουργικό σύστημα προγράμματα υλικό

ΕΡΓΑΣΤΗΡΙΟ 1: Εισαγωγή, Χρήσιμες Εφαρμογές

Εργαστήριο 2. Εαρινό Εξάμηνο Εντολές για είσοδο ακεραίων αριθμών από την κονσόλα:

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

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

σας φύλλο τον αριθμό της ερώτησης ακολουθούμενη από το γράμμα Σ (Σωστή) ή το γράμμα Λ (Λάθος).

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ

Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ

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

Εισαγωγή στην εφαρμογή Βασική Σελίδα (Activity) Αναζήτηση Πελάτη... 6 Προβολή Πελάτη... 7 Επεξεργασία Πελάτη... 10

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

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

Διαχείριση Βάσης Δεδομένων (dbadmin)

Να γράψετε πρόγραμμα στην Visual Basic το οποίο θα εκτελεί τις ανάλογες εντολές για κάθε ένα από τα πιο κάτω Command Buttoms.

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

Εργαλεία ανάπτυξης εφαρμογών internet Ι

3. Συλλογικές Αποφάσεις (Σ.Α.)

Προγραμματισμός ΙΙ Εαρινό εξάμηνο Εργασία 3 Βιβλιοθήκη για λειτουργίες σε γράφους

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

Εγχειρίδιο Συντονιστή Τηλεδιασκέψεων Υπηρεσίας e:presence

Οδηγίες για την εγκατάσταση του πακέτου Cygwin

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΜΟΝΟ ΝΕΟ ΣΥΣΤΗΜΑ Γ ΗΜΕΡΗΣΙΩΝ

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

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

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

Alternative to Balanced Trees, Comms of the ACM, 33(6), June 1990,

Δομημένος Προγραμματισμός

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

Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο

Το Λειτουργικό Σύστημα MS-DOS

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ. Α2. Να αναφέρετε ονομαστικά: i) τα αλγοριθμικά κριτήρια ii) τους τρόπους αναπαράστασης αλγορίθμου. (μονάδες 10)

Transcript:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1η Εργασία - Τμήμα: Περιττών Αριθμών Μητρώου Κ22: Λειτουργικά Συστήματα Χειμερινό Εξάμηνο 18 Ημερομηνία Ανακοίνωσης: Τρίτη 2 Οκτωβρίου 2018 Ημερομηνία Υποβολής: Τετάρτη 24 Οκτωβρίου 2018 Ωρα 23:59 Εισαγωγή στην Εργασία: Ο στόχος αυτής της εργασίας είναι να εξοικειωθείτε με το περιβάλλον Linux και τα σχετικά βασικά εργαλεία προγραμματισμού και ανάπτυξης λογισμικού. Θα υλοποιήσετε μια δομή γράφου που απεικονίζει μεταφορές χρηματικών ποσών μεταξύ διαφόρων τραπεζικών λογαριασμών. Ο γράφος παρέχει ένα μηχανισμό που μπορεί να βοηθήσει στην παρακολούθηση διακίνησης χρηματικών ποσών, στην διαλεύκανση πολυ-/τρι-γωνικών μεταφορών, αλλά και την κατανόηση όσον αφορά στην διαμόρφωση ομάδων πελατών. Θα πρέπει να υλοποιήσετε μια δομή στην κυρίως μνήμη στην οποία να μπορείτε να εισάγετε λογαριασμούς και δοσοληψίες, καθώς επίσης και να διαπιστώνετε καταστάσεις που πιθανόν δημιουργούνται από την δυναμική συμπεριφορά χρηστών με την βοήθεια επερωτήσεων. Μερικές βασικές προϋποθέσεις για την παραπάνω εφαρμογή είναι οι εξής: 1. Δημιουργία δομής κατευθυνόμενου (πολυ-)γράφου (directed multi-graph) που μπορεί να αλλάζει δυναμικά στην κυρίως μνήμη. Δεν υπάρχουν περιορισμοί όσον αφορά στο μέγεθος ΤΟΥ γράφου (δηλ. αριθμό κόμβων και ακμών που διαθέτει). Η κάθε (κατευθυνόμενη) ακμή έχει βάρος που ουσιαστικά υποδηλώνει το συνολικό πόσο δοσοληψίας που έγινε μεταξύ δύο κόμβων. 2. Ελεγχο γράφου για την εύρεση κύκλων, εύρεση της διάχυσης χρημάτων στο δίκτυο, και εκτύπωση τής δομής με ένα κατανοητό στους χρήστες τρόπο. 3. Δυνατότητα προσθαφαίρεσης κόμβων και ακμών στη διάρκεια εκτέλεσης του προγράμματος σας και αναπροσαρμογής των τιμών των (υπαρχουσών) ακμών. 4. Ελεγχο συνδεσιμότητας της/των γράφων και ανάδειξη ομάδων χρηστών. 5. Το πρόγραμμα σας θα πρέπει στο τέλος να ελευθερώνει σταδιακά όλη την μνήμη που έχει δεσμεύσει. Διαδικαστικά: Το πρόγραμμά σας θα πρέπει να γραφτεί σε C (ή C++ αν θέλετε αλλά χωρίς την χρήση STL/Templates) και να τρέχει στις μηχανές Linux workstations του τμήματος. Το πρόγραμμα σας (source code) πρέπει να αποτελείται από τουλάχιστον δυο (και κατά προτίμηση πιο πολλά) διαφορετικά αρχεία. Το πρόγραμμά σας θα πρέπει απαραιτήτως να κάνει χρήση separate compilation. Παρακολουθείτε την ιστοσελίδα του μαθήματος http://www.di.uoa.gr/~ad/k22/ για επιπρόσθετες ανακοινώσεις αλλά και την ηλεκτρονική-λίστα (η-λίστα) του μαθήματος στο URL https://piazza.com/uoa.gr/ fall2018/k22/home Υπεύθυνοι για την άσκηση αυτή (ερωτήσεις, αξιολόγηση, βαθμολόγηση κλπ.) είναι ο κ. Χρήστος Ζήσης chrzissis+at-di, ο κ. Μάνος Τοράκης sdi1400201+at-di, και ο κ. Παναγιώτης Κολαίτης m1436+at-di. 1

Στην διάρκεια των πρώτων μαθημάτων κυκλοφορούμε hard-copy λίστα στην τάξη στην οποία θα πρέπει να δώσετε το όνομά σας και το Linux user-id σας. Με αυτό το τρόπο μπορούμε να γνωρίζουμε ποιος/-α προτίθεται να υποβάλλει την πρώτη άσκηση και να προβούμε στις κατάλληλες ενέργειες για την υποβολή της εργασίας σας. Με βάση την παραπάνω λίστα, θα σας γράψουμε επίσης στο σύστημα piazza.com που βρίσκεται στο https://piazza.com/uoa.gr/fall2018/k22/home. Μόλις αποδεχτείτε ένα κωδικό που θα σας σταλεί, μπορείτε να κάνετε ερωτήσεις και να δείτε απαντήσεις ή/και διευκρινήσεις που δίνονται σχετικά με την άσκηση. Χαρακτηριστικά Γράφων σε Συντομία: Τα βασικά συστατικά της δομής είναι τα εξής: 1. Κόμβοι (nodes) έχουν συγκεκριμένα ονόματα (πχ. alphanumeric strings που αντιπροσωπεύουν όνομά χρηστών ή αριθμούς λογαριασμών). 2. Ακμές/σύνδεσμοι (edges/vertices) έχουν συγκεκριμένη φορά και βάρος που είναι γνωστά. 3. Μπορούν να υπάρχουν πολλαπλές ακμές με ίδια φορά μεταξύ δύο κόμβων οι οποίες μπορούν να έχουν και το ίδιο αριθμητικό βάρος. Κάθε μία από αυτές τις ακμές αντιπροσωπεύει μια δοσοληψία. 4. Ενας κόμβος μπορεί να συνδέεται με ένα η πολλούς άλλους. Το πόσο μεγάλο μπορεί να είναι αυτό το πλήθος δεν είναι γνωστό και φυσικά μπορεί να αυξάνεται/μειώνεται δυναμικά. 5. Νέες ακμές μπορούν να εισαχθούν οποιαδήποτε χρονική στιγμή. 6. Γενικά δεν υπάρχει περιορισμός στον αριθμό των κόμβων και των ακμών. Ετσι οποιαδήποτε μορφή υλοποίησης που αναλίσκεται σε στατικούς πίνακες για την απεικόνιση του γράφου δεν είναι αποδεκτή. Ακόμα και η χρήση δυναμικών πινάκων δεν θεωρείται η ενδεδειγμένη προσέγγισή στην άσκησή αυτή. 7. Το Σχήμα 1 δείχνει μια αντιπροσωπευτική κατάσταση της δομής που θα δημιουργήσετε. Στο σχήμα αυτό υπάρχει μία μεταφορά 1, 340 χρηματικών μονάδων από τον λογαριασμό kji στον kfc. 8. Ο αριθμός των αναμενόμενων εισαγωγών/προσαυξήσεων (ή και διαγραφών) κόμβων και ακμών στην δομή δεν είναι γνωστός εξ αρχής. 9. Ο γράφος που θα δημιουργείτε δεν είναι απαραίτητο να έχει όλα τα στοιχεία του συνδεδεμένα (strongly connected). Για παράδειγμα στο Σχήμα 1, οι κόμβοι tsi, nbc, jkl, utf,aic και cbw αποτελούν ένα συνδεδεμένο κομμάτι του γράφου, ενώ οι υπόλοιποι κόμβοι αποτελούν ένα άλλο. Γραμμή Κλήσης της Εφαρμογής: Η εφαρμογή μπορεί να κληθεί με τον παρακάτω αυστηρό τρόπο στην γραμμή εντολής (tty):./mygraph -i inputfile -o outfile όπου mygraph είναι το εκτελέσιμο που θα δημιουργήσετε, inputfile είναι το αρχείο εισόδου δεδομένων. Σε αυτό κάθε γραμμή εκφράζει μια ακμή μεταξύ δυο κόμβων και παρέχει το βάρος (δηλ. το ποσό της δοσοληψίας). outfile είναι το αρχείο εξόδου που την στιγμή της εξόδου της εφαρμογής σας καταγράφει την κατάσταση του γράφου όπως αυτή έχει εξελιχτεί. 2

2200 vdf 1200 kji 600 500 1234 kfc 2300 1340 300 uyt 600 560 u 450 tsi 34 5000 540 560 bfi 389 zdr aic 1200 780 tdk 450 1300 1234 jkl nbc 980 340 560 edi cbw Σχήμα 1: Παράδειγμα οργάνωσης γράφου. Και οι δύο παραπάνω in-line παράμετροι (και αντίστοιχες σημαίες) είναι προαιρετικές όσον αφορά την κλήση τους στην γραμμή εντολής. Ωστόσο η υλοποίησή τους είναι υποχρεωτική. Οι σημαίες μπορούν να εμφανίζονται με οποιαδήποτε σειρά. Περιγραφή της Διεπαφής του Προγράμματος: Αφού το πρόγραμμα κληθεί, η/ο χρήστης μπορεί να αλληλεπιδράσει με την βοήθεια ενός prompt μέσα από το οποίο οι επόμενες εντολές μπορούν να κληθούν: 1. i(nsert) Ni εισήγαγε ένα νέο κόμβο Ni. 2. (i)n(sert) Ni Nj weight εισήγαγε μια ακμή μεταξυ Ni και Nj με βάρος weight. Οι κόμβοι Ni και Nj μπορεί να εμφανίζονται για πρώτη φορά στην δομή. 3. d(elete) Ni διέγραψε από το γράφο το κόμβο Ni καθώς επίσης και όλες τις εισερχόμενες/εξερχόμενες ακμές (και βάρη). 4. (de)l(ete) Ni Nj weight διέγραψε την ακμή μεταξύ Ni και Nj με βάρος weight. Αν υπάρχουν πολλαπλές ακμές με το ίδιο weight διέγραψε μια από τις υπάρχουσες. Αν δεν καθοριστεί weight, όλες οι υπάρχουσες ακμές μεταξύ Ni και Nj διαγράφονται. 5. m(odify) Ni Nj weight nweight άλλαξε το βάρος weight στην νέα τιμή nweight. Αν υπάρχουν πολλαπλές ακμές με την ίδια τιμή weight μετάτρεψε την πρώτη που θα βρεις. 6. r(eceiving) Ni παρουσίασε όλα τις δοσοληψίες που ο κόμβος Ni δέχεται σαν είσοδο. 7. c(irclefind) Ni βρίσκει αν ο κόμβος Ni εμπλέκεται σε απλούς κύκλους (simple cycles) και παρουσιάζει τους εν λόγω 3

κύκλους. 8. f(indcircles) Ni k βρίσκει αν ο κόμβος Ni εμπλέκεται σε κυκλικές δοσοληψίες με άλλους. Ωστόσο το ελάχιστο ποσό που κάθε ακμή πρέπει να έχει, είναι k μονάδες (τιμή για minimum weight). 9. t(raceflow) Ni Nj l βρίσκει πιθανές διαχύσεις ποσών που ξεκινούν από τον κόμβο Ni και τελειώνουν στον κόμβο Nj. Το l δίνει το μέγιστο μήκος της διαδρομής σε αριθμό ακμών που θα πρέπει να διατρεχτούν. 10. e(xit) το πρόγραμμα απλά τερματίζει αφού ελευθερώσει πρώτα με συγκροτημένο τρόπο όλο το χώρο που έχει καταλάβει στην μνήμη. Η μορφή εξόδου της κάθε μία από τις παραπάνω εντολές δίνεται με λεπτομέρεια στην σελίδα του μαθήματος. Χαρακτηριστικά του Προγράμματος που Πρέπει να Γράψετε: 1. Δεν μπορείτε να κάνετε pre-allocate οποιοσδήποτε χώρο αφού η δομή(-ές) θα πρέπει να μπορεί(-ουν) να μεγαλώσει(-ουν) χωρίς ουσιαστικά κανέναν περιορισμό όσον αφορά στον αριθμό των εγγραφών που μπορούν να αποθηκεύσουν. Η χρήση στατικών πινάκων/δομών που δεσμεύονται στην διάρκεια της συμβολομετάφρασης του προγράμματος σας δεν είναι αποδεκτές επιλογές. 2. Για την δομή που θα υιοθετήσετε θα πρέπει να μπορείτε να εξηγήσετε (και να δικαιολογήσετε στην αναφορά σας) την πολυπλοκότητα που οι τεχνικές που υιοθετείτε παρουσιάζουν. 3. Πριν να τερματίσει η εκτέλεση της εφαρμογής, το περιεχόμενο των δομών απελευθερώνεται με σταδιακό και ελεγχόμενο τρόπο. 4. Αν πιθανώς κάποια κομμάτια του κωδικά σας προέλθουν από κάποια δημόσια πηγή, θα πρέπει να δώσετε αναφορά στη εν λόγω πηγή είτε αυτή είναι βιβλίο, σημειώσεις, Internet URL κλπ. και να εξηγήσετε πως ακριβώς χρησιμοποιήσατε την εν λόγω αναφορά. 5. Εχετε πλήρη ελευθερία να επιλέξετε το τρόπο με τον οποίο τελικά θα υλοποιήσετε βοηθητικές δομές. Τι πρέπει να Παραδοθεί: 1. Μια σύντομη και περιεκτική εξήγηση για τις επιλογές που έχετε κάνει στο σχεδιασμό του προγράμματος σας (2-3 σελίδες σε ASCII κειμένου είναι αρκετές). 2. Οπωσδήποτε ένα Makefile (που να μπορεί να χρησιμοποιηθεί για να γίνει αυτόματα το compile του προγράμματος σας). Πιο πολλές λεπτομέρειες για το (Makefile) και πως αυτό δημιουργείται δίνονται στην ιστοσελίδα του μαθήματος. 3. Ενα tar-file με όλη σας την δουλειά σε έναν κατάλογο που πιθανώς να φέρει το όνομα σας και θα περιέχει όλη σας την δουλειά δηλ. source files, header files, output files (αν υπάρχουν) και οτιδήποτε άλλο χρειάζεται. Άλλες Σημαντικές Παρατηρήσεις: 1. Οι εργασίες είναι ατομικές. 2. Το πρόγραμμα σας θα πρέπει να τρέχει στα Linux συστήματα του τμήματος αλλιώς δεν μπορεί να βαθμολογηθεί. 3. Αν και αναμένεται να συζητήσετε με φίλους και συνεργάτες το πως θα επιχειρήσετε να δώσετε λύση στο πρόβλημα, αντιγραφή κώδικα (οποιαδήποτε μορφής) είναι κάτι που δεν επιτρέπεται και δεν πρέπει να γίνει. Οποιοσδήποτε βρεθεί αναμεμειγμένος σε αντιγραφή κώδικά απλά παίρνει μηδέν στο μάθημα. Αυτό ισχύει για όσους εμπλέκονται ανεξάρτητα από το ποιος έδωσε/πήρε κλπ. 4

4. Το παραπάνω ισχύει αν διαπιστωθεί έστω και μερική άγνοια του κώδικα που έχετε υποβάλει ή άπλα υπάρχει υποψία ότι ο κώδικας είναι προϊόν συναλλαγής με τρίτο/-α άτομο/α. 5. Προγράμματα που δεν χρησιμοποιούν separate compilation χάνουν αυτόματα 5% του βαθμού. 6. Σε καμιά περίπτωση τα Windows δεν είναι επιλέξιμη πλατφόρμα για την παρουσίαση αυτής της άσκησης. 5