Δρ. Πέτρος Παναγή B123

Σχετικά έγγραφα
ΣΥΜΒΟΛΟΣΕΙΡΕΣ (Strings) Ο ΑΤΔ Συµβολοσειρά Μία συµβολοσειρά είναι µία ακολουθία χαρακτήρων. Bασικές πράξεις : 1. Δηµιουργία. 2. Μήκος. 3.

ΛΙΣΤΕΣ. Ορισμός ΑΤΔ Λίστα ΑΤΔ Ακολουθιακή Λίστα Διαχείριση Δεικτών και Λιστών στη C ΑΤΔ Συνδεδεμένη Λίστα. Εφαρμογές και Χρήση Λιστών

ΣΤΟΙΒΕΣ (stacks) Σχήµα: Λειτουργία Στοίβας

Ουρές (Queues) FIFO A B C. Διαγραφή. Εισαγωγή. εµπρός. πίσω. πίσω. πίσω

ΠΛΗ111. Ανοιξη Μάθηµα 5 ο. Ουρά. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

Α Β Γ static; printf("%c\n", putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf("*");

Δομές Δεδομένων. Ενότητα 10: Πλήρη Δυαδικά Δέντρα, Μέγιστα/Ελάχιστα Δέντρα & Εισαγωγή στο Σωρό- Ο ΑΤΔ Μέγιστος Σωρός. Καθηγήτρια Μαρία Σατρατζέμη

ΣΥΝΑΡΤΗΣΕΙΣ (Functions)

Tύπος δεδοµένων (data type) µιας µεταβλητής (σε µια γλώσσα προγραµµατισµού) είναι το σύνολο των τιµών που µπορεί να πάρει η µεταβλητή.

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

ΠΛΗ111. Ανοιξη Μάθηµα 8 ο. Αναζήτηση. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Δέντρα (Trees) - Ιεραρχική Δομή

ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ. for (παράσταση_1; παράσταση_2; παράσταση_3) εντολή επόμενη εντολή

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

ΑΡ Χ Ε Ι Α Κ Ε Ι Μ Ε Ν Ο Υ (text files)

Προγραμματισμός Η/Υ (ΤΛ2007 )

Δομές Δεδομένων. Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή. Καθηγήτρια Μαρία Σατρατζέμη

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

Επανάληψη για τις Τελικές εξετάσεις

ΠΛΗ111. Ανοιξη Μάθηµα 7 ο. έντρο. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

ΕΠΛ232: Εργαστήριο 2

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

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

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

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Δομημένος Προγραμματισμός (ΤΛ1006)

Αλγόριθμοι Ταξινόμησης Μέρος 1

Ανάπτυξη και Σχεδίαση Λογισμικού

Διάλεξη 21η: Απλά Συνδεδεμένες Λίστες

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

ΠΛΗ111. Ανοιξη Μάθηµα 3 ο. Συνδεδεµένες Λίστες. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

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

2 η Υλοποίηση του ΑΤΔ συνδεδεμένη λίστα με πίνακα Κόμβοι από δεδομένα και θέσεις πίνακα ????

Εργαστήριο 5 Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ με αλφαβητική σειρά

Εργαστήριο 8: Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Α' Περιόδου Θέµα 1. (α') 2 - ii 3 - iii 4 - iv

Δένδρα. Μαθηματικά (συνδυαστικά) αντικείμενα. Έχουν κεντρικό ρόλο στην επιστήμη των υπολογιστών :

Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8

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

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε:

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΑΣΚΗΣΗ #5 Προτεινόμενη Λύση

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

Επιλογές και Κριτήρια Σχεδιασμού ΑΤΔ Ανεξαρτήτως από Γλώσσα Υλοποίησης 24/4/2012

Διάλεξη 22: Δυαδικά Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου

Γραμμικές Δομές Δεδομένων

Επισκόπηση Μαθήματος. Γραμμικές Δομές Δεδομένων. ΑΤΔ Ουρά Εναλλακτικοί Σχεδιασμοί Προγραμματισμός με Ενότητες Interface.h Implementation.

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

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

Διάλεξη 26: Σωροί. Διδάσκων: Παναγιώτης Ανδρέου

Ινστιτούτο Επαγγελµατική Κατάρτιση Κορυδαλλού "ΤΕΧΝΙΚΟΣ ΣΥΣΤΗΜΑΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ" (Ερωτήσεις Πιστοποίησης στην γλώσσα προγραµµατισµού C)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΑΣΚΗΣΗ 1 Συμβολοσειρές, Πίνακες, Δείκτες

ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β

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

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

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

