16
300+x ασκήσεις για το μάθημα «Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον» ΓΛυκείου - Τεχνολογική Κατεύθυνση Φώτης Λαζαρίνης www.lazarinis.gr Ασκήσεις και διαγωνίσματα για ολοκληρωμένη επανάληψη

300 + x Ασκήσεις ΑΕΠΠ Γ ΛΥΚΕΙΟΥ

Embed Size (px)

DESCRIPTION

300 + x Ασκήσεις Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Γ ΛΥΚΕΙΟΥ

Citation preview

300+x ασκήσεις για το μάθημα «Ανάπτυξη Εφαρμογών σε Προγραμματιστικό

Περιβάλλον»

Γ’ Λυκείου - Τεχνολογική Κατεύθυνση

Φώτης Λαζαρίνης

www.lazarinis.gr

Ασκήσεις και διαγωνίσματα

για ολοκληρωμένη επανάληψη

Περιεχόμενα

Σημείωμα προς μαθητές και εκπαιδευτικούς .......................................................... 4

A. Βασικές Έννοιες Αλγορίθμων (κεφ. 2 σχολικού βιβλίου)................................... 5 Βασικές κατηγορίες ασκήσεων ............................................................................. 6 Λυμένες ασκήσεις ................................................................................................. 8 Επιλεγμένα θέματα Πανελληνίων & σχολικού βιβλίου....................................... 55 Ασκήσεις για επίλυση ......................................................................................... 78 Επαναληπτικό διαγώνισμα................................................................................... 85

Β. Δομές Δεδομένων (κεφ. 3 σχολικού βιβλίου) .................................................... 87 Βασικές κατηγορίες ασκήσεων ........................................................................... 88 Λυμένες ασκήσεις ............................................................................................... 90 Επιλεγμένα θέματα Πανελληνίων & σχολικού βιβλίου..................................... 136 Ασκήσεις για επίλυση ....................................................................................... 173 Επαναληπτικό διαγώνισμα................................................................................. 177

Γ. Προγράμματα (κεφ. 7 - 9 σχολικού βιβλίου)................................................... 179 Βασικές κατηγορίες ασκήσεων ......................................................................... 180 Λυμένες ασκήσεις ............................................................................................. 181 Επιλεγμένα θέματα Πανελληνίων & σχολικού βιβλίου..................................... 195 Ασκήσεις για επίλυση ....................................................................................... 208 Επαναληπτικό τεστ ........................................................................................... 210

Δ. Υποπρογράμματα (κεφ. 10 σχολικού βιβλίου) ................................................ 211 Βασικές κατηγορίες ασκήσεων ......................................................................... 212 Λυμένες ασκήσεις ............................................................................................. 213 Επιλεγμένα θέματα Πανελληνίων & σχολικού βιβλίου..................................... 241 Ασκήσεις για επίλυση ....................................................................................... 258 Επαναληπτικό διαγώνισμα................................................................................. 262

Επαναληπτικά κριτήρια αξιολόγησης ................................................................ 265 Α Επαναληπτικό διαγώνισμα ............................................................................ 265 Β Επαναληπτικό διαγώνισμα ............................................................................ 268 Γ Επαναληπτικό διαγώνισμα ............................................................................ 271

Απαντήσεις - υποδείξεις ...................................................................................... 274

Σημείωμα προς μαθητές και εκπαιδευτικούς

Αγαπητέ μαθητή και αγαπητέ συνάδελφε,

Το παρόν βιβλίο περιέχει περισσότερες από 300 ασκήσεις της μορφής και δυ-

σκολίας των Πανελληνίων εξετάσεων. Περιέχει επίσης και επαναληπτικά δια-

γωνίσματα στο τέλος κάθε κεφαλαίου, αλλά και κριτήρια αξιολόγησης σε όλη

την ύλη. Στο τέλος του βιβλίου υπάρχουν αναλυτικές λύσεις και υποδείξεις των

ασκήσεων προς επίλυση και των διαγωνισμάτων.

Κάθε κεφάλαιο αποτελείται από τα εξής τμήματα:

Βασικές κατηγορίες ασκήσεων

Λυμένες ασκήσεις

Επιλεγμένα θέματα Πανελληνίων & σχολικού βιβλίου

Θέματα προς επίλυση

Επαναληπτικό διαγώνισμα

Έγινε προσπάθεια ώστε οι λυμένες ασκήσεις να περιέχουν πολλά και διαφο-

ρετικά ερωτήματα, ώστε ο μαθητής να αντιμετωπίσει με επιτυχία τα αντίστοιχα

θέματα των εξετάσεων. Τα επιλεγμένα θέματα των προηγουμένων ετών περιέ-

χουν αντιπροσωπευτικές ασκήσεις από τις εξετάσεις των ετών 2000 ως 2010,

για να εξοικειωθεί ο μαθητής με τη μορφή των θεμάτων. Τα επαναληπτικά δια-

γωνίσματα και οι ασκήσεις προς επίλυση θα βοηθήσουν τους μαθητές να ισχυ-

ροποιήσουν την ικανότητα επίλυσης ασκήσεων.

Το βιβλίο μπορεί να χρησιμοποιηθεί για επανάληψη στο τέλος κάθε κεφα-

λαίου ή για επανάληψη στο τέλος της σχολικής χρονιάς. Σε περίπτωση που δεν

