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

Σχετικά έγγραφα
ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 1 η

1 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ - ΑΛΓΟΡΙΘΜΟΙ

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

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

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

2 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C

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

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

3 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ - ΠΙΝΑΚΕΣ

3 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ - ΠΙΝΑΚΕΣ

3 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ - ΠΙΝΑΚΕΣ

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

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

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

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

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

Η βασική συνάρτηση προγράμματος main()

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

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

1 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ (επανάληψη στη γλώσσα C & εισαγωγή στη γλώσσα C++)

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

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

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

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

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

3 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ

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

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

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

Δομές Ανακυκλώσεων. Εντολές ελέγχου - 1

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

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

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

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

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι είναι ; Συναρτήσεις. Παράδειγμα #1. double convert ( double cm ) { double inch;

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

ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 3 η : Επίλυση Προβληµάτων Χειµερινό Εξάµηνο 2011

Κεφάλαιο 6: Συναρτήσεις IΙΙ Αρθρωτός Προγραμματισμός. Δείκτες (Διάλεξη 14)

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

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

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Ασκήσεις Επανάληψης

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

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

Ηβασικήσυνάρτηση προγράμματος main()

Νικόλαος Μιχαλοδημητράκης Σημειώσεις C (Εργαστήριο) 12 ο Μάθημα 1

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

2 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ Κλάσεις, Αντικείμενα & Δομητές (Constructors)

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

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

Κεφάλαιο 6: Συναρτήσεις IΙΙ Αρθρωτός Προγραμματισμός. (Διάλεξη 14) Παράδειγμα: Αλλαγή τιμής μεταβλητής μόνο τοπικά

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

Διάλεξη 11η: Δείκτες, μέρος 1

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

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

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

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

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

που θα δώσει αποτέλεσµα 48, λόγω της αριστερής προσεταιριστικότητας των τελεστών / και *, ενώ η επιθυµητή αντικατάσταση θα ήταν η

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

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

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

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

Συναρτήσεις και διαδικασίες

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

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

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

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

Εισαγωγή στην πληροφορική

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

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

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

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι

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

4. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Α' μέρος: for)

Γλώσσα Προγραμματισμού C

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

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

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

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

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

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

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

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

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

Συναρτήσεις. Εισαγωγή

1 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ (επανάληψη στη γλώσσα C & εισαγωγή στη γλώσσα C++)

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

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

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

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

Διάλεξη 5η: Εντολές Επανάληψης

Transcript:

Δ.Π.Θ. - Πολυτεχνική Σχολή Τμήμα Μηχανικών Παραγωγής & Διοίκησης Ακαδ. έτος 2017-2018 Τομέας Συστημάτων Παραγωγής Εξάμηνο Β Αναπληρωτής Καθηγητής Στέφανος Δ. Κατσαβούνης ΜΑΘΗΜΑ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (ΓΛΩΣΣΑ C) 26/02/2018 ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 2 η ΑΣΚΗΣΗ - 1 Να γραφεί μια συνάρτηση που θα υπολογίζει τον αριθμό ημέρας μιας δεδομένης ημερομηνίας, χρησιμοποιώντας τον ακόλουθο τύπο που είναι γνωστός ως Zeller s congruence. Όλες οι διαιρέσεις είναι ακέραιες. Οι παράμετροι είναι : d = η ημέρα του μήνα mm = ο αριθμός μήνα (τροποποιημένος) (3=Μάρτιος, 4=Απρίλιος,, 13=Ιανουάριος, 14=Φεβρουάριος) w = ο αριθμός ημέρας (0=Δευτέρα, 1= Τρίτη,, 6=Κυριακή) ( 26 ( mm + 1) ) 5 ( year%100) 21 ( year / 100) w= d + 5 + + + %7 10 4 4 Στη συνέχεια να γράψετε ένα πρόγραμμα σε γλώσσα C που θα καλεί τη συνάρτηση και θα εμφανίζει τα αποτελέσματα που επιστρέφει η συνάρτηση. ΑΣΚΗΣΗ 2 Να γράψετε 2 συναρτήσεις για τον υπολογισμό της επιφάνειας και του όγκου του σχήματος: 1 V = π h R + R + RR 3 2 2 ( 1 2 1 2) ( ) ( ) 2 2 2 S =π R + R R R + h +π R 1 2 2 1 1 Στη συνέχεια να γράψετε ένα πρόγραμμα σε γλώσσα C που θα καλεί τις συναρτήσεις και θα εμφανίζει τα αποτελέσματα που επιστρέφει η συνάρτηση. ΑΣΚΗΣΗ 3 Για τον υπολογισμό της τιμής του n! όταν η τιμή του n είναι μεγάλη χρησιμοποιείται ο προσεγγιστικός τύπος του n n Stirling : n! e n 2π n. Nα γραφεί πρόγραμμα σε γλώσσα C για τον υπολογισμό της τιμής n! (τύπου double) σύμφωνα με τον παραπάνω τύπο. Η τιμή του n (τύπου int) εισάγεται με τη χρήση της scanf_s (να χρησιμοποιηθεί η συνάρτηση pow της math.h). Στο ίδιο πρόγραμμα, να γραφεί το αντίστοιχο τμήμα προγράμματος για τον υπολογισμό του n! σύμφωνα με τον τύπο n! = 1 2 3 n, και να βρεθούν οι διαφορές (ως ποσοστό %) που παρουσιάζουν οι δύο μέθοδοι υπολογισμού, για διάφορες τιμές του n. ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (ΓΛΩΣΣΑ C) ΑΚΑΔ. ΕΤΟΣ 2017-2018 1

