Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 19. Αλφαριθμητικά II. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων

Σχετικά έγγραφα
Μεθόδων Επίλυσης Προβλημάτων

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

Ρρογραμματιςμόσ Μεκόδων Επίλυςθσ Ρροβλθμάτων. 18. Αλφαριθμητικά. Ιωάννθσ Κατάκθσ. ΕΡΛ 032: Ρρογραμματιςμόσ Μεκόδων Επίλυςθσ Ρροβλθμάτων

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

17. Πολυδιάςτατοι πίνακεσ

16. Πίνακεσ και Συναρτήςεισ

Κεφάλαιο Αλφαριθµητικές Σειρές Χαρακτήρων (Strings)

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 15. Πίνακεσ ΙI. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων

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

Η γλώσσα προγραμματισμού C

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 20. Αρχεία. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων

Δπαλάιεςε Αιθαξηζκεηηθέο εηξέο Υαξαθηήξσλ (Strings) (Γηάιεμε 2) Γηδάζθσλ: Γεκήηξεο Εετλαιηπνύξ

Η γλώσσα προγραμματισμού C

Δομθμζνοσ Προγραμματιςμόσ. Βαγγζλθσ Οικονόμου Εργαςτιριο 9

Η γλώσσα προγραμματισμού C

22. Ασκήσεις Επανάληψης

Βαγγζλθσ Οικονόμου Διάλεξθ 7. Συναρτιςεισ Μζροσ 2ο

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

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

Διάλεξη 8η: Αλφαριθμητικά (strings)

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

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. Διαφάνειεσ: Βαςικζσ Αρχζσ Προγραμματιςμοφ Α.Π.Θ. Δθμιτρθσ Βράκασ

ΑΣΚΗΣΗ 7: ΑΛΦΑΡΙΘΜΗΤΙΚΑ

Συµβολοσειρές - Strings

Εισαγωγή στον δομημένο προγραμματισμό

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

ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Συμβολοσειρές, Δείκτες και Παραδείγματα (Κεφάλαιο 13, KNK-2ED)

343 Ειςαγωγι ςτον Προγραμματιςμό

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

Διάλεξη 7: Συμβολοσειρές, Δείκτες και Παραδείγματα

Αρχές Προγραμματισμού

Η γλώςςα προγραμματιςμού C

Προγραμματισμός Ι. Θεματική ενότητα 6: Πίνακες αλφαριθμητικά

343 Ειςαγωγι ςτον Προγραμματιςμό

Χpήσιµες Βιβλιοθήκες της γλώσσας C

Συμβολοσειρές Ορίσματα στη main()

343 Ειςαγωγι ςτον Προγραμματιςμό

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

Η γλώσσα C. Διαχείριςη Συμβολοςειρών

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

ΕΡΓΑΣΗΡΙΑΚΗ ΑΚΗΗ 4.1

Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό

8 ΥΜΒΟΛΟΕΙΡΕ - STRINGS

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

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

ΔΟΜΗ ΑΠΛΗΣ ΕΠΙΛΟΓΗΣ Αςκήςεισ με ψευδογλώςςα/ διάγραμμα ροήσ. Αντώνης Μαϊργιώτης

Η γλώσσα προγραμματισμού C

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

Τεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C

Συναρτήσεις διαχείρισης αλφαριθμητικών

#define, 70, 575 #elif, 580 #else, 580 #endif, 580 #error, 584 #if, 580 #ifdef, 583 #ifndef, 580, 583 #include, 70, 227, 574 #undef, 579

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό

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

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

H ΓΛΩΣΣΑ C. Μάθηµα 16: Είσοδος/Έξοδος: Συναρτήσεις Eξόδου. ηµήτρης Ψούνης

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

Αλφαριθμητικά, πίνακες και δείκτες

Ειςαγωγι ςτο Δομθμζνο Προγραμματιςμό. Βαγγζλθσ Οικονόμου

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

Επεξεργασία κειμένου και συμβολοσειρών σε C

Εργαςτιριο Πικανοτιτων Σθμειϊςεισ προγραμματιςμοφ: βαςικζσ γνϊςεισ ανάπτυξθσ εφαρμογϊν. Κϊςτασ Αρβανιτάκθσ

Οντοκεντρικόσ Προγραμματιςμόσ

3 ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ ( while, do while )

Άςκθςθ 1θ: Να γραφεί αλγόρικμοσ που κα δθμιουργεί με τθ βοικεια διπλοφ επαναλθπτικοφ βρόχου, τον ακόλουκο διςδιάςτατο πίνακα:

Ενότητα 4: «Εισαγωγή στον Προγραμματισμό. Τα πρώτα προγράμματα σε γλώσσα C»