υπάρχει αρκετός χρόνος, καλό θα είναι να μελετηθούν οι λυμένες ασκήσεις και

τα επιλεγμένα θέματα των εξετάσεων των προηγουμένων ετών.

Φώτης Ελ. Λαζαρίνης

Καθηγητής Πληροφορικής

5

g1yah

Βασικές κατηγορίες ασκήσεων Λυμένες ασκήσεις

Επιλεγμένα θέματα Πανελληνίων & σχολικού βιβλίου

Ασκήσεις προς επίλυση Επαναληπτικό διαγώνισμα

Δομές Δεδομένων

(Κεφάλαιο 3 σχολικού βιβλίου)

87

Δομές Δεδομένων 88

∆ΟΜΕΣ ∆Ε∆ΟΜΕΝΩΝ

ΒΑΣΙΚΕΣ ΚΑΤΗΓΟΡΙΕΣ ΑΣΚΗΣΕΩΝ Το τρίτο κεφάλαιο του σχολικού βιβλίου πραγματεύεται το θέμα των δομών δεδομένων (πίνα-κες, στοίβες, ουρές). Περιέχει θεωρητικά θέματα και ασκήσεις που αφορούν κυρίως στη χρήση των δομών δεδομένων τύπου πίνακα. Τα θέματα που ζητούνται στις Πανελλήνιες εξετάσεις ποικίλουν από θεωρητικά θέματα, όπως ποιες είναι οι πράξεις επί των δομών δεδομένων, μέχρι σύνθετες ασκήσεις με χρήση πινάκων.

Στην παρακάτω λίστα συγκεντρώνονται τα κυριότερα θέματα που ζητούνται στις Πανελλή-νιες εξετάσεις. Στην επόμενη ενότητα επιλύονται αρκετά παραδείγματα από κάθε περίπτωση, ώστε ο μαθητής να ισχυροποιήσει την ικανότητα επίλυσης διαφορετικών περιπτώσεων ασκή-σεων. Ασκήσεις μετατροπών μεταξύ εναλλακτικών τρόπων αναπαράστασης αλγορίθμων και αλ-

γοριθμικών δομών (π.χ. θέματα 1, 20). Ασκήσεις σύντομης απάντησης σχετικές με τη διαχείριση στοιχείων στις δομές δεδομένων

στοίβα ή ουρά (π.χ. θέμα 8). Διόρθωση γνωστών αλγορίθμων (π.χ. θέμα 10). Ασκήσεις τύπου "τι εμφανίζει" έχοντας ως δεδομένο κάποιον πίνακα ή εξήγηση του αποτε-

λέσματος ενός αλγορίθμου που επεξεργάζεται πίνακα (π.χ. θέματα 1, 2, 6). Ασκήσεις συμπλήρωσης κενών σε εντολές που επεξεργάζονται πίνακες ή ασκήσεις απόδο-

σης συγκεκριμένων τιμών σε πίνακα (π.χ. θέματα 3, 4, 5). Εκτέλεση γνωστών αλγορίθμων με είσοδο συγκεκριμένα δεδομένα (π.χ. θέματα 6, 9). Ασκήσεις που επιλύονται με χρήση μονοδιάστατων πινάκων. Οι ασκήσεις συνήθως ζητούν: Υπολογισμό αθροισμάτων, πληθών, ποσοστών, μέσων όρων, ελαχίστου και μεγίστου (βλ. άσκηση 11/ερώτημα γ, άσκηση 12/ερώτημα α). Έλεγχος αν ένας ή περισσότεροι πίνακες έχουν μία ιδιότητα. Δηλαδή αν όλα τα στοιχεία τους πληρούν μία ή περισσότερες συνθήκες (βλ. άσκηση 7). Ταξινόμηση πίνακα ή πινάκων με βάση κάποιο κριτήριο. Η άσκηση θα ζητά την ταξινό-μηση σε φθίνουσα ή αύξουσα σειρά ή θα ζητά την εμφάνιση των μικρότερων αριθμών από ένα σύνολο αριθμών (βλ. άσκηση 12/ερώτημα γ). Σειριακή αναζήτηση σε πίνακα με βάση κάποια δεδομένα εισόδου. Η άσκηση θα ζητά, έ-πειτα από το διάβασμα των αρχικών πινάκων, να διαβαστούν μία ή περισσότερες τιμές και να ελεγχθεί αν υπάρχουν ή όχι στους πίνακες εισόδου (βλ. άσκηση 11/ερώτημα δ, άσκη-ση12/ερώτημα α). Επεξεργασία στοιχείων του πίνακα μέχρι να ικανοποιηθεί κάποιο κριτήριο. Συνεπώς δεν απαιτείται η επεξεργασία όλων των στοιχείων του πίνακα και η άσκηση επιλύεται είτε με Όσο … επανάλαβε είτε με Αρχή_επανάληψης … Μέχρις_ότου (βλ. άσκηση 13). Ειδικές ασκήσεις που απαιτούν τη μετατροπή πινάκων από μια μορφή σε μια άλλη. π.χ. μονοδιάστατο σε δισδιάστατο (βλ. άσκηση 14). Δημιουργία νέων πινάκων με βάση τα δεδομένα εισόδου, π.χ. έχοντας το εισόδημα 100 ατόμων να υπολογιστεί σε νέο πίνακα ο φόρος που αναλογεί (βλ. άσκηση 15, άσκηση

89

16/ερώτημα α). Διάβασμα ενός αριθμού που αντιστοιχεί σε μια θέση του πίνακα και επεξεργασία των α-ντίστοιχων στοιχείων (βλ. άσκηση 11/ερώτημα α). Επεξεργασία κάποιων στοιχείων ενός πίνακα με βάση κάποια δεδομένα εισόδου, π.χ. να διαβαστούν τα στοιχεία πέντε πελατών από τους 100 υπάρχοντες και να υπολογιστεί το κόστος των αγορών τους (βλ. άσκηση 13/ερώτημα β1).