ΑΣΚΗΣΗ 4 Να λυθεί η προηγούμενη Άσκηση 3 με χρήση συναρτήσεων. Να γραφούν δύο συναρτήσεις που θα επιστρέφουν την τιμή του n!, σύμφωνα με τους δύο τρόπους, και ένα πρόγραμμα που θα τις καλεί διαδοχικά. ΑΣΚΗΣΗ 5 Η μηνιαία πληρωμή (Payment) ενός δανείου μπορεί να υπολογιστεί από τον παρακάτω τύπο: Payment = N Rate* (1 + Rate) * Loan N ((1 + Rate) 1) Rate είναι το μηνιαίο επιτόκιο, δηλαδή το ετήσιο επιτόκιο διαιρεμένο με το 12 (π.χ. 12% ετήσιο επιτόκιο αντιστοιχεί σε 1% μηνιαίο επιτόκιο), N είναι το πλήθος των πληρωμών και Loan είναι το ποσό του δανείου. Να γράψετε μια συνάρτηση για τον υπολογισμό της μηνιαίας πληρωμής (Payment) και στη συνέχεια ένα πρόγραμμα που θα χρησιμοποιεί τη συνάρτηση. Η συνάρτηση θα έχει ως ορίσματα τα Rate, N, Loan. Το πρόγραμμα θα πρέπει να έχει τη δυνατότητα να εμφανίζει αποτελέσματα για πολλές διαφορετικές τιμές των ορισμάτων της συνάρτησης. Η εμφάνιση δεδομένων και αποτελεσμάτων θα γίνεται στη main() με την παρακάτω μορφή: Ποσό δανείου: 10000.00 Μηνιαίο επιτόκιο: 1% Πλήθος πληρωμών: 36 Μηνιαία πληρωμή: 332.14 Συνολικό ποσό πληρωμής: 11957.15 Συνολικός τόκος: 1957.15 ΑΣΚΗΣΗ 6 Να γραφεί μια συνάρτηση για τον υπολογισμό του n! και στη συνέχεια ένα πρόγραμμα που θα την χρησιμοποιεί για τον υπολογισμό του αθροίσματος : 2 3 e x = 1+ x+ x + x + 2! 3! με ακρίβεια 10-5. Η τιμή του x είναι τύπου double και εισάγεται με χρήση της scanf_s. Το μέγιστο επιτρεπόμενο πλήθος επαναλήψεων είναι 15. ΑΣΚΗΣΗ - 7 Το παρακάτω τμήμα κώδικα σε γλώσσα C βρίσκει αν ένας ακέραιος και θετικός αριθμός kk 2 είναι πρώτος (prime) αριθμός. i=2; flag=0; while ((i<=k/2) && (flag==0)) if (k%i==0) flag=1; i++; if (flag==0) printf("number %4d is prime \n",k); ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (ΓΛΩΣΣΑ C) ΑΚΑΔ. ΕΤΟΣ 2017-2018 2

