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

Σχετικά έγγραφα
ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ & ΠΛΗΡΟΦΟΡΙΚΗΣ

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

Κεφάλαιο , 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

Εισαγωγή στον Προγραμματισμό

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

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)

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

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

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

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

Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ

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

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

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

Υπολογισμός - Εντολές Επανάληψης

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

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

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

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

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

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

scanf() scanf() stdin scanf() printf() int float double %lf float

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

Πίνακες. Χρησιμοποιούνται για αποθήκευση συνόλου δεδομένων του ίδιου τύπου. Γραμμική Διάταξη Δήλωση Τύπος Δεδομένων ΌνομαΠίνακα[ length ]

Κεφάλαιο 8.7. Πίνακες & Συναρτήσεις ( ιάλεξη 17) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Η εντολή if-else. Η απλή μορφή της εντολής if είναι η ακόλουθη: if (συνθήκη) { Η γενική μορφή της εντολής ifelse. εντολή_1; εντολή_2;..

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

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

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

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

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

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

Απλά Προγράμματα. Βήματα: 1. Καθορισμός παράστασης δεδομένων στη μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων

είκτες και Πίνακες (2)

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

12. Συναρτήσεις (Μέρος ΙI)

Εισαγωγή στον Προγραμματισμό

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

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

Πίνακες. 1 Πίνακες. 30 Μαρτίου 2014

Τύποι Δεδομένων Είσοδος/Έξοδος

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

1 Ο ΣΕΤ ΑΣΚΗΣΕΩΝ (Ενδεικτικές Λύσεις)

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

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

Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου. ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Βήματα: μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων. Δομές Δεδομένων + Αλγόριθμοι = Προγράμματα

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

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 4-2

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

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

ΠΡΟΓΡΜΜΑΤΑ ΣΕ C. Γράψτε σε γλώσσα προγραμματισμού C τη συνάρτηση:

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

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

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

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

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

Παραδείγματα. Γράψτε ένα πρόγραμμα που να τυπώνει τη μέση τιμή ενός συνόλου μη αρνητικών αριθμών

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

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

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

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

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

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

Τμήμα Πληροφορικής & Επικοινωνιών

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 8 η : Συναρτήσεις Χειµερινό Εξάµηνο 2011

Εισαγωγή στον Προγραμματισμό

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

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

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

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7) Είσοδος/ Έξοδος

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ

int a[5]; a[0] a[1] a[2] a[3] a[4] 15/10/2009

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

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7)

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

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

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

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

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

Γλώσσα Προγραμματισμού C. Προγραμματισμός HY: Γλώσσα Προγραμματισμού C. Γρήγορος Πίνακας Αναφοράς Σύνταξης. Εισήγηση #4. Επαναληπτικές δομές:

Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C (2)

Εισαγωγή στον Προγραμματισμό

Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C (2)

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΕΞΕΤΑΣΗ IOYNIOY 2018 ΘΕΜΑΤΑ Α ΟΝΟΜΑΤΕΠΩΝΥΜΟ:... ΑΕΜ: ΕΞΑΜΗΝΟ:

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

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

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

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13)

Εξοικ Εξ ε οικ ίωση ε με το το πρόγ ραμμα πρόγ DEV C++ Επικοι Επικ νωνία οι Χρήσ Χρήστη τη Υπολ Υπο ογισ λ τή

Προγραμματισμός Ι. Θεματική ενότητα 8: Δημιουργία προγραμμάτων

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

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

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

Κεφάλαιο Πίνακες Ι. (Διάλεξη 16)

Εισαγωγή στον Προγραμματισμό

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

ΕΡΓΑΣΤΗΡΙΟ 4: Μεταβλητές, Δομές Ελέγχου και Επανάληψης

Transcript:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟ ΙΑ ΙΚΑΣΤΙΚΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ (2010-2011) ΥΠΕΥΘΥΝΟΙ Ι ΑΣΚΟΝΤΕΣ ΕΡΓΑΣΤΗΡΙΟΥ: Α. ΦΩΚΑ, Κ. ΣΤΑΜΟΣ 3 Ο ΣΕΤ ΑΣΚΗΣΕΩΝ