Ασκήσεις που επιλύονται με χρήση δισδιάστατων πινάκων, αλλά και με συνδυασμό μονο-διάστατων και δισδιάστατων πινάκων. Οι ασκήσεις συνήθως ζητούν: Υπολογισμό αθροισμάτων, πληθών, ποσοστών, μέσων όρων, ελαχίστου και μεγίστου σε ολόκληρο τον πίνακα (βλ. άσκηση 17). Υπολογισμό αθροισμάτων, πληθών, ποσοστών, μέσων όρων, ελαχίστου και μεγίστου γραμμών ή στηλών (π.χ. MO[i] ή max[j]). Σε αυτή την περίπτωση καταλήγουμε σε μονο-διάστατο πίνακα και μπορεί να ζητηθεί η περαιτέρω επεξεργασία των μονοδιάστατων πι-νάκων. Για παράδειγμα, μπορεί να ζητηθεί να ταξινομηθεί ο μονοδιάστατος πίνακας (βλ. άσκηση 17, βλ. άσκηση 21/ερώτημα β). Υπολογισμό αθροισμάτων, πληθών, ποσοστών, μέσων όρων, ελαχίστου και μεγίστου μιας γραμμής ή μιας στήλης (βλ. άσκηση 19/ερώτημα β και γ). Εμφάνιση των αριθμών γραμμής (i) ή στήλης (j) των γραμμών ή στηλών που πληρούν κά-ποια ιδιότητα, π.χ. έχουν το μεγαλύτερο άθροισμα (βλ. άσκηση 17/ερώτημα ε). Επεξεργασία κάποιου τμήματος ενός δισδιάστατου πίνακα, π.χ. των πρώτων 10 γραμμών και 5 στηλών ενός πίνακα (βλ. άσκηση 19/ερώτημα δ). Υπολογισμός του πλήθους των γραμμών που εμφανίζεται κάποια τιμή, π.χ. σε πόσες γραμμές υπάρχει ο αριθμός 0. Προσοχή χρειάζεται σε αυτή την περίπτωση, διότι το πλή-θος κατά γραμμή (πλ[i] ή row[i]) δεν υπολογίζει σε πόσες γραμμές υπάρχει μια τιμή, αλλά πόσες φορές υπάρχει σε κάθε γραμμή κάποια τιμή (βλ. άσκηση 19/ερώτημα ε). Χρήση πίνακα που η μία διάσταση εξαρτάται από τις τιμές που υπάρχει σε έναν μονοδιά-στατο πίνακα, π.χ. επεξεργασία στηλών Για j από 1 μέχρι Κ[i], όπου Κ[i] πίνακας που πε-ριέχει ακέραιους και θετικούς αριθμούς και συνδέεται με τον διπλό πίνακα με κάποιο τρό-πο που περιγράφει η άσκηση (βλ. άσκηση 34). Δημιουργία νέων πινάκων με βάση τα δεδομένα εισόδου. π.χ. έχοντας το χρόνο τηλεφω-νημάτων 100 πελατών για κάθε μήνα ενός έτους, να υπολογιστεί σε νέο πίνακα το κόστος ανά μήνα για κάθε πελάτη (βλ. άσκηση 21/ερώτημα α) Επεξεργασία συγκεκριμένων γραμμών ή στηλών, όπου ο αριθμός γραμμής (i) ή στήλης (j) δίνεται ως είσοδος στον αλγόριθμο (βλ. άσκηση 24/ερώτημα δ, άσκηση 27/ερώτημα ζ). Επεξεργασία των στοιχείων των γραμμών ή των στηλών με Όσο … επανάλαβε ή Αρ-χή_επανάληψης … Μέχρις_ότου. Δηλ. επεξεργασία των στοιχείων μέχρι να ικανοποιηθεί κάποιο κριτήριο, π.χ. επεξεργασία κάθε γραμμής μέχρι να βρεθεί κάποια τιμή (βλ. άσκηση 25/ερώτημα β). Αρχικοποίηση των τιμών ενός πίνακα και γέμισμα συγκεκριμένων θέσεων με τιμές που διαβάζονται (βλ. άσκηση 31/ερώτημα β και γ). Υπολογισμός συγκεντρωτικών στοιχείων για κάποια από τα στοιχεία ενός πίνακα (βλ. ά-σκηση 30/ερώτημα γ). Ταξινόμηση μια γραμμής ή μιας στήλης ενός δισδιάστατου πίνακα (βλ. άσκηση 18).

Δομές Δεδομένων 90

