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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Βαθμός Σχόλια. lab PASS 1194 PASS 1238 PASS 1239 PASS

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

ΤΡΙΩΡΗ ΓΡΑΠΤΗ ΔΟΚΙΜΑΣΙΑ

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

abistarakis PASS - Σωστή κατασκευή tgz και ονοµασία αρχείων

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

lab2grades - Στη scanf υπολογίζετε τουλάχιστον 5 χαρακτήρες %5.2f προδιαγραφές που ζητούνται στην εκφώνηση. -

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

FAIL PASS PASS οριακά

Δείτε τώρα και πώς θα έπρεπε να ήταν το παραπάνω: Page 1

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

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

lab13grades 449 PASS 451 PASS PASS FAIL 1900 FAIL Page 1

ΑΕΜ ή username. Sheet2

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ 23/04/2012. Α. Να απαντήσετε με Σ ή Λ στις παρακάτω προτάσεις:

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

an:3 are:6 a:10

Sheet1_2 FAIL. - To πρόγραµµα δεν κάνει compile Δεν παρέδωσε FAIL

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

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

ΕΡΓΑΣΙΑ ΕΞΑΜΗΝΟΥ - ΜΕΡΟΣ Γ'

to post PASS PASS FAIL

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

Sheet3_2. Τα literals (3.0, 1.5, κτλ) πρέπει να ορίζονται ως σταθερές.

Πως θα αποθηκεύσει τη λίστα με τα ψώνια του και θα την ανακτήσει στο Σ/Μ; και πως θα προσθέσει στη λίστα του επιπλέον προϊόντα;

Βαθμός Σχόλια. lab6 PASS PASS. - Πολύ καλή δουλειά, αλλά προσπάθησε να κάνεις την άσκηση χρησιµοποιώντας συναρτήσεις από το string.

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

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

Sheet2. - Άσκηση 1 οκ - Άσκηση 2 οκ. Σκέψου πώς θα µπορούσες να την

Προγραμματιστικό Περιβάλλον

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

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

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

Δεν έστειλες την άσκηση 1, και αυτό που έστειλες ήταν σκέτο αρχείο, όχι το tgz που ζητούσε η εκφώνηση.

8. Η δημιουργία του εκτελέσιμου προγράμματος γίνεται μόνο όταν το πηγαίο πρόγραμμα δεν περιέχει συντακτικά λάθη.

Εργαστήριο 4. Εαρινό Εξάμηνο ΠΡΟΣΟΧΗ: Αρχίστε νωρίς το Εργαστήριο 4. Οι ασκήσεις είναι πιο απαιτητικές από τα προηγούμενα εργαστήρια.

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

lab7 PASS -Δεν έχεις καθόλου σχόλια! Διάβασε το φυλλάδιο. PASS -Πολύ καλή εργασία µε σωστά και επεξηγηµατικά σχόλια. -Πρόσεξε την στοίχισή σου!

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

Προγραμματισμός Διαδικτύου Ασκήσεις Εργαστηρίου

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

Sheet PASS 1426 PASS 1428 PASS. Page 1

ΟΜΟΣΠΟΝΔΙΑ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑΔΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2019 A ΦΑΣΗ

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

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