Κατηγορίες Συμπίεσης. Συμπίεση με απώλειες δεδομένων (lossy compression) π.χ. συμπίεση εικόνας και ήχου

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

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

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

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

Δομές Αναζήτησης. κλειδί από ολικά διατεταγμένο σύνολο. Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες: Εισαγωγή ενός νέου στοιχείου

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Υλοποίηση Λιστών. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:

Δομές Δεδομένων και Αλγόριθμοι

ΟιβασικέςπράξειςπουορίζουντονΑΤΔ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες:

Διάλεξη 11: Φροντιστήριο για Στοίβες. Διδάσκων: Παναγιώτης Ανδρέου. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ.

Οι βασικές πράξεις που ορίζουν τον ΑΤ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες:

Προγραμματισμός Η/Υ (ΤΛ2007 )

Δομές Δεδομένων. Ενότητα 4: Ο ΑΤΔ Λίστα & Υλοποίηση Λίστας με σειριακή αποθήκευση- Ο ΑΤΔ Συνδεδεμένη Λίστα- Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με πίνακα

Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις

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

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

Διάλεξη 2: Επανάληψη Προγραμματισμού Συμβολοσειρές (strings) Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης

ΠΛΗ111. Ανοιξη Μάθηµα 4 ο. Στοίβα. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

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

Εργαστηριακή Άσκηση 1

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

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

ΠΛΗ111. Ανοιξη Μάθηµα 10 ο. Γράφοι. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Μεθόδων Επίλυσης Προβλημάτων

Προγραμματιστικές Ασκήσεις, Φυλλάδιο 1

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

Κεφάλαιο 10 Ψηφιακά Λεξικά

ΣΤΟΙΒΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΗ ΙΔΙΟΤΗΤΑ ΤΗΣ ΣΤΟΙΒΑΣ. Το τελευταίο στοιχείο που εισήχθη θα εξαχθεί πρώτο. Άλλο όνομα L I F O (Last In First Out)

ΣΤΟΙΒΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΗ ΙΔΙΟΤΗΤΑ ΤΗΣ ΣΤΟΙΒΑΣ. Το τελευταίο στοιχείο που εισήχθη θα εξαχθεί πρώτο. Άλλο όνομα L I F O (Last In First Out)

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

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

Δομές δεδομένων (2) Αλγόριθμοι

Εργαστήριο 6: Αναζήτηση, Ανάλυση Πολυπλοκότητας

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

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 2 η

Transcript:

Δρ. Πέτρος Παναγή petrosp@cs.ucy.ac.cy B123 1 ΣΥΜΒΟΛΟΣΕΙΡΕΣ (Strings) Ο ΑΤΔ Συμβολοσειρά Μία συμβολοσειρά είναι μία συλλογή χαρακτήρων με διάταξη Bασικές πράξεις : (Είναιτοελάχιστοδυνατόσύνολοπράξεων) 1. Δημιουργία: Δημιουργεί μια κενή Συμβολοσειρά. 2. Μήκος: Δέχεται μια Συμβολοσειρά και επιστρέφει το μήκος της, δηλαδή το πλήθος των χαρακτήρων της. 3. Ανάκτηση: Επιστρέφει το i-οστό όρο. (1 I n) 4. Προσάρτηση: τοποθετεί ένα δεδομένο χαρακτήρα στο τέλος μια Συμβολοσειράς. 5. Διαγραφή:Δια γράφει τον πρώτο χαρακτήρα. 2

Σύνθετες πράξεις : Μπορούν να περιγραφούν με τη χρήση των βασικών. 6. Αντιγραφή 7. Συνένωση 8. Αναζήτηση 9. Εισαγωγή 10. Απομάκρυνση 11. Αντικατάταση 12. Σύγκριση 3 Ο διαχωρισμός των πράξεων του ΑΤΔ συμβολοσειρά σε βασικές και μη βασικές έγινε προκειμένου να τονισθεί το γεγονός ότι οι βασικές πράξεις είναι ένα ελάχιστο δυνατό σύνολο πράξεων, με την έννοια ότι οι άλλες πράξεις μπορούν να ορισθούν με την χρήση των βασικών. Αποτέλεσμα αυτής της στρατηγικής είναι η όσο το δυνατόν απόκρυψη του τρόπου υλοποίησης του ΑΤΔ. 4

Υλοποίηση του ΑΤΔ Συμβολοσειρά με πίνακα #define megisto_mikos... typedef struct int mikos; char xaraktiras[megisto_mikos]; typos_seiras; 5 void dimiourgia(typos_seiras *seira) /* Προ : Καμμία Μετά : Δημιουργεί μια κενή συμβολοσειρά */ seira->mikos=0; int mikos(typos_seiras seira) /* Προ : Δημιουργία της seira. Μετα : Επιστρέφει το πλήθος των χαρακτήρων της seira */ return seira.mikos; 6