∆ΟΜΕΣ ∆Ε∆ΟΜΕΝΩΝ

ΛΥΜΕΝΕΣ ΑΣΚΗΣΕΙΣ Στην ενότητα αυτή παρουσιάζονται λυμένες ασκήσεις που εμπίπτουν στις κατηγορίες ασκήσε-ων που αναφέρθηκαν πιο πάνω. Αρχικά παρουσιάζονται θέματα σύντομης απάντησης, ενώ τα υπόλοιπα θέματα ζητούν ολοκληρωμένους αλγορίθμους που επιλύονται με χρήση πινάκων δι-αφορετικής διάστασης.

1. Δίνεται πίνακας Χ με 6 στοιχεία: 5, 12, 30, -5, 8, 10 και το ακόλουθο τμήμα αλγορίθμου που χρησιμοποιεί τον πίνακα Χ. sum ← 0 Για i από 1 μέχρι 6 Αν X[i] mod 2 = 0 τότε Aν X[i] mod 3 = 0 τότε Εμφάνισε X[i +1] Αλλιώς Εμφάνισε X[i] Τέλος_αν Αλλιώς Εμφάνισε i, X[i] sum ← sum + X[i] Τέλος_αν Τέλος_επανάληψης Εμφάνισε sum α) Τι εμφανίζει το παραπάνω τμήμα αλγορίθμου και ποιο άθροισμα υπολογίζει; β) Να γίνει το διάγραμμα ροής του τμήματος αλγορίθμου.

Απάντηση

α) Αρχικά το sum γίνεται 0 και η επανάληψη αρχίζει με το i να έχει την τιμή 1. Επειδή το X[1] ισούται με 5, δεν ισχύει το Αν X[i] mod 2 = 0 τότε, οπότε θα εμφανιστεί το i, X[i], δηλ. 1, 5. Επίσης το sum γίνεται 5. Έπειτα το i γίνεται 2 και το X[2] ισούται με 12 και συ-νεπώς ισχύει η πρώτη συνθήκη (X[2] mod 2 = 0) αλλά και η δεύτερη X[2] mod 3 = 0. Συνεπώς εμφανίζεται το X[2 + 1], δηλ. 30. Εκτελώντας την επανάληψη 6 φορές, εμφανίζονται οι τιμές που φαίνονται στον διπλανό πίνακα.

Τελικός συμπληρωμένος πίνακας τιμών

i sum Εμφανίζεται 0 1 5 1, 5 2 30 3 -5 4 0 4, -5 5 8 6 10 0

Ο αλγόριθμος υπολογίζει το άθροισμα των περιττών τιμών του πίνακα. Το τελικό άθροι-σμα ισούται με μηδέν, διότι ισούται με Χ[1]+X[4] = 5 + (-5) = 0.

91

β) Για να γίνει το διάγραμμα ροής του Για … από … μέχρι πρέπει να μετατραπεί σε Όσο … επανάλαβε όπως είδαμε στην άσκηση 35 του προηγούμενου κεφαλαίου.

2. Εξηγήστε τι κάνει το ακόλουθο τμήμα αλγορίθμου: Αλγόριθμος Ασκ Για i από 1 μέχρι 1000 Π[i] ← i Τέλος_επανάληψης Τέλος Ασκ

Απάντηση

Ο αλγόριθμος θέτει την τιμή του μετρητή σε κάθε στοιχείο του πίνακα. Στο Π[1] θέτει την τιμή 1, στο Π[2] την τιμή 2, … στο Π[1000] την τιμή 1000.

3. Δίνεται ο πίνακας Π:

5 8 12 0 32 12 8 9 και οι εντολές: 1. Εμφάνισε Π[….] 2. Εμφάνισε Π[1 + …] 3. Εμφάνισε Π[… - 2] 4. … ← Π[2] + … 5. Π[…] ← Π[…] + … 6. Π[8] ← … 7. Π[7] ← Π[1] + …

i <= 6 Ψ

Εμφάνισε sum

sum ← 0 i ← 1

X[i] mod 2 = 0Ψ

Α Ψ Α

Εμφάνισε X[i+1] Εμφάνισε X[i]

X[i] mod 3 = 0

i ← i + 1

Εμφάνισε i, X[i]

sum ← sum + X[i]

A

Α

Δομές Δεδομένων 104

Πάγιο 15 € Χρόνος τηλεφωνημάτων

(δευτερόλεπτα) Χρονοχρέωση

(ευρώ/δευτερόλεπτο) 0-500 0,005

501-1000 0,004 1001 και άνω 0,003

Η χρονοχρέωση είναι κλιμακωτή. Να αναπτύξετε αλγόριθμο ο οποίος: α) να διαβάζει τη χρονική διάρκεια των τηλεφωνημάτων κάθε συνδρομητή της εται-ρείας για τον τελευταίο μήνα κάνοντας έλεγχο ότι τα δευτερόλεπτα εισόδου είναι με-γαλύτερα ή ίσα από μηδέν. β) να υπολογίζει και εμφανίζει τη μηνιαία χρέωση κάθε συνδρομητή ταξινομημένη σε φθίνουσα σειρά. γ) να υπολογίζει και εμφανίζει το σύνολο των εσόδων της εταιρείας. δ) να υπολογίζει το ποσοστό των συνδρομητών που είχαν μηδενικό χρόνο ομιλίας. Η εταιρεία για τη διάρκεια υπολογισμού των εσόδων είχε 300000 συνδρομητές.