Να μετατρέψετε το τμήμα αυτό σε μια συνάρτηση με όνομα is_prime, επιλέγοντας τον τύπο της συνάρτησης καθώς και τις τυπικές παραμέτρους. Στη συνέχεια να γραφεί ένα πρόγραμμα σε γλώσσα C που θα καλεί τη συνάρτηση και θα εμφανίζει στην οθόνη όλους τους πρώτους αριθμούς που είναι μικρότεροι μιας γνωστής μέγιστης τιμής max που ορίζεται μέσω μιας δήλωσης #define. ΑΣΚΗΣΗ - 8 Να επαναλάβετε την Άσκηση 7, τοποθετώντας τους πρώτους αριθμούς που θα βρείτε σε μονοδιάστατο πίνακα ακεραίων αριθμών. Το μέγεθος του πίνακα δεν είναι εξ αρχής γνωστό (υπόδειξη: να διαχειριστείτε τον πίνακα ως pointer) ΑΣΚΗΣΗ - 9 Οι Η.Α.Brothers και J.A. Κnox ανακάλυψαν ότι καθώς η τιμή του x γίνεται μεγαλύτερη, η τιμή της έκφρασης x 2x + 1 προσεγγίζει την τιμή του e. Να γράψετε μια συνάρτηση που θα υπολογίζει την τιμή της παραπάνω 2x 1 έκφρασης για μια τιμή του x μέχρις ότου η απόλυτη τιμή της διαφοράς μεταξύ της τιμής της έκφρασης και της συνάρτησης exp (ανήκει στην math.h) γίνει μικρότερη της τιμής 0.000001. Η συνάρτηση θα επιστρέφει την τιμή του x και θα καλείται κατάλληλα από τη main( ). ΑΣΚΗΣΗ - 10 Η τετραγωνική ρίζα ενός αριθμού N μπορεί να υπολογιστεί κατά προσέγγιση με επαναληπτική εφαρμογή του τύπου NG = 0.5 ( LG + N / LG) όπου NG είναι η επόμενη εκτίμηση για την τιμή της τετραγωνικής ρίζας και LG είναι η τελευταία υπολογισμένη εκτίμηση για την τιμή της τετραγωνικής ρίζας. Να γραφεί μια συνάρτηση για τον υπολογισμό της τετραγωνικής ρίζας με την παραπάνω μέθοδο. Η αρχική εκτίμηση θα είναι η αρχική τιμή για την LG. Το πρόγραμμα θα υπολογίζει μια τιμή για την NG. Η διαφορά μεταξύ NG και LG ελέγχεται για να διαπιστωθεί εάν αυτές οι δύο τιμές είναι ίδιες. Εάν είναι η αποδεκτή τιμή της ρίζας είναι η NG. Διαφορετικά, η NG γίνεται LG και η διαδικασία επαναλαμβάνεται μέχρις ότου η διαφορά μεταξύ NG και LG γίνει μικρότερη από 0.005. Να χρησιμοποιήσετε ως αρχική εκτίμηση την τιμή 1.00. Στη συνέχεια να γράψετε ένα πρόγραμμα σε γλώσσα C που θα καλεί τη συνάρτηση και θα εμφανίζει τα αποτελέσματα που επιστρέφει η συνάρτηση (ΥΠΟΔΕΙΞΗ : Να ελέγξετε το πρόγραμμά σας για τους αριθμούς 4, 0.25, 10000, 88, 127.5). ΑΣΚΗΣΗ - 11 Να γραφεί μια συνάρτηση alter(x,y) που θα αλλάζει την τιμή του x σε x+y και την τιμή του y σε x*y, όπου x,y είναι ορίσματα τύπου double. Η συνάρτηση θα καλείται από την main(). ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (ΓΛΩΣΣΑ C) ΑΚΑΔ. ΕΤΟΣ 2017-2018 3