char anaktisi(typos_seiras seira,int i) /* Προ: Δημιουργία της seira. Μετα : Επιστρέφει τον i-ιοστό χαρακτήρα, διαφορετικά επιστρέφει \0.*/ if ((0<=i) && (i<=mikos(seira))) return seira.xaraktiras[i]; return \0 ; 7 void prosartisi(typos_seiras *seira, char xar) /* Προ : Δημιουργία της seira. Μετα:Τοποθετεί στο τέλος της συμβολοσειράς τον χαρακτήρα xar.*/ if (mikos(*seira)==megisto_mikos) printf( Η συμβολοσειρά είναι γεμάτη ); seira->mikos++; seira->xaraktiras[seira->mikos-1]=xar; 8

void diagrafi(typos_seiras *seira) /* Προ : Δημιουργία της seira. Μη κενή seira. Μετα : Επιστρέφει τη seira χωρίς τον πρώτο χαρακτήρα της */ int i; if (mikos(*seira) == 0) /* κενή seira */ printf ( Διαγραφή από κενή seira ); for (i=0; i<=seira->mikos-2; i++) seira->xaraktiras[i]=seira->xaraktiras[i+1]; seira->mikos--; 9 Πολυπλοκότητα Ολες οι πράξεις εκτός της διαγραφής έχουν πολυπλοκότητα Ο(1). Η πράξη της διαγραφής έχει Ο(n) χρόνο για συμβολοσειρές μήκους n, 10

Αντιγραφή thesi.. void antigrafi_seiras(typos_seiras arxiki, int thesi, int n, typos_seiras *neaseira) /* Προ :Δημιουργία συμβολοσειράς arxiki, 0<= thesi, n <= mikos. Μετα : Επιστρέφει τη neaseira που περιέχει τους n χαρακτήρες της arxiki που αρχίζουν από τη thesi. */ int i, teleytaios; teleytaios = thesi + n 1; if (teleytaios > megisto_mikos) printf( Η νέα σειρά είναι πολύ μεγάλη ); n thesi+n-1 συνέχεια 11 Αντιγραφή thesi.. n thesi+n-1 dimiourgia(neaseira); /* Αντιγραφή των n χαρακτήρων από τη thesi της seira στη neaseira*/ for (i=1;i<=n; i++) prosartisi(neaseira, anaktisi(arxiki,thesi+i-1)); 12