Απάντηση

Αλγόριθμος Ασκ Για i από 1 μέχρι 300000 ! ερώτημα α Αρχή_επανάληψης Διάβασε ΧΡ[i] Μέχρις_ότου ΧΡ[i] >= 0 Τέλος_επανάληψης Για i από 1 μέχρι 300000 ! ερώτημα β Αν ΧΡ[i] <= 500 τότε

Π[i] ← ΧΡ[i]*0.005 + 15 Αλλιώς_αν ΧΡ[i] <= 800 τότε

Π[i] ← 500*0.005 + (ΧΡ[i]-500)*0.004 + 15 Αλλιώς

Π[i] ← 500*0.005 + 500*0.004 + (ΧΡ[i]-1000)*0.003 + 15 Τέλος_αν Τέλος_επανάληψης Για i από 2 μέχρι 300000 Για j από 300000 μέχρι i με_βήμα -1 Αν Π[j-1] < Π[j] τότε Αντιμετάθεσε Π[j-1], Π[j] Αντιμετάθεσε ΧΡ[j-1], ΧΡ[j] Τέλος_αν Τέλος_επανάληψης Τέλος_επανάληψης

119

26. Ένα επιστημονικό περιοδικό δέχεται γραπτές εργασίες που τις υποβάλλουν επιστήμο-νες προς κρίση. Κάθε εργασία ελέγχεται από τρεις κριτές που αξιολογούν την εργασία και τη βαθμολογούν με έναν ακέραιο βαθμό από -1 ως και 5. Τελικά στο περιοδικό γί-νονται δεκτές οι εργασίες που έχουν μέσο όρο βαθμολογίας τουλάχιστον 3, αλλά δεν έχουν αρνητική βαθμολογία από κανέναν κριτή. α) Να γραφεί αλγόριθμος που θα διαβάζει τον αλφαριθμητικό κωδικό καθεμίας από τις 30 εργασίες που υποβλήθηκαν για κρίση στο περιοδικό. β) Θα διαβάζει σε έναν πίνακα τις βαθμολογίες κάθε εργασίας από τους τρεις κριτές με έλεγχο ώστε να είναι ακέραιος αριθμός μεταξύ -1 και 5. γ) Θα εμφανίζει σε φθίνουσα σειρά μέσου όρου βαθμολογίας μόνο τους κωδικούς των εργασιών που τελικά γίνονται δεκτές. Δίπλα από κάθε δεκτή εργασία θα εμφανίζεται ένας από τους χαρακτηρισμούς "Άμε-σα δεκτή", "Απαιτούνται μικρές αλλαγές", "Απαιτούνται μεγάλες αλλαγές" ανάλογα με τον αν για το μέσο όρο βαθμολογίας ισχύει αντίστοιχα 4.6 ≤ ΜΟ, 3.8 ≤ ΜΟ < 4.6 και 3 ≤ ΜΟ < 3.8.

Απάντηση

Αφού διαβαστούν τα δεδομένα πρέπει να υπολογιστεί ο μέσος όρος ανά γραμμή και έπειτα να γίνει ταξινόμηση του πίνακα των μέσων όρων σε φθίνουσα σειρά. Ταυτόχρονα πρέπει να αντι-μεταθέσουμε τους πίνακες των κωδικών και τα στοιχεία κάθε γραμμής του δισδιάστατου πίνα-κα. Έπειτα πρέπει να εμφανίσουμε μόνο τα στοιχεία των εργασιών που έχουν MO[i] >= 3 και Β[i, 1] >= 0 και B[i, 2] >= 0 και B[i, 3] >= 0.

Αλγόριθμος Ασκ Για i από 1 μέχρι 30 Διάβασε Κ[i] Για j από 1 μέχρι 3 Αρχή_επανάληψης Διάβασε Β[i, j] Μέχρις_ότου B[i, j] = A_M(B[i, j]) και B[i, j] >= -1 και B[i, j] <=5 Τέλος_επανάληψης Τέλος_επανάληψης Για i από 1 μέχρι 30 ! υπολογισμός μέσου όρου sum[i] ← 0 Τέλος_επανάληψης Για i από 1 μέχρι 30 Για j από 1 μέχρι 3 sum[i] ← sum[i] + B[i, j] Τέλος_επανάληψης Τέλος_επανάληψης Για i από 1 μέχρι 30 ΜΟ[i] ← sum[i]/3 Τέλος_επανάληψης

Δομές Δεδομένων 120

Για i από 2 μέχρι 30 ! ταξινόμηση Για j από 30 μέχρι i με_βήμα -1 Αν ΜΟ[j-1] < ΜΟ[j] τότε Αντιμετάθεσε ΜΟ[j-1], ΜΟ[j] Αντιμετάθεσε Κ[j-1], Κ[j] Αντιμετάθεσε Β[j-1, 1], Β[j, 1] Αντιμετάθεσε Β[j-1, 2], Β[j, 2] Αντιμετάθεσε Β[j-1, 3], Β[j, 3] Τέλος_αν Τέλος_επανάληψης Τέλος_επανάληψης Για i από 1 μέχρι 30 ! εμφάνιση δεκτών εργασιών Αν MO[i] >= 3 και Β[i, 1] >= 0 και B[i, 2] >= 0 και B[i, 3] >= 0 τότε Εμφάνισε Κ[i] Αν MO[i] < 3.8 τότε Εμφάνισε "Απαιτούνται μεγάλες αλλαγές" Αλλιώς_αν MO[i] < 4.6 τότε Εμφάνισε "Απαιτούνται μικρές αλλαγές" Αλλιώς Εμφάνισε "Άμεσα δεκτή" Τέλος_αν Τέλος_αν Τέλος_επανάληψης Τέλος Ασκ