ΑΣΚΗΣΗ - 12 Να γραφεί μια συνάρτηση με όνομα convert_to_polar που θα δέχεται ως είσοδο τις καρτεσιανές συντεταγμένες ενός σημείου x, y και θα επιστρέφει τις πολικές συντεταγμένες του r, θ. Οι πολικές συντεταγμένες υπολογίζονται σύμφωνα με τους τύπους : r P(x,y) 0 άξονας x xx = rrrrrrrrrr yy = rrrrrrrrrr θ Η συνάρτηση θα καλείται από τη main(). ΑΣΚΗΣΗ - 13 Να γραφεί μια συνάρτηση που θα υπολογίζει το εναλλασσόμενο άθροισμα των στοιχείων ενός μονοδιάστατου αριθμητικού πίνακα ακεραίων αριθμών. Π.χ. εάν ο πίνακας είναι 1 4 9 16 9 7 4 9 11 Τότε η συνάρτηση θα υπολογίζει και θα επιστρέφει το άθροισμα 1 4 + 9 16 + 9 7 + 4 9 + 11 = -2 Στη συνέχεια να γραφεί ένα πρόγραμμα σε γλώσσα C που θα καλεί τη συνάρτηση και θα εμφανίζει τα αποτελέσματα. ΑΣΚΗΣΗ - 14 Μια διαδρομή ορίζεται ως μια ακολουθία επαναλαμβανόμενων γειτονικών αριθμητικών τιμών. Να γραφεί μια συνάρτηση που θα βρίσκει και θα επιστρέφει το μήκος της μέγιστης διαδρομής σε ένα μονοδιάστατο αριθμητικό πίνακα ακεραίων αριθμών. Π.χ. η μέγιστη διαδρομή στον ακόλουθο πίνακα έχει μήκος 4. 2 5 3 3 4 6 7 7 7 7 9 8 9 2 3 4 4 4 Στη συνέχεια να γραφεί ένα πρόγραμμα σε γλώσσα C που θα καλεί τη συνάρτηση και θα εμφανίζει τα αποτελέσματα. ΑΣΚΗΣΗ - 15 Να γραφεί μια συνάρτηση με όνομα find_max που θα βρίσκει και θα επιστρέφει τους 2 μεγαλύτερους διαφορετικούς αριθμούς από μια σειρά ακεραίων αριθμών πλήθους n. Οι αριθμοί αυτοί αποτελούν τα στοιχεία ενός μονοδιάστατου πίνακα n θέσεων (η τιμή του n να οριστεί ως σταθερά). Στη συνέχεια να γραφεί ένα πρόγραμμα σε γλώσσα C που θα καλεί τη συνάρτηση και θα εμφανίζει τα αποτελέσματα. (ΥΠΟΔΕΙΞΗ : 1. Η εισαγωγή των τιμών στον πίνακα να γίνει με χρήση της rand( ). 2. Προσπαθήστε να βρείτε τους 2 μεγαλύτερους αριθμούς με μία μόνον επαναληπτική διαδικασία). ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (ΓΛΩΣΣΑ C) ΑΚΑΔ. ΕΤΟΣ 2017-2018 4