Αʹ. Πίνακες. Άσκηση 1. Λύση. Άσκηση 2. Λύση. Ασκήσεις Εργαστηρίου Προγραμματισμού

Ειςαγωγι ςτθν Επιςτιμθ Υπολογιςτϊν. Ειςαγωγι ςτθν Python

343 Ειςαγωγι ςτον Προγραμματιςμό

ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ. Παράδειγμα 1 Δήλωση και αρχικοποίηση μονοδιάστατου πίνακα [5] με χρήση δομής επανάληψης με συνθήκη στην είσοδο και μετρητή.

5 ΜΕΘΟΔΟΙ - ΠΑΡΑΜΕΤΡΟΙ

Εγχειρίδιο Χρήςησ Support

Διαδικασιακός Προγραμματισμός

Διαχείριςθ του φακζλου "public_html" ςτο ΠΣΔ

Ενδεικτική περιγραφή μαθήματος

C: Από τη Θεωρία στην Εφαρμογή

Παράςταςη ακεραίων ςτο ςυςτημα ςυμπλήρωμα ωσ προσ 2

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

Δομζσ Δεδομζνων Πίνακεσ

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

Αρχές Προγραμματισμού

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

Ανάπτυξη Εφαρμογών Σε Προγραμματιςτικό Περιβάλλον

1. Εγκατάςταςη κειμενογράφου JCE

ΘΥ101: Ειςαγωγι ςτθν Πλθροφορικι

Δομζσ Δεδομζνων. Αναηιτθςθ και Ταξινόμθςθ Διάλεξθ 3

Ένα πρόβλθμα γραμμικοφ προγραμματιςμοφ βρίςκεται ςτθν κανονικι μορφι όταν:

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

Fortran και Αντικειμενοστραφής προγραμματισμός.

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

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

Η Γλώσσα Προγραμματισμού C (Μέρος 3 - Συναρτήσεις, Πίνακες και Δείκτες) Εισαγωγή στις Συναρτήσεις

9 ΕΞΑΙΡΕΕΙ - EXCEPTIONS

ΑΝΑΠΣΤΞΘ ΕΦΑΡΜΟΓΩΝ Ε ΠΡΟΓΡΑΜΜΑΣΙΣΙΚΟ ΠΕΡΙΒΑΛΛΟΝ 3 ο ΓΕΝΙΚΟ ΛΤΚΕΙΟ Ν. ΜΤΡΝΘ- ΕΠΙΜΕΛΕΙΑ: ΠΤΡΙΔΑΚΘ Λ.

Στόχοι και αντικείμενο ενότητας. Τύπος πίνακα. Τύπος πίνακα (συν.) #6. Πίνακες και Δείκτες

ΟΔΗΓΙΕ ΓΙΑ ΣΗΝ ΕΙΑΓΩΓΗ ΕΚΔΡΟΜΩΝ & ΝΕΩΝ - ΑΝΑΚΟΙΝΩΕΩΝ ΣΗΝ ΙΣΟΕΛΙΔΑ ΣΗ Δ.Δ.Ε. ΘΕΠΡΩΣΙΑ

Μονάδες 6. Μονάδες ΓΑΨΕ Δεν υπάρχει ρίηα 2. ΑΝ Α>0 ΤΟΤΕ 3. ΤΕΛΟΣ_ΑΝ 4. ΑΛΛΙΩΣ 5. ίηα Τ_(Α)

Σημειώσεις για πρόοδο στο εργαστήριο

7η Εργαστηριακή Άσκηση: Προβολή εικόνας στη φόρμα με εκτέλεση ερωτήματος.

Transcript:

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων 19. Αλφαριθμητικά II Ιωάννθσ Κατάκθσ

Αλφαρικμθτικά ςτθ C Ζνα string είναι μία ακολουκία αλφαρικμθτικϊν χαρακτήρων, ςθμείων ςτίξθσ κτλ. Π.χ. Hello How are you? 121212 *Apple#123*% Προθγοφμενθ Διάλεξθ 1. Ειςαγωγικζσ Ζννοιεσ (Αρχικοποίθςθ, Ανάγνωςθ & Eκτφπωςθ) 2. Πίνακεσ Strings 3. Συναρτιςεισ Βιβλιοκικθσ <string.h> Σιμερα Υλοποίθςθ Συναρτιςεων <string.h> + Συναρτιςεισ <string.h> + Παραδείγματα

Η βιβλιοκικθ string.h - επανάλθψθ o Το αρχείο επικεφαλίδα (header file), string.h παρζχει ςυναρτιςεισ για χειριςμό strings o Συναρτιςεισ strlen(s): υπολογίηει το μζγεκοσ του string strcpy(s1,s2): αντιγράφει το s2 ςτο s1 strcat(s1,s2): προςκζτει το s2 ςτο s1 strcmp(s1,s2): ςυγκρίνει το s1 με s2 και επιςτρζφει κετικι τιμι (1) εάν s1 μεγαλφτερο (αλφαβθτικά) από το s2, μθδζν αν είναι ίςα, και αρνθτικι τιμι (-1) εάν s1 μικρότερο από s2