27. Για τις κυριακάτικες εφημερίδες καταγράφονται οι πωλήσεις τους και κάθε Κυριακή παρουσιάζονται οι πωλήσεις των δύο προηγουμένων Κυριακών. Με τη βοήθεια αλ-γορίθμου να υλοποιηθούν τα ακόλουθα: α) Να διαβαστούν σε πίνακα Τ[20] οι τίτλοι των κυριακάτικων εφημερίδων με Πα-νελλαδικές πωλήσεις. β) Να διαβαστούν σε πίνακα Π[20, 2] οι πωλήσεις των δύο πρώτων Κυριακών του τρέχοντος μήνα. Στην πρώτη στήλη του πίνακα διαβάζονται οι πωλήσεις της πρώτης Κυριακής του μήνα. Δεκτές γίνονται μόνο οι τιμές που είναι μεγαλύτερες από 0. γ) Να εμφανιστεί ο τίτλος κάθε εφημερίδας και οι πωλήσεις την πρώτη Κυριακή του μήνα. δ) Να διαβάζεται ο τίτλος μιας εφημερίδας, θεωρώντας ότι η εφημερίδα είναι υπαρ-κτή και να εμφανίζεται η διαφορά πωλήσεων των δύο Κυριακών (δεύτερη Κυριακή – πρώτη Κυριακή). ε) Να εμφανίζεται για κάθε εφημερίδα ο μέσος όρος πωλήσεών δεκαπενθημέρου, μαζί με τον τίτλο της. ζ) Να διαβάζεται ο αριθμός 1 ή 2 που αντιστοιχεί στην πρώτη ή τη δεύτερη Κυριακή. Για κάθε εφημερίδα να εμφανίζεται το ποσοστό (%) πωλήσεών της, για την Κυριακή που αντιστοιχεί στον αριθμό εισόδου, σε σχέση με τις συνολικές πωλήσεις όλων των εφημερίδων τη συγκεκριμένη ημέρα. Επίσης να εμφανίζεται ο αριθμός εφημερίδας.

121

Απάντηση

Για το γ ερώτημα πρέπει να εμφανίσουμε τον πίνακα Τ και την 1η στήλη του πίνακα Π, δηλ. να εμφανιστούν τα στοιχεία Τ[i], Π[i, 1]. Στο δ ερώτημα απαιτείται η εμφάνιση της διαφοράς Π[i, 2] - Π[i, 1] για την εφημερίδα που διαβάστηκε ο τίτλος. Για το ε ερώτημα πρέπει να υπολογιστεί το άθροισμα κάθε γραμμής και έπειτα το MO[i]. Για το ζ ερώτημα πρέπει να διαβαστεί ο αριθμός Κυριακής που ουσιαστικά είναι ο αριθμός στήλης j. Έπειτα πρέπει να υπολογιστεί το συνολικό άθροισμα πωλήσεων της συγκεκριμένης στήλης του πίνακα. Τελικά το ποσοστό υπολογίζεται ως Π[i, j]*100/αθρ. Δηλ. οι πωλήσεις κά-θε εφημερίδας (για κάθε i και με βάση το j εισόδου) διαιρούνται δια το σύνολο των πωλήσεων της συγκεκριμένης Κυριακής και πολλαπλασιάζονται x 100 για να υπολογιστεί το ποσοστό.

Αλγόριθμος Ασκ Για i από 1 μέχρι 20 ! ερώτημα α και β Διάβασε Τ[i] Για j από 1 μέχρι 2 Αρχή_επανάληψης Διάβασε Π[i, j] Μέχρις_ότου Π[i, j] > 0 Τέλος_επανάληψης Τέλος_επανάληψης Για i από 1 μέχρι 20 ! ερώτημα γ Εμφάνισε Τ[i], Π[i, 1] Τέλος_επανάληψης Διάβασε τιτλ ! ερώτημα δ flag ← Ψευδής i ← 1 Όσο i <= 20 και flag = Ψευδής επανάλαβε Αν Τ[i] = τιτλ τότε flag ← Αληθής Εμφάνισε Π[i, 2] - Π[i, 1] Τέλος_αν i ← i + 1 Τέλος_επανάληψης Για i από 1 μέχρι 20 ! ερώτημα ε sum[i] ← 0 Για j από 1 μέχρι 2 sum[i] ← sum[i] + Π[i, j] Τέλος_επανάληψης

167