ΑΣΚΗΣΗ - 16 Να γραφεί μια συνάρτηση που θα δέχεται ως είσοδο έναν ακέραιο και θετικό αριθμό n, μεγαλύτερο ή ίσο του 2, και θα επιστρέφει, υπό μορφή πίνακα, όλους τους πρώτους αριθμούς που είναι μικρότεροι του n. Στη συνέχεια να γραφεί ένα πρόγραμμα σε γλώσσα C που θα καλεί τη συνάρτηση και θα εμφανίζει τα αποτελέσματα. ( ΥΠΟΔΕΙΞΗ : Μπορείτε να χρησιμοποιήσετε τη συνάρτηση is_prime ή το κόσκινο του Ερατοσθένη, σχετικά μπορούν να βρεθούν στο Διαδίκτυο π.χ. http://primes.utm.edu/glossary/xpage/sieveoferatosthenes.html ) ΑΣΚΗΣΗ - 17 Για καθένα από τα παρακάτω, να γράψετε μια απλή εντολή σε γλώσσα C που θα υλοποιεί την αντίστοιχη λειτουργία. Η συνάρτηση main( ) θα πρέπει να περιέχει τις κατάλληλες εντολές για την επαλήθευση αυτών των λειτουργιών, με τη σειρά που ακολουθεί. a. Δήλωση και αρχικοποίηση της next ως μεταβλητής τύπου χαρακτήρα με τιμή 'B'. b. Δήλωση και αρχικοποίηση της current ως μεταβλητής τύπου χαρακτήρα με τιμή 'y'. c. Δήλωση του ptr ώστε να είναι δείκτης σε αντικείμενα τύπου char. d. Εκχώρηση της διεύθυνσης της current στη μεταβλητή ptr. e. Αλλαγή της τιμής του αντικειμένου στο οποίο δείχνει ο ptr σε '0'. f. Εκχώρηση της διεύθυνσης της next στη μεταβλητή ptr. g. Αλλαγή της τιμής της μεταβλητής στην οποία δείχνει ο ptr σε 'd'. h. Εμφάνιση της διεύθυνσης που είναι αποθηκευμένη στην ptr. i. Ποιες τιμές είναι αποθηκευμένες στις next και current? ΑΣΚΗΣΗ - 18 Δίνονται οι παρακάτω δηλώσεις: int x=0; int y=0; int *myptr=null; int *otherptr=null; Να βρείτε τις τιμές των myptr, otherptr, x, και y, μετά από κάθε μια από τις παρακάτω γραμμές κώδικα σε γλώσσα C : 1. myptr=&x; 2. otherptr=&y; 3. *myptr=4; 4. *otherptr=*myptr; 5. x=5; 6. otherptr=myptr; 7. *otherptr=6; Για την εμφάνιση των τιμών πρέπει να χρησιμοποιήσετε την εντολή printf στη main(). ΑΣΚΗΣΗ - 19 Τι πιστεύετε ότι θα γίνει αν εκτελέσετε το ακόλουθο πρόγραμμα και γιατί; void main() double trouble = 3.27; double *pt; *pt = 27.3; pt = &trouble; ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (ΓΛΩΣΣΑ C) ΑΚΑΔ. ΕΤΟΣ 2017-2018 5

ΑΣΚΗΣΗ - 20 Τι πιστεύετε ότι θα γίνει αν εκτελέσετε το ακόλουθο πρόγραμμα και γιατί; void main() int i, *k; *k = 4; k = &i; ΑΣΚΗΣΗ - 21 Να βρεθεί και να δικαιολογηθεί το αποτέλεσμα που θα επιστρέψει η παρακάτω συνάρτηση : int identical() int a[3] = 6, 3, 7; int *p = &a[0]; if (a[0] == p[0] && a[1] == p[1] && a[2] == p[2]) return 1; else return 0; ΑΣΚΗΣΗ - 22 Να βρεθούν και να δικαιολογηθούν τα αποτελέσματα του παρακάτω προγράμματος : #include <stdio.h> void div_and_sub(int *number); void sub_and_div(int number); void main() int k = 29; int *ptr = &k; div_and_sub(ptr); sub_and_div(*ptr); div_and_sub(&k); printf("the value of k is %d\n", k); printf("the value of k is %d\n", k); printf("the value of k is %d\n", k); void div_and_sub(int *number) *number = *number/3; *number-=1; printf("in FUNCTION DIV number =%d\n",*number); void sub_and_div(int number) number+=3; number=number/2; printf("in function sub number =%d\n",number); ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (ΓΛΩΣΣΑ C) ΑΚΑΔ. ΕΤΟΣ 2017-2018 6

ΑΣΚΗΣΗ - 23 Να βρεθούν και να δικαιολογηθούν τα αποτελέσματα του παρακάτω προγράμματος : #include <stdio.h> void half_and_add(int *number); void add_and_half(int number); void main() int i = 27; int *ptr = &i; half_and_add(ptr); printf("the value of i is %d\n", i); half_and_add(&i); printf("the value of i is %d\n", i); add_and_half(i); printf("the value of i is %d\n", i); void half_and_add(int *number) *number = *number/2; *number+=2; printf("in FUNCTION HALF number =%d\n",*number); void add_and_half(int number) number+=2; number=number/2; printf("in function add number =%d\n",number); ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (ΓΛΩΣΣΑ C) ΑΚΑΔ. ΕΤΟΣ 2017-2018 7