Η ςυνάρτθςθ strlen() - Επανάλθψθ #include <stdio.h> int mystrlen (char s[]) int i=0; while (s[i]!= '\0') i++; return i; int main() char x[10] = "123456" ; printf("%d", mystrlen(x)); 1 2 3 4 5 6 \0??? Εκτφπωςθ: 6

Η ςυνάρτθςθ strcpy() H ςυνάρτθςθ strcpy(ma, mb) αντιγράφει το mb ςτο ma int main() char ma[10]; char mb[10]="hello"; strcpy(ma,mb); printf("ma=%s and mb=%s", ma, mb); Πρίν ma?? mb Μετά ma mb H E L L O \0 H E L L O \0 H E L L O \0

Υλοποίθςθ τθσ strcpy() Υλοποιιςτε τθν ςυνάρτθςθ mystrcpy(char to[], char from[]) θ οποία αντιγράφει τo string from ςτο string to Αλγόρικμοσ o Για κάκε ςτοιχείο from[i] αντίγραψε το from[i] ςτθν κζςθ to[i], μζχρι να φτάςεισ ςτο \0

Υλοποίθςθ τθσ strcpy() #include <stdio.h> /* To string from αντιγράφεται ςτο to */ void mystrcpy(char to[ ], char from[ ]) int i=0; while (from[i]!= '\0') to[i] = from[i]; i++; to[i]='\0'; int main() char ma[10]; char mb[10]="hello"; mystrcpy(ma,mb); printf("ma=%s and mb=%s", ma, mb);

Η ςυνάρτθςθ strcat() H ςυνάρτθςθ strcat(s1, s2) αντιγράφει το s2 ςτο τζλοσ του s1 int main() char ma[10]="hello"; char mb[10]="cat"; strcat(ma,mb); printf("ma=%s and mb=%s", ma, mb); Πρίν: s1 H E L L O \0 s2 Μετά: s1 H E L L O C A T \0? s2

Υλοποίθςθ strcat() Υλοποιιςτε τθν ςυνάρτθςθ mystrcat(char s1[], char s2[]) θ οποία προςκζτει τo string s2 ςτο τζλοσ του s1 Αλγόρικμοσ o Βρεσ το \0 ςτο s1 ςτθ κζςθ K o Αντζγραψε κάκε s2[i], ςτθν αντίςτοιχθ κζςθ s1[i+k] o Πρόςκεςε \0 ςτο τζλοσ του s1 Πρίν s1 H E L L O \0 κ s2 Μετά s1 s2 H E L L O C A T \0?

Υλοποίθςθ strcat() ζκδοςθ 1 void mystrcat(char s1[], char s2[]) int i=0, k=0; // Εφρεςθ \0 ςτο S1 while (s1[k]!= '\0') k++; // Αντιγραφι Στοιχείων while (s2[i]!= '\0') s1[k]=s2[i]; i++; k++; s1*k+= \0 ; // Προςκικθ NULL ςτο τζλοσ του s1 ι while (s2[i]!= '\0') s1[k+i]=s2[i]; i++; s1[k+i]='\0';

Υλοποίθςθ strcat() - ζκδοςθ 2 void mystrcat(char s1[], char s2[]) int i=0, k=0; // Εφρεςθ \0 ςτο S1 k = strlen(s1); // Αντιγραφι Στοιχείων while (s2[i]!= '\0') s1[k]=s2[i]; i++; k++; // προςκικθ NULL ςτο τζλοσ του s2 s1*k+= \0 ; κ Πρίν s1 H E L L O \0 s2 Μετά s1 s2 H E L L O C A T \0?

Η ςυνάρτθςθ strcmp() H ςυνάρτθςθ strcmp(s1, s2) ςυγκρίνει το s1 με s2 και επιςτρζφει: 1 : εάν s1>s2 (αλφαβθτικά) 0 : εάν s1==s2-1: εάν s1<s2 (αλφαβθτικά) s1 C U T \0?? > s2 Επιςτρζφει 1

Η ςυνάρτθςθ strcmp() Οι ςυγκρίςεισ γίνονται βάςθ του πίνακα ASCII

Η ςυνάρτθςθ strcmp() // Παράδειγμα κλιςθσ τθσ ςυνάρτθςθσ strcmp() #include <stdio.h> int main() char s1[10]="hello"; char s2[10]="cat"; int cmp = strcmp(s1,s2); if (cmp == 0) printf("οι δυο λζξεισ είναι οι ίδιεσ"); else if (cmp > 0) printf("%s > %s\n", s1, s2); else printf("%s < %s\n", s1, s2);