Τέλος_επανάληψης Α1 ← 0 ! Δ3 α και β ερώτημα Α2 ← 0 Για i από 1 μέχρι 158 Αν ΦΥΛΟ[i] = "Α" τότε Α1 ← Α1 + SUM[i] Αλλιώς Α2 ← Α2 + SUM[i] Τέλος_αν Τέλος_επανάληψης Αν Α1 > Α2 τότε Εμφάνισε "Οι άνδρες δανείστηκαν περισσότερα βιβλία" Αλλιώς_αν Α1 < Α2 τότε Εμφάνισε "Οι γυναίκες δανείστηκαν περισσότερα βιβλία" Αλλιώς Εμφάνισε "ΙΣΟΣ ΑΡΙΘΜΟΣ ΒΙΒΛΙΩΝ" Τέλος_αν Διάβασε ΕΠ ! Δ4 ερώτημα flag ← Ψευδής i ← 1 Όσο i <= 158 και flag = Ψευδής επανάλαβε Αν ΜΕΛΗ[i] = ΕΠ τότε flag ← Αληθής Εμφάνισε SUM[i] Τέλος_αν i ← i + 1 Τέλος_επανάληψης Αν flag = Ψευδής τότε Εμφάνισε "ΤΟ ΕΠΩΝΥΜΟ ΑΥΤΟ ΔΕΝ ΥΠΑΡΧΕΙ" Τέλος_αν Τέλος Ασκ

61. Σε κάποιο σχολικό αγώνα, για το άθλημα «Άλμα εις μήκος» καταγράφεται για κάθε αθλητή η καλύτερη έγκυρη επίδοσή του. Τιμής ένεκεν, πρώτος αγωνίζεται ο περσινός πρωταθλητής. Η Επιτροπή του αγώνα διαχειρίζεται τα στοιχεία των αθλητών που αγωνίστηκαν. Να γράψετε αλγόριθμο ο οποίος: Γ1. Να ζητάει το ρεκόρ αγώνων και να το δέχεται, εφόσον είναι θετικό και μικρότερο των 10 μέτρων. Γ2. Να ζητάει τον συνολικό αριθμό των αγωνιζομένων και για κάθε αθλητή το όνομα και την επίδοσή του σε μέτρα με τη σειρά που αγωνίστηκε. Γ3. Να εμφανίζει το όνομα του αθλητή με τη χειρότερη επίδοση. Γ4. Να εμφανίζει τα ονόματα των αθλητών που κατέρριψαν το ρεκόρ αγώνων. Αν δεν υπάρ-χουν τέτοιοι αθλητές, να εμφανίζει το πλήθος των αθλητών που πλησίασαν το ρεκόρ αγώνων

Δομές Δεδομένων 168

σε απόσταση όχι μεγαλύτερη των 50 εκατοστών. Γ5. Να βρίσκει και να εμφανίζει τη θέση που κατέλαβε στην τελική κατάταξη ο περσινός πρω-ταθλητής. Σημείωση: Να θεωρήσετε ότι κάθε αθλητής έχει έγκυρη επίδοση και ότι όλες οι επιδόσεις των αθλητών που καταγράφονται είναι διαφορετικές μεταξύ τους.

(Ημερ. Λύκεια 2010 – Θέμα Γ)

Απάντηση

Αλγόριθμος Ασκ Αρχή_επανάληψης Διάβασε Ρ ! Ρεκόρ Μέχρις_ότου Ρ > 0 και Ρ < 10

Διάβασε Ν ! Συνολικός αριθμός αγωνιζόμενων Για i από 1 μέχρι N ! Γ2 ερώτημα Διάβασε ON[i], ΕΠ[i] Τέλος_επανάληψης min ← 10 ! Γ3 ερώτημα Για i από 1 μέχρι Ν Αν ΕΠ[i] < min τότε min ← ΕΠ[i] Οmin ← ΟΝ[i] Τέλος_αν Τέλος_επανάληψης Εμφάνισε min, Omin πλ ← 0 ! Γ4 ερώτημα Χ ← Ψευδής Για i από 1 μέχρι Ν Αν ΕΠ[i] > Ρ τότε Εμφάνισε ΕΠ[i] Χ ← Αληθής Αλλιώς_αν Ρ - ΕΠ[i] <= 0.5 τότε πλ ← πλ + 1 Τέλος_αν Τέλος_επανάληψης Αν Χ = Ψευδής τότε Εμφάνισε πλ Τέλος_αν ΕΠ_πρ ← ΕΠ[1] ! Γ5 ερώτημα Για i από 2 μέχρι Ν

177

∆ΟΜΕΣ ∆Ε∆ΟΜΕΝΩΝ

ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ Θέμα Α 1. Να σημειώσετε αν είναι σωστή ή λανθασμένη καθεμιά από τις παρακάτω προτάσεις. α. Ένας πίνακας δεν μπορεί να επεξεργαστεί με δομή Αρχή_επανάληψης. Σ Λ β. Ένας αλγόριθμος ταξινόμησης είναι και η ταξινόμηση με παρεμβολή. Σ Λ γ. Η απώθηση (pop) στοιχείου γίνεται από το πίσω άκρο της στοίβας. Σ Λ δ. Σε μια στατική δομή το ακριβές μέγεθος της απαιτούμενης κύριας μνήμης καθορί-

ζεται κατά την εκτέλεση του προγράμματος Σ Λ

ε. Η ταξινόμηση φυσαλίδας επαναλαμβάνεται πολλές φορές, ακόμη και αν ο πίνακας είναι από την αρχή ταξινομημένος.

