Page 1

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, για να εξοικειωθεί ο μαθητής με τη μορφή των θεμάτων. Τα επαναληπτικά διαγωνίσματα και οι ασκήσεις προς επίλυση θα βοηθήσουν τους μαθητές να ισχυροποιήσουν την ικανότητα επίλυσης ασκήσεων. Το βιβλίο μπορεί να χρησιμοποιηθεί για επανάληψη στο τέλος κάθε κεφαλαίου ή για επανάληψη στο τέλος της σχολικής χρονιάς. Σε περίπτωση που δεν υπάρχει αρκετός χρόνος, καλό θα είναι να μελετηθούν οι λυμένες ασκήσεις και τα επιλεγμένα θέματα των εξετάσεων των προηγουμένων ετών. Φώτης Ελ. Λαζαρίνης Καθηγητής Πληροφορικής


g1yah

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

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

 Βασικές κατηγορίες ασκήσεων  Λυμένες ασκήσεις  Επιλεγμένα θέματα Πανελληνίων & σχολικού βιβλίου  Ασκήσεις προς επίλυση  Επαναληπτικό διαγώνισμα

87 5


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

 ΒΑΣΙΚΕΣ ΚΑΤΗΓΟΡΙΕΣ ΑΣΚΗΣΕΩΝ Το τρίτο κεφάλαιο του σχολικού βιβλίου πραγματεύεται το θέμα των δομών δεδομένων (πίνακες, στοίβες, ουρές). Περιέχει θεωρητικά θέματα και ασκήσεις που αφορούν κυρίως στη χρήση των δομών δεδομένων τύπου πίνακα. Τα θέματα που ζητούνται στις Πανελλήνιες εξετάσεις ποικίλουν από θεωρητικά θέματα, όπως ποιες είναι οι πράξεις επί των δομών δεδομένων, μέχρι σύνθετες ασκήσεις με χρήση πινάκων. Στην παρακάτω λίστα συγκεντρώνονται τα κυριότερα θέματα που ζητούνται στις Πανελλήνιες εξετάσεις. Στην επόμενη ενότητα επιλύονται αρκετά παραδείγματα από κάθε περίπτωση, ώστε ο μαθητής να ισχυροποιήσει την ικανότητα επίλυσης διαφορετικών περιπτώσεων ασκήσεων.  Ασκήσεις μετατροπών μεταξύ εναλλακτικών τρόπων αναπαράστασης αλγορίθμων και αλγοριθμικών δομών (π.χ. θέματα 1, 20).  Ασκήσεις σύντομης απάντησης σχετικές με τη διαχείριση στοιχείων στις δομές δεδομένων στοίβα ή ουρά (π.χ. θέμα 8).  Διόρθωση γνωστών αλγορίθμων (π.χ. θέμα 10).  Ασκήσεις τύπου "τι εμφανίζει" έχοντας ως δεδομένο κάποιον πίνακα ή εξήγηση του αποτελέσματος ενός αλγορίθμου που επεξεργάζεται πίνακα (π.χ. θέματα 1, 2, 6).  Ασκήσεις συμπλήρωσης κενών σε εντολές που επεξεργάζονται πίνακες ή ασκήσεις απόδοσης συγκεκριμένων τιμών σε πίνακα (π.χ. θέματα 3, 4, 5).  Εκτέλεση γνωστών αλγορίθμων με είσοδο συγκεκριμένα δεδομένα (π.χ. θέματα 6, 9).  Ασκήσεις που επιλύονται με χρήση μονοδιάστατων πινάκων. Οι ασκήσεις συνήθως ζητούν:  Υπολογισμό αθροισμάτων, πληθών, ποσοστών, μέσων όρων, ελαχίστου και μεγίστου (βλ. άσκηση 11/ερώτημα γ, άσκηση 12/ερώτημα α).  Έλεγχος αν ένας ή περισσότεροι πίνακες έχουν μία ιδιότητα. Δηλαδή αν όλα τα στοιχεία τους πληρούν μία ή περισσότερες συνθήκες (βλ. άσκηση 7).  Ταξινόμηση πίνακα ή πινάκων με βάση κάποιο κριτήριο. Η άσκηση θα ζητά την ταξινόμηση σε φθίνουσα ή αύξουσα σειρά ή θα ζητά την εμφάνιση των μικρότερων αριθμών από ένα σύνολο αριθμών (βλ. άσκηση 12/ερώτημα γ).  Σειριακή αναζήτηση σε πίνακα με βάση κάποια δεδομένα εισόδου. Η άσκηση θα ζητά, έπειτα από το διάβασμα των αρχικών πινάκων, να διαβαστούν μία ή περισσότερες τιμές και να ελεγχθεί αν υπάρχουν ή όχι στους πίνακες εισόδου (βλ. άσκηση 11/ερώτημα δ, άσκηση12/ερώτημα α).  Επεξεργασία στοιχείων του πίνακα μέχρι να ικανοποιηθεί κάποιο κριτήριο. Συνεπώς δεν απαιτείται η επεξεργασία όλων των στοιχείων του πίνακα και η άσκηση επιλύεται είτε με Όσο … επανάλαβε είτε με Αρχή_επανάληψης … Μέχρις_ότου (βλ. άσκηση 13).  Ειδικές ασκήσεις που απαιτούν τη μετατροπή πινάκων από μια μορφή σε μια άλλη. π.χ. μονοδιάστατο σε δισδιάστατο (βλ. άσκηση 14).  Δημιουργία νέων πινάκων με βάση τα δεδομένα εισόδου, π.χ. έχοντας το εισόδημα 100 ατόμων να υπολογιστεί σε νέο πίνακα ο φόρος που αναλογεί (βλ. άσκηση 15, άσκηση

88

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


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).