Υλοποίθςθ mystrcmp() Υλοποιιςτε τθν ςυνάρτθςθ int mystrcmp(char s1[], char s2[]) θ οποία ςυγκρίνει το s1 με s2 και επιςτρζφει κετικι τιμι εάν s1 μεγαλφτερο (αλφαβθτικά) από το s2, μθδζν αν είναι ίςα, και αρνθτικι τιμι εάν s1 μικρότερο από s2. Αλγόρικμοσ o Ζλεγξε επαναλθπτικά εάν κάκε ςτοιχείο s1[i] είναι ίςο με s2[i] o Εάν δεν είναι κάποιο ςτοιχείο ίςο επζςτρεψε το s1[i]-s2[i]

Υλοποίθςθ mystrcmp() int mystrcmp(char s1[], char s2[]) int i=0; // Ελζγχουμε κάκε ςτοιχείο // s1[i] αν είναι ίςο με s2[i] while (s1[i]!= '\0') if (s1[i]!= s2[i]) break; i++; return s1[i]-s2[i]; s1 > s2 s1 = s2 Περίπτωςθ Α C \0 Περίπτωςθ Β s1 C \0 < s2 Περίπτωςθ C

Υλοποίθςθ mystrcmp() Γιατί είναι λάκοσ θ πιο κάτω υλοποίθςθ τθσ mystrcmp? int mystrcmp(char s1[], char s2[]) int i=0; // Ελζγχουμε κάκε ςτοιχείο s1[i] αν είναι ίςο s2[i] while (s1[i] == s2[i]) i++; return s1[i]-s2[i]; s1 = s2

Η ςυνάρτθςθ gets() o Η ςυνάρτθςθ gets() χρθςιμοποιείται για να διαβάηει ςυμβολοςειρζσ από το χριςτθ o Η gets() είναι δθλωμζνθ ςτθν βιβλιοκικθ <string.h> o Η gets() διαβάηει χαρακτιρεσ από το πλθκτρολόγιο μζχρι να πατθκεί enter o Στθ ςυνζχεια αποκθκεφει τουσ χαρακτιρεσ που διάβαςε Στο τζλοσ προςκζτει τον χαρακτιρα \0 main() char protasi[40]; printf( Give a sentence: ); gets(protasi); 18/43

Η ςυνάρτθςθ puts() o Η ςυνάρτθςθ puts() χρθςιμοποιείται για να τυπϊνει ςυμβολοςειρζσ ςτθν οκόνθ o Η puts() είναι δθλωμζνθ ςτθν βιβλιοκικθ <string.h> o Η puts() τυπϊνει ςτθν οκόνθ τουσ χαρακτιρεσ που βρίςκονται ςτo αλφαρικμθτικό μζχρι να ςυναντιςει το \0 o Στθ ςυνζχεια τυπϊνει τον χαρακτιρα \n αλλάηοντασ γραμμι main() char lexi[40]="hello world"; puts(lexi); puts("today is Thursday");

Η ςυνάρτθςθ strstr() o Ελζγχει αν μια ςυμβολοςειρά εμπεριζχεται ςε μια άλλθ o Είναι δθλωμζνθ ςτθ βιβλιοκικθ <string.h> o Σφνταξθ: strstr(str,sub) Ελζγχει αν οι χαρακτιρεσ τθσ ςυμβολοςειράσ sub εμφανίηονται (με τθν ίδια ςειρά) ςε κάποιο ςθμείο τθσ str Η ςυνάρτθςθ επιςτρζφει τθ διεφκυνςθ του χαρακτιρα τθσ str όπου εντόπιςε για πρϊτθ φορά το sub Αν το sub δεν περιζχεται μζςα ςτθν str τότε επιςτρζφεται θ τιμι NULL main() char s1[40]; printf("give a sentence: "); gets(s1); if (strstr(s1,"arithmos")!=null) printf("your sentence contains \"arithmos\"!\n"); else printf("thank you!\n"); system("pause");

Παράδειγμα Φωνιεντα Να γίνει πρόγραμμα που κα διαβάηει μία φράςθ, κα αντικακιςτά όλα τα φωνιεντα του Λατινικοφ αλφάβθτου με το χαρακτιρα * και κα τυπϊνει τθ νζα ςυμβολοςειρά #include <stdio.h> #include <string.h> #define STRING_SIZE 250 main() char s[string_size]; int i=0; puts("give a word: "); gets(s); while (s[i]!='\0') if (s[i]=='a' s[i]=='e' s[i]=='o' s[i]=='i' s[i]=='u' s[i]=='y') s[i]='*'; i++; puts(s); system("pause");

Τζλοσ διάλεξθσ