Σ Λ

(Μονάδες 10)

2. α. Να διορθωθεί το παρακάτω τμήμα που υλοποιεί τον αλγόριθμο σειριακής αναζήτησης στοι-χείου key σε πίνακα Π[100].

Αποτελέσματα // Π, key // i ← 1 flag ← Ψευδής Όσο i <=100 και flag =Ψευδής επανάλαβε Αν Π[i] = key τότε Εμφάνισε "Βρέθηκε" Τέλος_επανάληψης Αποτελέσματα // flag //

(Μονάδες 4) β. Πόσες φορές θα εκτελεστεί ο παραπάνω διορθωμένος αλγόριθμος αν το key δεν υπάρχει στον πίνακα;

(Μονάδες 4)

3. Να δοθεί ο ορισμός ταξινόμησης Ν στοιχείων α1, α2, …, αΝ. (Μονάδες 6)

4. Να γραφεί ο αλγόριθμος εύρεσης και εμφάνισης του μεγίστου στοιχείου ενός πίνακα ακεραίων Π[200].

(Μονάδες 8)

5. α. Να αναφερθούν οι λειτουργίες (πράξεις) επί των δομών δεδομένων. (Μονάδες 4)

β. Ποιες από τις παραπάνω λειτουργίες δεν εφαρμόζονται στους πίνακες και γιατί; (Μονάδες 4)

Θέμα Β 1. Να γραφεί τμήμα αλγορίθμου που θα εκχωρεί τις τιμές 10, 20, 30, 40, …, 1000 σε πίνακα Λ[100].

Δομές Δεδομένων 178

(Μονάδες 6)

2. Έχοντας ως δεδομένο πίνακα 50 θέσεων να γραφεί τμήμα αλγορίθμου που θα εναλλάσει τις τιμές των άρτιων και περιττών θέσεων. Δηλ. το στοιχείο Π[i] να ανταλλάξει τιμή με το στοιχείου Π[i + 1] για i = 1, 3, …, 49.

(Μονάδες 6)

3. Να γίνει το διάγραμμα ροής του τμήματος αλγορίθμου: M ← Α[1] Για i από 2 μέχρι 6 Αν M > Α[i] τότε M ← Α[i] Τέλος_επανάληψης Εμφάνισε M (Μονάδες 6)

4. Τι εμφανίζει το πιο πάνω τμήμα αλγορίθμου αν ο πίνακας Α έχει τις τιμές 2, 5, -8, 1, 0, 4. (Μονάδες 2)

Θέμα Γ Ένας εμπορικός σύλλογος καταγράφει σε δύο πίνακες 12x50 το σύνολο των εσόδων των 50 κατα-στημάτων του συλλόγου για καθέναν από τους 12 μήνες του 2009 και του 2010. Ο πρώτος πίνακας περιέχει τα στοιχεία για το 2009 και ο δεύτερος για το 2010. 1. Να διαβαστούν οι πίνακες σε αλγόριθμο ο οποίος στη συνέχεια να:

(Μονάδες 2)

2. Υπολογίζει και εμφανίζει το σύνολο των εσόδων κάθε μαγαζιού για τα 2 πρώτα τρίμηνα κάθε έτους.

(Μονάδες 9) 3. Σε περίπτωση που τα συνολικά έσοδα των καταστημάτων για το 2010 ήταν μειωμένα κατά του-λάχιστον 20% των συνολικών εσόδων του 2009, να εμφανίζει το μήνυμα «Η οικονομική κρίση επη-ρέασε». Να εμφανίζεται αντίθετο μήνυμα αν δεν ισχύει το παραπάνω.

(Μονάδες 9)

Θέμα Δ Σε ένα τμήμα ΤΕΙ γίνεται καταγραφή για 60, τυχαία επιλεγμένους φοιτητές, από καθένα από τα 4 τμήματα του ΤΕΙ τα στοιχεία: Φύλο (Α για αγόρι, Κ για κορίτσι), είναι καπνίζοντας ή όχι (1 αν εί-ναι, 0 αν δεν είναι), πόσα πακέτα καπνίζει ημερησίως (0 αν δεν καπνίζει). 1. Να διαβαστούν τα δεδομένα σε 3 πίνακες. Κατά την εισαγωγή δεδομένων να ελέγχεται ότι τα στοιχεία των δύο πρώτων πινάκων είναι σωστά. Για τον τρίτο πίνακα, αν στην αντίστοιχη θέση του δεύτερου πίνακα υπάρχει 0, τότε και στον αντίστοιχο πίνακα να διασφαλίζεται ότι έχει διαβαστεί 0, διαφορετικά ένας αριθμός θετικός.

(Μονάδες 4) 2. Να υπολογίζεται και εμφανίζεται για κάθε τμήμα το ποσοστό των καπνιζόντων κοριτσιών στο σύνολο των καπνιζόντων ατόμων.

(Μονάδες 5) 3. Να υπολογίζεται και εμφανίζεται το τμήμα που είχε το μικρότερο σύνολο καπνιζόντων φοιτητών.

(Μονάδες 6) 4. Να υπολογίζεται και εμφανίζεται ο μέσος όρος πακέτων που καταναλώνονται από τα καπνίζοντα αγόρια ημερησίως στο ΤΕΙ.

(Μονάδες 5)