Οι ασκήσει αυτού του φυλλαδίου καλύπτουν τα παρακάτω θέµατα και δίνονται ενδεικτικά οι αντίστοιχε ενότητε στο βιβλίο The GNU C Programming Tutorial που µπορείτε συµβουλευτείτε (http://crasseux.com/books/ctutorial/). Συναρτήσει (κεφάλαιο Functions) Πίνακε (κεφάλαιο Αrrays) Συµβολοσειρέ (κεφάλαιο Strings) Χρήση Βιβλιοθηκών (κεφάλαιο Libraries) Ασκηση 1 η Γράψτε πρόγραµµα το οποίο θα ζητάει από τον χρήστη να δώσει ένα αλφαριθµητικό (string) N (ορίζεται µε σταθερά) το πολύ χαρακτήρων και στη συνέχεια θα ελέγχει εάν το αλφαριθµητικό string που εισήχθη µπορεί να διαβαστεί κανονικά και ανάποδα. Όταν εντοπίσει τέτοιο string θα το εκτυπώνει και στη συνέχεια θα εκτυπώνει του ASCII ακεραίου που θα αντιστοιχούν στου χαρακτήρε του string π.χ. Insert String (10 chars max): abccba The string abccba can be read backwards ASCII representation: 656667676665 #include <stdio.h> #include <string.h> main() char s[20]; int i,len, flag=1; printf("give string: "); scanf("%s", s); len=strlen(s); for (i=0; i<len/2;i++) if (s[i]!=s[len-1-i]) flag=0; if (flag==1) printf("the string can be read backwards \n"); else printf("the string cannot be read backwards \n"); for (i=0; i< len; i++) printf("%d \n", s[i]); Εισαγωγή στο διαδικαστικό Προγραμματισμό Σελίδα 2/10

Άσκηση 2η Λέξη ονοµάζεται µια ακολουθία χαρακτήρων που δεν περιέχει τον κενό χαρακτήρα. Φτιάξτε ένα πρόγραµµα που δέχεται από το χρήστη µια ακολουθία χαρακτήρων και υπολογίζει και τυπώνει το πλήθο των λέξεων που περιέχει η ακολουθία. Επίση εµφανίζει κάθε λέξη στην οθόνη (µία λέξη σε κάθε γραµµή). Προσοχή: ανάµεσα στι λέξει τη δοσµένη ακολουθία µπορεί να υπάρχουν περισσότεροι από έναν κενοί χαρακτήρε. Dwste mia akolou8ia xarakthrwn: this is some input string this is some input string Yparxoun 5 lekseis. #include <stdio.h> #define N 255 main() char string[n]; char buffer[n]; int i,j, words; char c; i = 0; printf("dwste mia akolou8ia xarakthrwn: "); do string[i++] = getchar(); while(string[i-1]!= '\n'); i = j = 0; if (string[i] == ' ') words = 0; else words = 1; while(string[i]!= '\0') if (string[i] == ' ') if(i+1 < N && string[i+1]!= ' ') words++; printf("\n"); else printf("%c", string[i]); i++; printf("yparxoun %d lekseis.\n\n", words); Άσκηση 3η Να αποθηκεύσετε σε ένα δυσδιάστατο πίνακα τι θερµοκρασίε 4 πόλεων (Αθήνα, Θεσσαλονίκη, Πάτρα, Ηράκλειο) για κάθε µέρα του εκεµβρίου 2007. Οι τιµέ να δίνονται µέσα στο πρόγραµµα ω εξή : 2,0,-3,-7,6,15,10,11,4,2,12,23,13,14,5,1,-1,-3,-7,0,5,3,10,9,14,20,14,12,10,11,6, Εισαγωγή στο διαδικαστικό Προγραμματισμό Σελίδα 3/10

4,2,12,21,13,14,5,1,-1,-3,-2,0,5,3,10,9,14,20,14,12,10,11,6,2,0,-3,4,-4,15,10,11, 6,15,10,11,4,2,12,2,0,-3,4,25,13,14,5,1,10,9,14,25,14,12,-1,-3,-9,0,5,3,12,10,4, 2,15,10,0,-3,4,6,11,4,13,14,5,2,12,12,1,-1,-3,-3,9,14,0,5,3,10,20,10,11,6,14,12 Στη συνέχεια να βρείτε και να εκτυπώσετε την θερµότερη και την ψυχρότερη µέρα του µήνα για κάθε µία πόλη. Π.χ. Αθήνα: Θερµότερη µέρα (23 C), 13 εκ Ψυχρότερη µέρα (-7 C), 4 εκ, 20 εκ Στη συνέχεια να βρείτε και να εκτυπώσετε την θερµότερη και την ψυχρότερη πόλη για κάθε µέρα του µήνα. Π.χ. 1 εκ: Θερµότερη πόλη (6 C), Πάτρα Ψυχρότερη πόλη (2 C), Αθήνα, Ηράκλειο Υπόδειξη: Εσωτερικά στο πρόγραµµά σα µπορείτε να αποθηκεύετε την πόλη ω έναν αριθµό 1 έω 4 και µόνο στην εκτύπωση να εµφανίζετε το όνοµα τη πόλη. #include <stdio.h> void printcityname (int i) switch(i) case 0: printf("athina"); break; case 1: printf("thessaloniki"); break; case 2: printf("patra"); break; case 3: printf("hrakleio"); break; return; main() int temp[4][31] = 2,0,-3,-7,6,15,10,11,4,2,12,23,13,14,5,1,-1,-3,-7,0,5,3,10,9,14,20,14,12,10,11,6, 4,2,12,21,13,14,5,1,-1,-3,-2,0,5,3,10,9,14,20,14,12,10,11,6,2,0,-3,4,-4,15,10,11, 6,15,10,11,4,2,12,2,0,-3,4,25,13,14,5,1,10,9,14,25,14,12,-1,-3,-9,0,5,3,12,10,4, 2,15,10,0,-3,4,6,11,4,13,14,5,2,12,12,1,-1,-3,-3,9,14,0,5,3,10,20,10,11,6,14,12; int i,j; int max, min; for (i = 0; i < 4; i++) max = temp[i][0]; min = temp[i][0]; for (j = 0; j < 31; j++) if (temp[i][j] > max) max = temp[i][j]; if (temp[i][j] < min) min = temp[i][j]; printcityname(i); printf(": Thermoterh mera (%d C)", max); for (j = 0; j < 31; j++) if (temp[i][j] == max) Εισαγωγή στο διαδικαστικό Προγραμματισμό Σελίδα 4/10

printf(", %d Dek", j+1); printf(" - Psixroteri mera (%d C)", min); for (j = 0; j < 31; j++) if (temp[i][j] == min) printf(", %d Dek", j+1); printf("\n"); printf("\n\n"); for (i = 0; i < 31; i++) max = temp[0][i]; min = temp[0][i]; for (j = 0; j < 4; j++) if (temp[j][i] > max) max = temp[j][i]; if (temp[j][i] < min) min = temp[j][i]; printf("%d Dek: Thermoterh polh (%d C)", i+1, max); for (j = 0; j < 4; j++) if (temp[j][i] == max) printf(", "); printcityname(j); printf(" - Psixroteri polh (%d C)", min); for (j = 0; j < 4; j++) if (temp[j][i] == min) printf(", "); printcityname(j); printf("\n"); Άσκηση 4η Θέλουµε να δηµιουργήσουµε ένα πρόγραµµα το οποίο θα καταγράφει τι κινήσει ενό ροµπότ κατά την κίνηση του σε ένα χώρο. Οι δυνατέ κινήσει αντιστοιχούν στι τιµέ εµπρό =1, πίσω=2, δεξιά=3 και αριστερά=4. Ακολούθω πρέπει να κάνει τα εξή : 1. Να αποθηκεύει τι τιµέ αυτέ σε ένα µονοδιάστατο πίνακα (θα αποθηκεύει τι 1000 πρώτε κινήσει που πραγµατοποίησε). Χρησιµοποιήστε την παραγωγή τυχαίων αριθµών στο πεδίο τιµών [1,4] για το γέµισµα του πίνακα µε τιµέ. 2. Γράψτε συνάρτηση η οποία δέχεται σαν όρισµα τον πίνακα µε τι κινήσει του ροµπότ και να βρίσκει πόσε φορέ το ροµπότ µα αφού κινήθηκε δεξιά έκανε πίσω µετά από δύο θέσει. Να επιστρέφεται ο αριθµό αυτό στην main() και να εµφανίζεται στην οθόνη. Εισαγωγή στο διαδικαστικό Προγραμματισμό Σελίδα 5/10

3. Γράψτε συνάρτηση η οποία δέχεται σαν όρισµα τον πίνακα µε τι κινήσει του ροµπότ και να βρίσκει πόσε φορέ βρέθηκε ο συνδυασµό κινήσεων αριστερά δεξιά - εµπρό. Να επιστρέφεται ο αριθµό αυτό στην main() και να εµφανίζεται στην οθόνη. 4. Γράψτε συνάρτηση η οποία δέχεται σαν όρισµα τον πίνακα µε τι κινήσει του ροµπότ και να βρίσκει πόσε φορέ έκανε µια πλήρη περιστροφή κατά τη φορά των δεικτών του ρολογιού. Mια πλήρη περιστροφή πραγµατοποιείται όταν το ροµπότ κινηθεί 3 συνεχόµενε φορέ µε στροφή στα δεξιά. Να επιστρέφεται ο αριθµό αυτό στην main() και να εµφανίζεται στην οθόνη. 5. Γράψτε συνάρτηση η οποία δέχεται σαν όρισµα τον πίνακα µε τι κινήσει του ροµπότ και να βρίσκει τη συχνότερη κίνηση που πραγµατοποίησε συνολικά το ροµπότ. Να επιστρέφεται ο αριθµό αυτό στην main() και να εµφανίζεται στην οθόνη. 6. Γράψτε συνάρτηση η οποία δέχεται σαν όρισµα τον πίνακα µε τι κινήσει του ροµπότ και να βρίσκει τη σπανιότερη κίνηση που πραγµατοποίησε συνολικά το ροµπότ. Να επιστρέφεται ο αριθµό αυτό στην main() και να εµφανίζεται στην οθόνη. 7. Γράψτε συνάρτηση η οποία δέχεται σαν όρισµα τον πίνακα µε τι κινήσει του ροµπότ και για κάθε φορά που το ροµπότ έκανε δύο φορέ πίσω, να αντικαθιστά την δεύτερη οπισθοχώρηση µε µια κίνηση αριστερά. Η συνάρτηση δεν επιστρέφει τίποτα στη main(). Παραγωγή αγωγή τυχαίων αριθµών: Για την παραγωγή τυχαίων αριθµών χρησιµοποιήστε την γεννήτρια τυχαίων αριθµών rand() τη γλώσσα C όπω στο παρακάτω παράδειγµα. #include <stdlib.h> #include <time.h> /* συνάρτηση RandomInteger για την παραγωγή τυχαίου αριθµού µέσα σε καθορισµένο πεδίο τιµών [low, high]. */ int RandomInteger(int low, int high) int k; double d; Εισαγωγή στο διαδικαστικό Προγραμματισμό Σελίδα 6/10

d = (double) rand() / ((double)rand_max + 1); k = (int) (d * (high low + 1)); return (low + k); main() int i, number; /* αρχικοποίηση γεννήτριας παραγωγής τυχαίων αριθµών µε βάση την συνάρτηση srand() */ srand((int)time(null)); /*κλήση της RandomInteger µέσα σε for για την παραγωγή 10 τυχαίων αριθµών στο πεδίο τιµών [1,9] */ for (i = 0; i < 10; i++) number = RandomInteger(1, 9); Printf( %d\n, number); #include <stdio.h> #include <stdlib.h> #include <time.h> #define N 1000 #define FORWARD 1 #define BACKWARD 2 #define RIGHT 3 #define LEFT 4 int RandomInteger(int low, int high) int k; double d; d = (double) rand() / ((double)rand_max + 1); k = (int) (d * (high - low + 1)); return (low + k); /** * Returns the number of patterns of the form R?B (right movement, any movement, backwards movement) *@param Array of integers Εισαγωγή στο διαδικαστικό Προγραμματισμό Σελίδα 7/10

*@returns number of exc2 patterns */ int FindR_B(int Array[]) int i=0,counter=0; for (i=0; i < N-2; i++) if ((Array[i]==RIGHT) && (Array[i+2]==BACKWARD)) counter++; return counter; int findlrf(int Array[]) int i=0; int count=0; for(i=0; i < (N-2); i++) if( (Array[i] == LEFT) && (Array[i+1] == RIGHT) && (Array[i+2] == FORWARD) ) count++; return count; /** *Returns the number of the circular patterns of the form RRR ( right, right, right) *@param Array of integers *@returns number of clockwise circles done by the robot */ int FindCircle(int Array[]) int i=0,counter=0; for (i=0; i < N-2; i++) if ((Array[i]==RIGHT) && (Array[i+1]==RIGHT) && (Array[i+2]==RIGHT)) counter++; return counter; /** *Returns the movement (1-4) which has the least frequency *@param Array of integers *@returns the least probable movement (the movement with the minimum frequency) */ int FindRareMovement(int Array[]) Εισαγωγή στο διαδικαστικό Προγραμματισμό Σελίδα 8/10

int i=0,counter=0,freqmatrix[4]=0,0,0,0,min=0; for (i=0; i < N; i++) FreqMatrix[Array[i]-1]++; for (i=1; i < 4; i++) if (FreqMatrix[min] > FreqMatrix[i]) min=i; return min; int findmaxfreq(int Array[]) int i=0; int Freqs[4]=0,0,0,0; int max = 0; for(i = 0; i < N; i++) Freqs[Array[i]-1]++; for(i = 1; i < 4; i++) if(freqs[max] < Freqs[i]) max = i; return max; void replacebbwithbl(int Array[]) int i=0; for(i = 0 ; i < (N-1); i++) if((array[i] == BACKWARD) && (Array[i+1] == BACKWARD) ) Array[i+1] = LEFT; main() int moves[n]; int i; srand((int)time(null)); for (i = 0; i < N; i++) moves[i] = RandomInteger(1, 4); Εισαγωγή στο διαδικαστικό Προγραμματισμό Σελίδα 9/10

printf("number of R?B moves %d\n",findr_b(moves)); printf("lrf count: %d\n",findlrf(moves)); printf("number of circular moves %d\n",findcircle(moves)); printf("the movement with the least frequency %d\n",findraremovement(moves)); printf("max freq: %d\n",findmaxfreq(moves)); replacebbwithbl(moves); printf("replaced second backward movement with left movement\n"); Εισαγωγή στο διαδικαστικό Προγραμματισμό Σελίδα 10/10