89


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

 ΛΥΜΕΝΕΣ ΑΣΚΗΣΕΙΣ Στην ενότητα αυτή παρουσιάζονται λυμένες ασκήσεις που εμπίπτουν στις κατηγορίες ασκήσεων που αναφέρθηκαν πιο πάνω. Αρχικά παρουσιάζονται θέματα σύντομης απάντησης, ενώ τα υπόλοιπα θέματα ζητούν ολοκληρωμένους αλγορίθμους που επιλύονται με χρήση πινάκων διαφορετικής διάστασης. 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 1 2 3 4 5 6

sum 0 5

0

Εμφανίζεται 1, 5 30 -5 4, -5 8 10 0

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

90

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


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

Ψ

i <= 6

Α Ψ

Εμφάνισε sum A

X[i] mod 2 = 0 Α

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

X[i] mod 3 = 0

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

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

sum ← sum + X[i]

Ψ

Α

i←i+1

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] + …

91


Πάγιο 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] Τέλος_αν Τέλος_επανάληψης Τέλος_επανάληψης

104

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


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 Τέλος_επανάληψης

! υπολογισμός μέσου όρου

119


Για 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 που αντιστοιχεί στην πρώτη ή τη δεύτερη Κυριακή. Για κάθε εφημερίδα να εμφανίζεται το ποσοστό (%) πωλήσεών της, για την Κυριακή που αντιστοιχεί στον αριθμό εισόδου, σε σχέση με τις συνολικές πωλήσεις όλων των εφημερίδων τη συγκεκριμένη ημέρα. Επίσης να εμφανίζεται ο αριθμός εφημερίδας.

120

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


Απάντηση

Για το γ ερώτημα πρέπει να εμφανίσουμε τον πίνακα Τ και την 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] Τέλος_επανάληψης

! ερώτημα ε

121


Τέλος_επανάληψης Α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. Να εμφανίζει τα ονόματα των αθλητών που κατέρριψαν το ρεκόρ αγώνων. Αν δεν υπάρχουν τέτοιοι αθλητές, να εμφανίζει το πλήθος των αθλητών που πλησίασαν το ρεκόρ αγώνων

167


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

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

! Ρεκόρ

Διάβασε Ν Για i από 1 μέχρι N Διάβασε ON[i], ΕΠ[i] Τέλος_επανάληψης

! Συνολικός αριθμός αγωνιζόμενων ! Γ2 ερώτημα

min ← 10 Για i από 1 μέχρι Ν Αν ΕΠ[i] < min τότε min ← ΕΠ[i] Οmin ← ΟΝ[i] Τέλος_αν Τέλος_επανάληψης Εμφάνισε min, Omin

! Γ3 ερώτημα

πλ ← 0 ! Γ4 ερώτημα Χ ← Ψευδής Για i από 1 μέχρι Ν Αν ΕΠ[i] > Ρ τότε Εμφάνισε ΕΠ[i] Χ ← Αληθής Αλλιώς_αν Ρ - ΕΠ[i] <= 0.5 τότε πλ ← πλ + 1 Τέλος_αν Τέλος_επανάληψης Αν Χ = Ψευδής τότε Εμφάνισε πλ Τέλος_αν ΕΠ_πρ ← ΕΠ[1] Για i από 2 μέχρι Ν

168

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

! Γ5 ερώτημα


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

 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ Θέμα Α 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].

177


(Μονάδες 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)

178

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

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

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

Read more
Read more
Similar to
Popular now
Just for you