Συνένωση.. void synenosi_seiras(typos_seiras seira1, typos_seiras seira2, typos_seiras *neaseira) /* Προ : Δημιουργία των συμβολοσειρών seira1 και seira2. Το μήκος και των δύο συμβολοσειρών seira1 και seira2 είναι <= megisto_mikos. Μετα : Δημιουργεί μια νέα συμβολοσειρά από τη συνένωση των sera1 και seira2.*/ int mks1,mks2,i; mks1=mikos(seira1); mks2=mikos(seira2); if (mks1+mks2>megisto_mikos) printf( Οι συμβολοσειρές είναι πολύ μεγάλες και δεν συνέχεια μπορούν να συνενωθούν ); 13 Συνένωση dimiourgia(neaseira); /* Αντιγραφή της seira1 στη neaseira */ antigrafi_seiras(seira1,0,mks1,neaseira); /* Αντιγραφή της seira2 στη neaseira */ for (i=0; i<=mks2-1; i++) prosartisi(neaseira, anaktisi(seira2,i); 14

Αναζήτηση κείμενο.. σχήμα (pattern) 15 keimeno : a b c a b c a b d a b b a sxima : a b c a b d keimeno : a b c a b c a b d a b b a sxima : a b c a b d 16

keimeno : a b c a b c a b d a b b a sxima : a b c a b d keimeno : a b c a b c a b d a b b a sxima : a b c a b d 17 int anazitisi_seiras(typos_seiras sxima, typos_seiras keimeno) /* Προ : Δημιουργία των sxima και keimeno. Μετα : Αναζητά τη πρώτη εμφάνιση της sxima μέσα στην keimeno*/ int s,k,thesi,mkss,mksk; mkss=mikos(sxima); mksk=mikos(keimeno); if (mkss==0) return -1; if (mkss>mksk) return -2; thesi=0; s=0; k=0; συνέχεια 18

while ((s<mkss) && (k<mksk)) if (anaktisi(sxima,s)==anaktisi(keimeno,k)) /* Οι χαρακτήρες συμπίπτουν */ s++; k++; /* Οι χαρακτήρες δεν συμπίπτουν */ k=thesi++; s=0; if (s>mkss-1) /*Αν η sxima βρέθηκε στην keimeno */ return thesi; return -3; 19 Εισαγωγή.. 20

void eisagogi_seiras(typos_seiras *seira1, typos_seiras *seira2, int thesi) /*Εισάγει τη seira1 μέσα στη seira2 στη θέση thesi*/ typos_seiras proti, teleytaia; if ((0<=thesi) && (thesi<mikos(*seira2))) antigrafi_seiras(*seira2, 0, thesi, &proti); antigrafi_seiras(*seira2,thesi,mikos(*seira2)-thesi,&teleytaia); synenosi_seiras(proti, seira1, &proti); synenosi_seiras(proti, teleytaia, seira2); printf( Δεν είναι σωστή η τιμή της thesi ); 21 Διαγραφή..... void diagrafi_seiras(typos_seiras *seira, int thesi, int mks) /* Προ : Δημιουργία της seira. Μετα :Διαγράφει mks χαρακτήρες από τη συμβολοσειρά seira ξεκινώντας από τη θέση thesi.*/ typos_seiras proti, teleytaia; if ( (0<= thesi) && (mks> mikos(*seira) thesi) ) printf( Δεν είναι δυνατή η διαγραφή ); συνέχεια 22

antigrafi_seiras(*seira, 0, thesi, &proti); thesi += mks; antigrafi_seiras(*seira, thesi, mikos(*seira)-thesi, &teleytaia); synenosi_seiras(proti, teleytaia, seira); 23 Αντικατάσταση.. 24

void antikatastasi_seiras(typos_seiras seira1, typos_seiras seira2, typos_seiras *seira) /* Προ : Δημιουργία των seira1, seira2 και seira. Μετα : Αντικαθιστά την συμβολοσειρά seira1 με την συμβολοσειρά seira2 στην συμβολοσειρά seira*/ int thesi; int mks; thesi=anazitisi_seiras(seira1, *seira); if (0<=thesi && thesi <= mikos(*seira)) mks=mikos(seira1); diagrafi_seiras(seira, thesi, mks); eisagogi_seiras(seira2, seira, thesi); printf( Δεν βρέθηκε η seira1 εντός της seira ); 25 char sygrisi(typos_seiras seira1, typos_seiras seira2) /*Συγκρίνει τη seira1 και τη seira2. Επιστρέφει το χαρακτήρα < αν seira1 < seira2, = αν seira1 = seira2, και > αν seira1 > seira2. Δύο συμβολοσειρές είναι ίσες αν έχουν το ίδιο μήκος και όλοι οι χαρακτήρες τους συμπίπτουν. Αν όλοι οι χαρακτήρες συμπίπτουν μέχρι το μήκος της μικρότερης συμβολοσειράς, τότε αυτή είναι η μικρότερη */ int i, ises; i=0; ises=1; while ( ises && (i<=mikos(seira1)-1) && (i<=mikos(seira2)-1) ) if ( anaktisi(seira1,i) == anaktisi(seira2,i) ) i++; συνέχεια 26

ises=0; if(anaktisi(seira1,i)<anaktisi(seira2,i)) return '<'; return '>'; /* while */ if (ises) if ( mikos(seira1) == mikos(seira2)) return '='; if (mikos(seira1) < mikos(seira2)) return '<'; return '>'; 27 void diavase_seira(typos_seiras *seira) /* Διαβάζει χαρακτήρες και τους τοποθετεί στη seira*/ char xar; dimiourgia(seira); xar=getchar( ); while (xar!= '\n' ) prosartisi (seira, xar); xar=getchar( ); 28

void typose_seira(typos_seiras seira) /* Τυπώνει τους χαρακτήρες της seira*/ int i, mks; mks=mikos(seira); for (i=0;i<=mks-1;i++) putchar(anaktisi(seira,i)); 29 Εργασία Για τις 26/02/2008 Να υλοποιηθούν οι αλγόριθμοι για τον υπολογισμό του (α) n! και (β) νιοστού αριθμού Fibonacci. Να βρεθούν οι χρόνοι τους για διάφορες τιμές του n για (α) επαναληπτική και (β) αναδρομική υλοποίηση. Σχολιάστε τα συμπεράσματα σας. Παραδοτέα: 1. Τυπωμένος Κώδικας (4 διαφορετικά προγράμματα σε C) 2. Συμπεράσματα και γραφικές παραστάσεις με τουλάχιστον 10 τιμές για κάθε περίπτωση. 3. Κώδικας σε ηλεκτρονική μορφή. 30