for for for for( . */

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

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

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

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

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

Γ ΓΥΜΝΑΣΙΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΗ ΓΛΩΣΣΑ MicroWorlds Pro

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

Transcript:

ΣΕΤ ΑΣΚΗΣΕΩΝ 3 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2013-2014 Προθεσµία: 7/1/2014, 22:00 Περιεχόµενα Διαβάστε πριν ξεκινήσετε Εκφώνηση άσκησης 1 Οδηγίες αποστολής άσκησης Πριν ξεκινήσετε (ΔΙΑΒΑΣΤΕ ΑΥΤΗ ΤΗΝ ΕΝΟΤΗΤΑ!! ) Διαβάστε ΟΛΗ την εκφώνηση προσεκτικά και σχεδιάστε το πρόγραµµά σας στο χαρτί. Είναι ιδιαίτερα σηµαντικό να διαβάσετε ολόκληρη την εκφώνηση πριν ξεκινήσετε να γράφετε κώδικα γιατί κάποιες πληροφορίες δε δίνονται µε γραµµική σειρά. Για κάθε στάδιο, αποφασίστε τι µεταβλητές θα χρειαστείτε, τι ονόµατα θα τους δώσετε, αν χρειάζονται σταθερές κι αν ναι για ποιες ποσότητες, τι συναρτήσεις θα ορίσετε και τι δοµές θα χρησιµοποιήσετε για κάθε λειτουργία. Μη διστάζετε να ζητήσετε βοήθεια! Μπορείτε να χρησιµοποιήσετε κατά προτίµηση το forum προγραµµατισµού (http://courses.inf.uth.gr/coding/?page_id=143) και µόνο αν είναι απαραίτητο email (π.χ. αν πραγµατικά επιβάλλεται να στείλετε κάποιο κοµµάτι κώδικα µαζί µε το µήνυµά σας). Μην προσπαθήσετε να γράψετε το πρόγραµµα µονοµιάς. Δηλώστε τις συναρτήσεις σας, αφήστε τα σώµατά τους είτε κενά είτε να επιστρέφουν κάτι συµβολικό για να κάνει compile το πρόγραµµα, και µετά γράψτε τη main. Αφού βεβαιωθείτε ότι το πρόγραµµα τρέχει µέχρι αυτό το σηµείο, αρχίστε να προσθέτετε κώδικα σε µία-µία συνάρτηση. Προχωράτε στην επόµενη µόνο εφόσον βεβαιωθείτε ότι δουλεύουν όλα σωστά µέχρι το σηµείο που έχετε υλοποιήσει. ΠΡΟΣΟΧΗ: Σας δίνουµε συγκεκριµένες οδηγίες για κάποιες συναρτήσεις, αλλά θα πρέπει να σκεφτείτε και µόνοι σας τι άλλες λειτουργίες του προγράµµατος είναι καλύτερα να γίνουν σε ξεχωριστή συνάρτηση ώστε να είναι πιο ευανάγνωστο και συντηρήσιµο το πρόγραµµά σας. Η εργασία αυτή µπορεί να γίνει σε οµάδες µέχρι 2 ατόµων. Δεν είναι απαραίτητο να συνεργαστείτε µε το ίδιο άτοµο που κάνατε τα εβδοµαδιαία εργαστήρια ή το πρώτο σετ ασκήσεων. Μπορείτε να συζητάτε τις ασκήσεις µε συµφοιτητές σας αλλά δεν επιτρέπεται η ανταλλαγή κώδικα µε οποιοδήποτε τρόπο. Ξεκινήστε νωρίς! Ο προγραµµατισµός είναι πάντα ΠΟΛΥ πιο χρονοβόρος από ό,τι περιµένετε. Εκπρόθεσµες ασκήσεις δε γίνονται δεκτές.

'Ασκηση 1: Ταίριασµα ονοµάτων µε wildcards Εισαγωγή Ένα wildcard είναι ένας ειδικός χαρακτήρας ( * ή? ) ο οποίος χρησιµοποιείται για να αναπαραστήσει έναν ή περισσότερους χαρακτήρες κατά την αναζήτηση αρχείων και αλλού. Ο αστερίσκος αναπαριστά µηδέν ή περισσότερους χαρακτήρες, ενώ το ερωτηµατικό ακριβώς έναν χαρακτήρα. Για παράδειγµα, αν σε ένα φάκελο βρίσκονται αρχεία µε ονόµατα page1.html page2.html page3.html image1.jpg image2.jpg agent page τότε: η έκφραση page?.html αναφέρεται στα page1.html page2.html page3.html η έκφραση *age* αναφέρεται σε όλα τα αρχεία η έκφραση *.html αναφέρεται σε όλα τα αρχεία µε κατάληξη.hmtl η έκφραση *.* αναφέρεται σε όλα τα αρχεία εκτός των agent, page (τα οποία δεν περιέχουν τελεία) η έκφραση?age* αναφέρεται στα page1.html page2.html page3.html page Σε αυτό το σετ ασκήσεων θα γράψετε ένα πρόγραµµα το οποίο διαβάζει µια σειρά από ονόµατα αρχείων και µετά µια σειρά από εκφράσεις µε ακριβώς ένα wildcard στην κάθε µία έκφραση. Για κάθε έκφραση, το πρόγραµµα ψάχνει να βρει ποια από τα ονόµατα αρχείων ταιριάζουν. Ακολουθούν λεπτοµερείς οδηγίες για το πώς πρέπει να λειτουργεί το πρόγραµµά σας. ΜΗΝ προσπαθήσετε να γράψετε όλο το πρόγραµµα σε ένα βήµα γιατί θα κάνετε λάθη και θα σας πάρει πολύ περισσότερο χρόνο. Αποθηκεύστε το τελικό πρόγραµµα σε αρχείο µε όνοµα hw3.c.

Δοµές δεδοµένων Ορίστε ένα struct µε όνοµα nameinfot και δύο πεδία, name και replacement. Και τα δύο είναι δείκτες σε χαρακτήρα. Το name θα δείχνει στην αρχή µιας συµβολοσειράς που περιέχει το όνοµα ενός αρχείου. Το replacement θα δείχνει στην αρχή µιας συµβολοσειράς που περιέχει το κοµµάτι του ονόµατος του αρχείου που αντιστοιχεί σε ένα wildcard. Συνάρτηση main Η main εκτελεί τις εξής βασικές λειτουργίες: Καλεί µια συνάρτηση readnames η οποία διαβάζει τα ονόµατα των αρχείων και τα αποθηκεύει σε κατάλληλο, δυναµικά δεσµευµένο πίνακα από nameinfot. Διαβάζει επαναληπτικά µια σειρά από συµβολοσειρές, κάθε µία από τις οποίες πρέπει να περιέχει ακριβώς ένα wildcard. Αν η έκφραση που διαβάστηκε δεν περιέχει κανένα wildcard ή περιέχει περισσότερα από ένα, τότε εκτυπώνει το µήνυµα Skipping X όπου Χ η έκφραση, ένα χαρακτήρα αλλαγής γραµµής και προχωρά να διαβάσει την επόµενη έκφραση. Αν η έκφραση περιέχει ακριβώς ένα wildcard, τότε την εκτυπώνει στην οθόνη ακολουθούµενη από χαρακτήρα αλλαγής γραµµής. Καλεί µια συνάρτηση findallreplacements η οποία περιγράφεται παρακάτω στην εκφώνηση. Καλεί µια συνάρτηση printallreplacement η οποία περιγράφεται παρακάτω στην εκφώνηση.. Καλεί µια συνάρτηση clearallreplacements η οποία περιγράφεται παρακάτω στην εκφώνηση. Η επαναληπτική ανάγνωση εκφράσεων σταµατά όταν διαβαστεί η λέξη END. Καλεί µια συνάρτηση η οποία απελευθερώνει όλη τη δυναµικά δεσµευµένη µνήµη του προγράµµατος. Συνάρτηση readnames Η συνάρτηση αυτή πρέπει να εκτελεί τις παρακάτω λειτουργίες Κατασκευάζει δυναµικά ένα πίνακα από nameinfot µεγέθους 1. Διαβάζει από το πληκτρολόγιο µια σειρά από συµβολοσειρές (ας πούµε ότι αντιστοιχούν σε ονόµατα αρχείων). Κάθε όνοµα έχει το πολύ 32 χαρακτήρες. Κάθε όνοµα αποθηκεύεται σε µια θέση του πίνακα, στο πεδίο name, κι έτσι ώστε να έχει δεσµευθεί γι αυτό ακριβώς όση µνήµη χρειάζεται. Σε αυτό το στάδιο δεν υπάρχουν πληροφορίες για το πεδίο replacement. Δεν είναι γνωστό εκ των προτέρων πόσα είναι τα ονόµατα. Κάθε φορά που γεµίζει ο πίνακας από nameinfot, επαναδεσµεύεται διπλάσιο µέγεθος γι αυτόν. Η ανάγνωση ονοµάτων τερµατίζει όταν διαβαστεί η λέξη END (η οποία δεν αποθηκεύεται στον πίνακα). Σε αυτό το σηµείο, το µέγεθος του πίνακα προσαρµόζεται ώστε να είναι ακριβώς τόσο όσο το πλήθος ονοµάτων που είναι αποθηκευµένα σε αυτό. Η συνάρτηση επιστρέφει τη διεύθυνση της αρχής του πίνακα από nameinfot. Επιπλέον, "επιστρέφει" µέσω των παραµέτρων της το µέγεθος του πίνακα. Το πρόγραµµά σας πρέπει να είναι γραµµένο µε τέτοιο τρόπο ώστε αν αλλάξει το µέγιστο δυνατό µέγεθος

ενός ονόµατος, να µπορούν να γίνουν εύκολα και γρήγορα οι κατάλληλες αλλαγές στον κώδικα. Συνάρτηση findallreplacements Η συνάρτηση αυτή παίρνει ως παραµέτρους τον πίνακα από nameinfot, το µέγεθός του και την έκφραση και εκτελεί τις παρακάτω λειτουργίες: Διατρέχει τον πίνακα ονοµάτων και για κάθε ένα όνοµα καλεί µια βοηθητική συνάρτηση η οποία παίρνει ως παραµέτρους το όνοµα και την έκφραση, βρίσκει αν η έκφραση µπορεί να αναπαραστήσει το όνοµα, κι αν ναι, κατασκευάζει κι επιστρέφει µια νέα συµβολοσειρά η οποία περιέχει το κοµµάτι του ονόµατος του αρχείου που αντιστοιχεί στο wildcard της έκφρασης. Πρέπει να σκεφτείτε πώς θα χειριστείτε την περίπτωση που δεν είναι δυνατό να αναπαρασταθεί το όνοµα από την έκφραση. Επίσης, ίσως σας φανεί πιο πρακτικό να χρησιµοποιήσετε περισσότερες βοηθητικές συναρτήσεις (πχ µία για την περίπτωση που το wildcard είναι αστερίσκος και µία για την περίπτωση που είναι ερωτηµατικό). Αποθηκεύει τη συµβολοσειρά στο πεδίο replacement κάθε στοιχείου του πίνακα. Συνάρτηση printallreplacements Η συνάρτηση αυτή παίρνει ως παραµέτρους ό,τι κρίνετε ότι απαιτείται. Διατρέχει τον πίνακα ονοµάτων και για κάθε ένα όνοµα για το οποίο βρέθηκε replacement εκτυπώνει ένα χαρακτήρα tab, τo µήνυµα "word: X, replacement: Y" όπου X το όνοµα και Υ το replacement, κι ένα χαρακτήρα αλλαγής γραµµής. Συνάρτηση clearallreplacements Η συνάρτηση αυτή παίρνει ως παραµέτρους ό,τι κρίνετε ότι απαιτείται. Διατρέχει τον πίνακα ονοµάτων και για κάθε ένα όνοµα για το οποίο βρέθηκε replacement διαγράφει το replacement απελευθερώνοντας κατάλληλα τη µνήµη που είχε δεσµευθεί γι αυτό. Γενικές απαιτήσεις Απαγορεύεται αυστηρά η χρήση καθολικών µεταβλητών και goto. Σε περιπτώσεις αποτυχίας στη δέσµευση µνήµης, το πρόγραµµά σας πρέπει να εκτυπώνει κατάλληλο µήνυµα λάθους και είτε να επιστρέφει από τη συνάρτηση όπου έγινε το λάθος, είτε να τερµατίζει άµεσα. Δικαιολογήστε την απόφασή σας σε σχόλια. Σε κάθε περίπτωση, το πρόγραµµα πρέπει να απελευθερώνει όλη τη δυναµικά δεσµευµένη µνήµη πριν τερµατίσει. Τόσο ο πίνακας από struct όσο και οι συµβολοσειρές που είναι αποθηκευµένες σε αυτόν πρέπει να έχουν ακριβώς όσο µέγεθος απαιτείται (όχι περισσότερο και φυσικά όχι λιγότερο) Το πρόγραµµα πρέπει να έχει περιγραφικά ονόµατα µεταβλητών και σχόλια όπως περιγράφεται στο σχετικό φυλλάδιο στη σελίδα του εργαστηρίου.

Πώς να παραδώσετε τη δουλειά σας Προσθέστε σε σχόλια στην αρχή του κάθε αρχείου µε κώδικα τα πλήρη ονόµατα και ΑΜ των µελών της οµάδας. Παρακαλούµε να γράφετε τα σχόλια ΜΟΝΟ µε λατινικούς χαρακτήρες. Κατασκευάστε ένα φάκελο µε όνοµα hw3_epwnumo1_am1_epwnumo2_am2 και αντιγράψτε µέσα σε αυτόν το hw3.c Πηγαίνετε στο φάκελο µέσα στον οποίο βρίσκεται το hw3_epwnumo1_am1_epwnumo2_am2 που κατασκευάσατε και γράψτε την παρακάτω εντολή: tar czvf hw3_epwnumo1_am1_epwnumo2_am2.tgz hw3_epwnumo1_am1_epwnumo2_am2 Στείλτε email: στη διεύθυνση ce120lab@gmail.com αντίγραφο (CC) στο άλλο µέλος της οµάδας σας θέµα (subject) CE120 hw3 και επικολληµένο αρχείο το hw3_epwnumo1_am1_epwnumo2_am2.tgz Το πρόγραµµά σας θα βαθµολογηθεί ως προς: ορθότητα λειτουργίας σωστή επιλογή και χρήση δοµών ελέγχου κι επανάληψης σωστή χρήση συναρτήσεων για συµβολοσειρές σωστή χρήση δεικτών και δυναµικά δεσµευµένης µνήµης σωστό ορισµό και χρήση συναρτήσεων, δηµιουργία δικών σας συναρτήσεων αναγνωσιµότητα (ονόµατα, στοίχιση, σχολιασµός, µορφή κώδικα) φορµαρισµένη είσοδο/έξοδο και συµµόρφωση µε τις προδιαγραφές.