Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Κεφάλαιο 9ο Κεφάλαιο 9 Κουτσοδόντης Αναστάσιος Σελίδα 1 Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Κεφάλαιο 9ο Πίνακες 9.1 Εισαγωγή Σε πολλά προβλήµατα το πλήθος των υπό επεξεργασία πληροφοριών είναι µεγάλο. Κατά συνέπεια, η παράστασή τους και η περιγραφή της επεξεργασίας τους είναι πολύπλοκη και δυσνόητη. ♦ Η δοµή του πίνακα είναι από τις πιο συχνά χρησιµοποιούµενες στις προγραµµατιστικές τεχνικές. ♦ Χρησιµοποιούµε πίνακες, όταν θέλουµε να επεξεργαστούµε ένα πλήθος οµοειδών στοιχείων. Πίνακας (ορισµός): σύνολο αντικειµένων ίδιου τύπου, τα οποία αναφέρονται µε το ίδιο όνοµα. Καθένα από τα αντικείµενα που απαρτίζουν τον πίνακα λέγεται στοιχείο του πίνακα. Κάθε στοιχείο διαθέτει ένα µοναδικό συνδυασµό τιµών δεικτών που προσδιορίζουν τη θέση του µέσα στον πίνακα. Η αρίθµηση των θέσεων κάνει ευκολότερη την καταχώριση τιµών, την ανάγνωση και γενικότερα την επεξεργασία των στοιχείων του πίνακα. Για την αρίθµηση των θέσεων ενός πίνακα χρησιµοποιούνται διαδοχικοί ακέραιοι αριθµοί που ονοµάζονται δείκτες του πίνακα (διατακτικοί αριθµοί). ♦ Ένας τέτοιος πίνακας λέγεται γραµµικός ή µονοδιάστατος. Πίνακες όπως αυτός που έχουν δύο διαστάσεις (Γραµµές και στήλες) ονοµάζονται ορθογώνιοι ή δισδιάστατοι. Η θέση κάθε στοιχείου του παραπάνω πίνακα περιγράφεται από ένα διατεταγµένο ζεύγος αριθµών (Ι, J), όπου Ι είναι αριθµός της γραµµής και J ο αριθµός της στήλης. Η αρίθµηση των γραµµών και των στηλών τους γίνεται µε διαδοχικούς ακεραίους, που και σε αυτή την περίπτωση λέγονται διατακτικοί αριθµοί. ♦ Ένας τέτοιος πίνακας λέγεται ορθογώνιος ή δισδιάστατος . Χαρακτηριστικά πινάκων: ¾ Η θέση ενός στοιχείου σε ένα γραµµικό πίνακα, όπως είδαµε, καθορίζεται από ένα δείκτη (διατακτικό αριθµό), ενώ σε ένα ορθογώνιο πίνακα από ένα διατεταγµένο ζεύγος δεικτών (διατακτικών αριθµών). ¾ Οι πίνακες διευκολύνουν την παράσταση των δεδοµένων και των αποτελεσµάτων. Αυτό συµβαίνει διότι µε τη χρήση τους µειώνεται δραµατικά το πλήθος των µεταβλητών που χρειάζεται να ορίσουµε σε έναν αλγόριθµο. ¾ Από τον ορισµό του πίνακα, τα στοιχεία ενός πίνακα είναι πάντα του ίδιου τύπου, πχ. ακέραιοι αριθµοί, πραγµατικοί αριθµοί, χαρακτήρων (ή λεκτικοί ή αλφαριθµητικοί), λογικοί. Η οµοιοµορφία αυτή των στοιχείων ενός πίνακα µάς επιτρέπει να τον χειριζόµαστε ως ένα µέγεθος. Στον τίτλο του αλγόριθµου, καθώς και στις δηλώσεις Κουτσοδόντης Αναστάσιος Σελίδα 2 Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Κεφάλαιο 9ο δεδοµένων και αποτελεσµάτων, οι πίνακες περιγράφονται ως ενιαία µεγέθη. Οι πίνακες δηλώνονται στις µεταβλητές ως εξής: ΜΕΤΑΒΛΗΤΕΣ Τύπος πίνακα : ΟνοµαΠίνακα [διάσταση] Τύπος πίνακα : ΟνοµαΠίνακα [διάσταση_1, διάσταση_2] Όπου Τύπος πίνακα : πραγµατικός, ακέραιος, χαρακτήρων κ.λπ Για παράδειγµα, ας θεωρήσουµε τους ακόλουθους δύο ορισµούς πίνακα: ΠΡΑΓΜΑΤΙΚΟΙ : ΠινΑ[10] ΠΡΑΓΜΑΤΙΚΟΙ : ΠινΒ[5, 7] ΧΑΡΑΚΤΗΡΩΝ :Eπων[ ν ] ΧΑΡΑΚΤΗΡΩΝ:Μην[ 12 ] ΠΡΑΓΜΑΤΙΚΟΙ : Θερµ[12 , 30] Η πρώτη δήλωση ορίζει ένα µονοδιάστατο πραγµατικό πίνακα 10 θέσεων µε το όνοµα ΠινΑ, η δεύτερη δήλωση ορίζει έναν πίνακα πραγµατικών αριθµών δύο διαστάσεων, συνολικά 5x7=35 θέσεων, η τρίτη δήλωση ορίζει ένα µονοδιάστατο λεκτικό πίνακα ν θέσεων (όπου το ν έχει οριστεί στις σταθερές) µε το όνοµα Επων, η τέταρτη δήλωση ορίζει ένα µονοδιάστατο λεκτικό πίνακα 12 θέσεων µε το όνοµα Μην για τα ονόµατα των µηνών, η πέµπτη δήλωση ορίζει ένα δισδιάστατο πίνακα 12Χ30 θέσεων µε το όνοµα Θερµ για τις θερµοκρασίες 12 µηνών και 30 ηµερών ο καθένας. ¾ Κατά την εκτέλεση ενός αλγόριθµου επεξεργαζόµαστε συνήθως ένα στοιχείο του πίνακα κάθε φορά. Στις εντολές λοιπόν των αλγορίθµων εµφανίζονται, εν γένει, τα στοιχεία του πίνακα και όχι όλος ο πίνακας. Για να συµβολίσουµε το στοιχείο µε δείκτη -ι- ενός µονοδιάστατου πίνακα Α, γράφουµε Α[ι]. Αναφέρουµε δηλαδή το όνοµα του πίνακα και τον δείκτη (διατακτικό αριθµό) της θέσης µέσα σε αγκύλες. ¾ Όµοια, µε Β[κ, λ] συµβολίζουµε το στοιχείο µε δείκτες (διατακτικούς αριθµούς)κ, λ ενός δισδιάστατου πίνακα Β. 9.1.1 Μειονεκτήµατα από την χρήση πινάκων 9 Οι πίνακες απαιτούν µνήµη. Ένας πίνακας δεσµεύει πολλές θέσεις µνήµης του υπολογιστή. 9 Οι πίνακες περιορίζουν τις δυνατότητες του προγράµµατος. Το πλήθος των στοιχείων τους είναι σταθερό και προκαθορισµένο στην αρχή του προγράµµατος. Κουτσοδόντης Αναστάσιος Σελίδα 3 Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Κεφάλαιο 9ο 9.2 ∆ιαχείριση πινάκων 9.2.1 Εισαγωγή δεδοµένων -στοιχείων- σε πίνακες Για να εισαγάγουµε και να φυλάξουµε τα δεδοµένα που µας ενδιαφέρουν σε ένα µονοδιάστατο πίνακα µε ν θέσεις: ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ ν ΓΡΑΨΕ ' Όνοµα[', ι , ']=' ∆ΙΑΒΑΣΕ Όνοµα[ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ♦ Για την εισαγωγή, προσπέλαση, -επεξεργασία-, των στοιχείων ενός γραµµικού ή µονοδιάστατου πίνακα χρησιµοποιείται µια απλή εντολή επανάληψης. ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ ν Εντολές_ διαχείρισης_πίνακα[ i ] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ Για να εισαγάγουµε και να φυλάξουµε τα δεδοµένα που µας ενδιαφέρουν σε ένα δισδιάστατο πίνακα µε κ γραµµές και λ στήλες: ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ κ ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ λ ΓΡΑΨΕ 'Όνοµα [', ι , ',', j , ']=' ∆ΙΑΒΑΣΕ 'Όνοµα [ι ,j ] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ♦ Για την εισαγωγή, επεξεργασία, -προσπέλαση-, των στοιχείων πινάκων πολλών διαστάσεων χρησιµοποιούνται εµφωλευµένες επαναληπτικές δοµές. ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ κ ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ λ Εντολές διαχείρισης πίνακα [ ι , j ] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ¾ Στο ΓΡΑΨΕ ' Όνοµα [ ' , ι , ' ]= ' Θα τυπωθεί: Όνοµα [ ι ]= (όπου ι=1,2,3,…ν) ¾ Στο ΓΡΑΨΕ ' Όνοµα [', ι , ' , ', j , ' ]= ' Θα τυπωθεί: Όνοµα [ ι , j ]= (όπου ι=1,2,3…κ και j=1,2,3…λ) Κουτσοδόντης Αναστάσιος Σελίδα 4 Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Κεφάλαιο 9ο Για την εκτύπωση των στοιχείων ενός µονοδιάστατου πίνακα χρησιµοποιούµε την µορφή: ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ ν ΓΡΑΨΕ ' Όνοµα[', ι , ']=', Όνοµα[ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ Για την εκτύπωση των στοιχείων ενός δισδιάστατου πίνακα χρησιµοποιούµε την µορφή: ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ κ ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ λ ΓΡΑΨΕ 'Όνοµα [', ι , ',', j , ']=', 'Όνοµα [ι ,j ] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ ! Αλλαγή γραµµής ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ Κουτσοδόντης Αναστάσιος Σελίδα 5 Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Κεφάλαιο 9ο 9.3 Τυπικές επεξεργασίες πινάκων ¾ Υπολογισµός αθροίσµατος κάποιων στοιχείων του πίνακα. ¾ Εύρεση µέγιστου ή ελάχιστου στοιχείου ενός πίνακα. ¾ Ταξινόµηση των στοιχείων του µονοδιάστατου πίνακα κατά αύξουσα ή φθίνουσα ή αλφαβητική σειρά. ¾ Αναζήτηση στοιχείων πίνακα. ¾ Συγχώνευση δύο µονοδιάστατων πινάκων. 9.3.1 Άθροισµα στοιχείων πίνακα Α… Μονοδιάστατου: Για να προσθέσουµε στοιχεία γραµµικού ή µονοδιάστατου πίνακα ΠινΑ[ν], χρειαζόµαστε µία µεταβλητή Σ που η αρχική της τιµή είναι 0 : ΠινA[ 1 ] ΠινA[ 2 ] ΠινA[ 3 ] ……… ΠινA[ ν ] Σύνολο … Σ←0 ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ ν Σ←Σ + ΠινΑ[ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ …. Παράδειγµα: Να γραφεί πρόγραµµα που θα δίνονται οι βαθµοί ν µαθητών, να υπολογίζεται ο µέσος όρος και να τυπώνεται. ΠΡΟΓΡΑΜΜΑ Μέσος_Ορος_βαθµών ΣΤΑΘΕΡΕΣ Ν=50 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΟΙ :Βαθµ[Ν] , ι, Σ ΠΡΑΓΜΑΤΙΚΟΙ: ΜΟ ΑΡΧΗ ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 5 ΓΡΑΨΕ 'Βαθµός ', ι , ' µαθητή :' ∆ΙΑΒΑΣΕ Βαθµ[ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ Σ←0 ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 5 Σ←Σ + Βαθµ[ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΜΟ←Σ / Ν ΓΡΑΨΕ 'Μέσος όρος µαθητών :', ΜΟ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Κουτσοδόντης Αναστάσιος Σελίδα 6 Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Κεφάλαιο 9ο Β… ∆ισδιάστατου: Για να προσθέσουµε στοιχεία ορθογωνίου ή δισδιάστατου πίνακα ΠινΑ[κ,λ] ενεργώ ως εξής : Για να προσθέσω τα στοιχεία των γραµµών χρειάζοµαι ένα µονοδιάστατο πίνακα κ θέσεων όσες είναι οι γραµµές του πίνακα, για να προσθέσω τα στοιχεία των στηλών χρειάζοµαι ένα µονοδιάστατο πίνακα λ θέσεων όσες είναι οι στήλες του πίνακα, καθώς και µία µεταβλητή Σ για το άθροισµα όλων των στοιχείων του πίνακα. Α[ κ , λ ] Α[2 , 1 ] Α[ 2 , 2 ] Α[ 2 , 3 ] ....... ....... ....... ....... ....... Α[ 2 , λ ] Α[ 3 , 1 ] Α[ 3 , 2 ] Α[ 3 , 3 ] ....... ....... ....... ....... ....... Α[ 3 , λ ] Α[ 4 , 1 ] Α[ 4 , 2 ] Α[ 4 , 3 ] ....... ....... ....... ....... ....... Α[ 4 , λ ] Γρ[κ] Γρ[1] Γρ[2] Γρ[3] Γρ[4] Α[ 1 , 1 ] Α[ 1 , 2 ] Α[ 1 , 3 ] ....... ....... ....... ....... ....... Α[ 1 , λ ] ....... ....... Α[ κ , 1 ] Α[ κ , 2 ] Α[ κ , 3 ] ....... Στ[1] Στ[2] Στ[3] …… ....... ....... …. ....... ....... ....... ....... Α[ κ , λ ] Γρ[κ] ……. …… …… Στ[λ] Σ Στ[λ] ……. Το τµήµα του προγράµµατος που υλοποιεί αυτήν την διαδικασία είναι: …… ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ κ ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ λ Σ ← Σ + ΠινΑ[ ι , j ] ! Υπολογίζει το άθροισµα όλων των στοιχείων του πίνακα Γρ[ ι ] ← Γρ[ ι ] + ΠινΑ[ ι , j ] ! Υπολογίζει το άθροισµα όλων των γραµµών του πίνακα Στ[j ] ← Στ[j] + ΠινΑ[ ι , j ] ! Υπολογίζει το άθροισµα όλων των στηλών του πίνακα ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ …… Κουτσοδόντης Αναστάσιος Σελίδα 7 Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Κεφάλαιο 9ο 9.3.2 Μέγιστο ή Ελάχιστο Πίνακα Για να βρω το µέγιστο ή ελάχιστο πίνακα θέτω πάντα το πρώτο στοιχείο Α[1] ή Α[1,1] ότι είναι µέγιστο ή ελάχιστο σε µία µεταβλητή (Μαχ ή Μιν) και κατόπιν συγκρίνω όλα τα στοιχεία του πίνακα µε αυτήν την τιµή. Αν κάποιο από αυτά είναι µεγαλύτερο ή µικρότερο τότε θέτω αυτήν την τιµή µέγιστη ή ελάχιστη. ¾ Προσοχή: ξεχωριστά συγκρίνω για το µέγιστο , ξεχωριστά για το ελάχιστο. 9.3.2.1 Μονοδιάστατος ΠΡΟΓΡΑΜΜΑ Μέγιστος_Ελάχιστος ΣΤΑΘΕΡΕΣ Ν=…. ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΟΙ: ι, Θ_Μεγ, Θ_Ελαχ ΠΡΑΓΜΑΤΙΚΟΙ : A[Ν], Μαχ, Μιν ΑΡΧΗ !Εισαγωγή στοιχείων πίνακα Α ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΡΑΨΕ ' Α[ ', ι , ']=' ∆ΙΑΒΑΣΕ Α[ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ !Τοποθέτηση πρώτου στοιχείου σαν Μαχ και Μιν Μαχ ← Α[ 1 ] Μιν ← Α[ 1 ] Θ_Μεγ ← 1 Θ_Ελαχ ← 1 ΓΙΑ ι ΑΠΟ 2 ΜΕΧΡΙ Ν !Εύρεση Μέγιστου στοιχείου ΑΝ Α[ι] > Μαχ ΤΟΤΕ Μαχ ← Α[ ι ] Θ_Μεγ ← ι !κρατεί την θέση του µέγιστου… ΤΕΛΟΣ_ΑΝ !Εύρεση Ελάχιστου στοιχείου ΑΝ Α[ι] < ΜινΤΟΤΕ Μιν ← Α[ ι ] !κρατεί την θέση του ελάχιστου… Θ_Ελαχ ← ι ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ !Εµφάνιση αποτελέσµατος µέγιστου και ελάχιστου στον πίνακα Α ΓΡΑΨΕ ' Το µέγιστο στοιχείο είναι ', Μαχ, 'και βρίσκεται στην θέση', Θ_Μεγ ΓΡΑΨΕ ' Το ελάχιστο στοιχείο είναι ', Μιν, ' βρίσκεται στην θέση', Θ_Ελαχ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Μέγιστος_Ελάχιστος Η θέση χρειάζεται για να εντοπίζω ποιος είναι ο µέγιστος ή ο ελάχιστος, στην περίπτωση που τα στοιχεία του πίνακα είναι µοναδικά. Αν τα στοιχεία δεν είναι µοναδικά τότε εντοπίζω τον µέγιστο ή τον ελάχιστο και κατόπιν κάνω αναζήτηση στον πίνακα για να δω πόσοι και ποιοι έχουν µέγιστη ή ελάχιστη τιµή. Κουτσοδόντης Αναστάσιος Σελίδα 8 Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Κεφάλαιο 9ο 9.3.2.2 ∆ισδιάστατος ΠΡΟΓΡΑΜΜΑ Μέγιστος_Ελάχιστος ΣΤΑΘΕΡΕΣ Κ=…. Λ=…. ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΟΙ: ι, j ΠΡΑΓΜΑΤΙΚΟΙ : A[K, Λ], Μαχ, Μιν ΑΡΧΗ !Εισαγωγή στοιχείων πίνακα Α ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ Κ ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ Λ ΓΡΑΨΕ ' Α[ ', ι ,',', j, ']=' ∆ΙΑΒΑΣΕ Α[ι , j] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ !Τοποθέτηση πρώτου στοιχείου σαν Μαχ και Μιν Μαχ ← Α[ 1, 1 ] Μιν ← Α[ 1 , 1 ] Θµ_γρ ← 1 !θέση της γραµµής του µέγιστου… Θµ_στ ← 1 !θέση της στήλης του µέγιστου… Θελ_γρ ← 1 !θέση της γραµµής του ελάχιστου… Θελ_στ ← 1 !θέση της στήλης του ελάχιστου… ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ Κ ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ Λ !Εύρεση Μέγιστου στοιχείου ΑΝ Μαχ < Α[ι , j] ΤΟΤΕ Μαχ ← Α[ι , j] Θµ_γρ ← ι !θέση της γραµµής του µέγιστου… Θµ_στ ← j !θέση της στήλης του µέγιστου… ΤΕΛΟΣ_ΑΝ !Εύρεση Ελάχιστου στοιχείου ΑΝ Μιν > Α[ι , j]ΤΟΤΕ Μιν ← Α[ι , j] Θελ_γρ ← ι !θέση της γραµµής του ελάχιστου… Θελ_στ ← j !θέση της στήλης του ελάχιστου… ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ !Εµφάνιση αποτελέσµατος µέγιστου και ελάχιστου στον πίνακα Α ΓΡΑΨΕ ' Το µέγιστο στοιχείο είναι ', Μαχ ΓΡΑΨΕ ' Το ελάχιστο στοιχείο είναι ', Μιν ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Μέγιστος_Ελάχιστος Κουτσοδόντης Αναστάσιος Σελίδα 9 Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Κεφάλαιο 9ο 9.3.2.3 Μέγιστος ή Ελάχιστος ανά γραµµή ∆ισδιάστατου ΠΡΟΓΡΑΜΜΑ Μέγιστος_Ελάχιστος_ανα_Γραµµή ΣΤΑΘΕΡΕΣ Κ=…. Λ=…. ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΟΙ: ι, j ΠΡΑΓΜΑΤΙΚΟΙ : A[K, Λ], Μαχ[Κ], Μιν[Κ] ΑΡΧΗ !Εισαγωγή στοιχείων πίνακα Α ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ Κ ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ Λ ΓΡΑΨΕ ' Α[ ', ι ,',', j, ']=' ∆ΙΑΒΑΣΕ Α[ι , j] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ Κ !Τοποθέτηση πρώτου στοιχείου της γραµµής σαν Μαχ[ι] και Μιν[ι] Μαχ [ ι ] ← Α[ ι, 1 ] Μιν [ ι ] ← Α[ ι, 1 ] ΓΙΑ j ΑΠΟ 2 ΜΕΧΡΙ Λ !Εύρεση Μέγιστου στοιχείου ΑΝ Μαχ [ ι ] < Α[ι , j] ΤΟΤΕ Μαχ [ ι ] ← Α[ι , j] ΤΕΛΟΣ_ΑΝ !Εύρεση Ελάχιστου στοιχείου ΑΝ Μιν[ ι ] > Α[ι , j] ΤΟΤΕ Μιν[ ι ] ← Α[ι , j] ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ !Εµφάνιση αποτελέσµατος µέγιστου και ελάχιστου στον πίνακα Α ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ Κ ΓΡΑΨΕ ' Μαχ[ ', ι , ']=', Μαχ[ ι ] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Μέγιστος_Ελάχιστος Κουτσοδόντης Αναστάσιος Σελίδα 10 Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Κεφάλαιο 9ο 9.3.3 Αναζήτηση ∆ύο είναι οι πλέον διαδεδοµένοι αλγόριθµοι αναζήτησης ¾ Η σειριακή αναζήτηση ¾ Η δυαδική αναζήτηση Η σειριακή είναι πιο απλή, αλλά λιγότερο αποτελεσµατική µέθοδος και χρησιµοποιείται σε αταξινόµητους πίνακες. Η δυαδική χρησιµοποιείται µόνο σε ταξινοµηµένους πίνακες και είναι πιο αποδοτικότερη µέθοδος από την σειριακή. 9.3.3.1 Σειριακή Αναζήτηση ΠΡΟΓΡΑΜΜΑ Σειριακή_Αναζήτηση_1 ΣΤΑΘΕΡΕΣ Ν=…. ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΟΙ:∆εικτ, ι ΠΡΑΓΜΑΤΙΚΟΙ : A[Ν], Αναζ ΛΟΓΙΚΟΙ :Σηµαία ΑΡΧΗ !Εισαγωγή στοιχείων πίνακα Α ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΡΑΨΕ ' Α[ ', ι , ']=' ∆ΙΑΒΑΣΕ Α[ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ !Εισαγωγή στοιχείου για αναζήτηση στον πίνακα Α ΓΡΑΨΕ ' ∆ώσε στοιχείο για αναζήτηση: ' ∆ΙΑΒΑΣΕ Αναζ !Αναζήτηση στοιχείου Αναζ στον πίνακα Α ∆εικτ← 0 Σηµαία← ΨΕΜΑ ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΑΝ Α[ι]=Αναζ ΤΟΤΕ ∆εικτ ← ι Σηµαία ← ΑΛΗΘΕΙΑ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ !Εµφάνιση αποτελέσµατος αναζήτησης στον πίνακα Α ΑΝ Σηµαία=ΑΛΗΘΕΙΑ ΤΟΤΕ ΓΡΑΨΕ ' Το στοιχείο', Αναζ, 'υπάρχει στη θέση :',∆εικτ ΑΛΛΙΩΣ ΓΡΑΨΕ ' Το στοιχείο', Αναζ, 'δεν υπάρχει' ΤΕΛOΣ_ΑΝ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Κουτσοδόντης Αναστάσιος Σελίδα 11 Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Κεφάλαιο 9ο Στον αλγόριθµο σειριακής αναζήτησης που παρουσιάσαµε η επαναληπτική δοµή συνεχίζει τον έλεγχο, ακόµη και αν το στοιχείο βρεθεί. Έτσι, αν στον πίνακα Α υπάρχουν περισσότερα από ένα στοιχεία µε τιµή Αναζ, ως αποτέλεσµα του αλγόριθµου θα έχουµε την τελευταία από τις θέσεις στις οποίες υπάρχει τέτοιο στοιχείο, αφού ο ∆εικτ θα έχει πάρει την τιµή αυτή. ΣΣυυννήήθθω ωςς χχρρηησσιιµµοοπποοιιεείίττααιι όότταανν οο ππίίνναακκααςς ππεερριιέέχχεειι µµοοννααδδιικκάά σσττοοιιχχεείίαα.. ¾ Μια προφανής βελτίωση του αλγόριθµου θα ήταν να σταµατήσει η επαναληπτική δοµή, µόλις βρεθεί ένα στοιχείο µε τιµή Αναζ. Η έκδοση αυτή του αλγόριθµου δίνεται στη συνέχεια: ΠΡΟΓΡΑΜΜΑ Σειριακή_Αναζήτηση_2 ΣΤΑΘΕΡΕΣ Ν=…. ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΟΙ:∆εικτ, ι ΠΡΑΓΜΑΤΙΚΟΙ : A[Ν], Αναζ ΛΟΓΙΚΟΙ :Σηµαία ΑΡΧΗ !Εισαγωγή στοιχείων πίνακα Α ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΡΑΨΕ ' ∆ώσε στοιχείο πίνακα: ' ∆ΙΑΒΑΣΕ Α[ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ !Εισαγωγή στοιχείου για αναζήτηση στον πίνακα Α ΓΡΑΨΕ ' ∆ώσε στοιχείο για αναζήτηση: ' ∆ΙΑΒΑΣΕ Αναζ !Αναζήτηση στοιχείου Αναζ στον πίνακα Α ∆εικτ←0 ι←1 Σηµαία←ΨΕΜΑ ΟΣΟ (ι<=Ν) ΚΑΙ (Σηµαία=ΨΕΜΑ) ΕΠΑΝΕΛΑΒΕ ΑΝ Α[ι]=Αναζ ΤΟΤΕ ∆εικτ←ι Σηµαία←ΑΛΗΘΕΙΑ ΤΕΛΟΣ_ΑΝ ι←ι+1 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ !Εµφάνιση αποτελέσµατος αναζήτησης στον πίνακα Α ΑΝ Σηµαία=ΑΛΗΘΕΙΑ ΤΟΤΕ ΓΡΑΨΕ ' Το στοιχείο', Αναζ, 'υπάρχει στη θέση :',∆εικτ ΑΛΛΙΩΣ ΓΡΑΨΕ ' Το στοιχείο', Αναζ, 'δεν υπάρχει' ΤΕΛΟΣΑΝ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Mε τη συνθήκη της επανάληψης ο έλεγχος συνεχίζεται µέχρι να βρεθεί στον πίνακα Α στοιχείο ίσο µε το Αναζ ή µέχρι να εξαντληθούν όλα τα στοιχεία του. Στην Κουτσοδόντης Αναστάσιος Σελίδα 12 Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Κεφάλαιο 9ο πρώτη περίπτωση η µεταβλητή Σηµαία θα πάρει τιµή ΑΛΗΘΕΙΑ και η συνθήκη ((ι<=Ν) και Σηµαία =ΨΕΜΑ)) δε θα ικανοποιείται πλέον. Η εκτέλεση θα τερµατίσει και η τιµή του ∆εικτ θα δείχνει τη θέση του ζητούµενου στοιχείου. Στην περίπτωση που δε βρεθεί στοιχείο ίσο µε το Αναζ, η τιµή του ∆εικτ θα παραµείνει 0 µέχρι τη λήξη της εκτέλεσης. Σε αυτήν την έκδοση του αλγόριθµου, αν στον Πίνακα Α υπάρχουν περισσότερα από ένα στοιχεία µε τιµή Αναζ, ως αποτέλεσµα του αλγόριθµου, θα έχουµε την πρώτη από τις θέσεις στις οποίες υπάρχει τέτοιο στοιχείο, αφού µε την εύρεσή του τελειώνει το ψάξιµο. Εάν το στοιχείο αναζήτησης υπάρχει περισσότερες από µία φορές και θέλω να ιδώ τις θέσεις που υπάρχει και πόσες φορές , τότε ο αλγόριθµος σειριακής αναζήτησης τροποποιείται ως εξής: ΠΡΟΓΡΑΜΜΑ Σειριακή_Αναζήτηση_3 ΣΤΑΘΕΡΕΣ Ν=…. ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΟΙ:∆εικτ, ι, κ ΠΡΑΓΜΑΤΙΚΟΙ : A[Ν], Αναζ ΛΟΓΙΚΟΙ :Σηµαία ΑΡΧΗ !Εισαγωγή στοιχείων πίνακα Α ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΡΑΨΕ ' ∆ώσε στοιχείο πίνακα: ' ∆ΙΑΒΑΣΕ Α[ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ !Εισαγωγή στοιχείου για αναζήτηση στον πίνακα Α ΓΡΑΨΕ ' ∆ώσε στοιχείο για αναζήτηση: ' ∆ΙΑΒΑΣΕ Αναζ !Αναζήτηση στοιχείου Αναζ στον πίνακα Α ∆εικτ←0 Σηµαία←ΨΕΜΑ κ←0 ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΑΝ Α[ι]=Αναζ ΤΟΤΕ ΓΡΑΨΕ ' Το στοιχείο', Αναζ, 'υπάρχει στη θέση :' ,ι Σηµαία←ΑΛΗΘΕΙΑ κ←κ+1 !Ο µετρητής αυτός µετρά πόσες φορές υπάρχει το Αναζ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ !Εµφάνιση αποτελέσµατος αναζήτησης στον πίνακα Α ΑΝ Σηµαία=ΑΛΗΘΕΙΑ ΤΟΤΕ ΓΡΑΨΕ ' Το στοιχείο', Αναζ, 'υπάρχει ',κ,'φορές' ΑΛΛΙΩΣ ΓΡΑΨΕ ' Το στοιχείο', Αναζ, ' δεν υπάρχει' ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Κουτσοδόντης Αναστάσιος Σελίδα 13 Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Κεφάλαιο 9ο 9.3.3.2 ∆υαδική αναζήτηση Είναι γνωστό ότι η αναζήτηση µπορεί να γίνει µε πολύ πιο αποδοτικό τρόπο, αν τα δεδοµένα είναι διατεταγµένα (ταξινοµηµένα). Τα στοιχεία θεωρούµε ότι είναι ταξινοµηµένα από το µικρότερο προς το µεγαλύτερο: ΠΡΟΓΡΑΜΜΑ ∆υαδική_αναζήτηση ΣΤΑΘΕΡΕΣ Ν=…. ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΟΙ:∆εικτ, ι, Πρ, Τελ, Μ ΠΡΑΓΜΑΤΙΚΟΙ : A[Ν], Αν ΛΟΓΙΚΟΙ :Σηµαία ΑΡΧΗ !Εισαγωγή στοιχείων πίνακα Α ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΡΑΨΕ ' ∆ώσε στοιχείο πίνακα: ' ∆ΙΑΒΑΣΕ Α[ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ !Εισαγωγή στοιχείου για αναζήτηση στον πίνακα Α ΓΡΑΨΕ ' ∆ώσε στοιχείο για αναζήτηση: ' ∆ΙΑΒΑΣΕ Αναζ !Αναζήτηση στοιχείου Αναζ στον πίνακα Α ∆εικτ←0 Πρ←1 Τελ←Ν Σηµαία←ΨΕΜΑ ΟΣΟ ( Πρ<=Τελ) ΚΑΙ (Σηµαία=ΨΕΜΑ) ΕΠΑΝΕΛΑΒΕ M← (Πρ + Τελ) DIV 2 ΑΝ Α[Μ]=Αναζ ΤΟΤΕ ∆εικτ←Μ Σηµαία←ΑΛΗΘΕΙΑ ΑΛΛΙΩΣ_ΑΝ Α[Μ]>Αναζ ΤΟΤΕ Τελ← Μ-1 ΑΛΛΙΩΣ Πρ← Μ+1 ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ !Εµφάνιση αποτελέσµατος αναζήτησης στον πίνακα Α ΑΝ Σηµαία=ΑΛΗΘΕΙΑ ΤΟΤΕ ΓΡΑΨΕ 'Το στοιχείο',Αναζ, 'υπάρχει στη θέση :',∆εικτ ΑΛΛΙΩΣ ΓΡΑΨΕ ' Το στοιχείο', Αναζ, 'του πίνακα δεν υπάρχει' ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ∆υαδική_αναζήτηση. Κουτσοδόντης Αναστάσιος Σελίδα 14 Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Κεφάλαιο 9ο Ο αλγόριθµος χρησιµοποιεί δύο µεταβλητές, Πρ και Τελ, οι οποίες υποδεικνύουν τους διατακτικούς αριθµούς των στοιχείων µεταξύ των οποίων είναι πιθανό να υπάρχει το αναζητούµενο στοιχείο. Αρχικά, το Πρ παίρνει την τιµή 1 και το Τελ την τιµή του µεγαλύτερου διατακτικού στοιχείου του Πίνακα. Στη συνέχεια, ελέγχεται ένα τυχαίο στοιχείο µε διατακτικό αριθµό Μ (όπου Μ µέσος όρος των Πρ και Τελ στρογγυλεµένος προς τα κάτω Μ← (Πρ+Τελ) DIV 2, που βρίσκεται ανάµεσα στα Πρ και Τελ . Αν το Α[Μ] είναι το ζητούµενο στοιχείο, τότε αποδίδεται τιµή στο ∆εικτ η Σηµαία γίνεται ΑΛΗΘΕΙΑ και ο αλγόριθµος σταµατά, διαφορετικά ελέγχουµε αν το στοιχείο που εξετάζουµε είναι µεγαλύτερο ή µικρότερο από αυτό που αναζητούµε και περιορίζουµε το διάστηµα που εξετάζουµε στο µισό του προηγούµενου προς τα πάνω, τότε Τελ = Μ-1 ή προς τα κάτω, τότε Πρ=Μ+1 αντίστοιχα. Αν, µετά από να αριθµό επαναλήψεων, το Πρ γίνει µεγαλύτερο ή ίσο του Τελ, αυτό σηµαίνει ότι το ζητούµενο στοιχείο δεν υπάρχει στον πίνακα και ο αλγόριθµος σταµατά. Κουτσοδόντης Αναστάσιος Σελίδα 15 Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Κεφάλαιο 9ο 9.3.4 Ταξινόµηση φυσαλίδας (bubblesort) Το πρόγραµµα ταξινόµησης φυσαλίδας δίνεται στη συνέχεια µε τη µορφή ΓΛΩΣΣΑΣ. ΠΡΟΓΡΑΜΜΑ Ταξινόµηση_φυσαλίδας ΣΤΑΘΕΡΕΣ Ν=.. ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΟΣ: Ν , i,j ΠΡΑΓΜΑΤΙΚΟΙ : ΠινA[ Ν ], Τ ΑΡΧΗ !Εισαγωγή στοιχείων πίνακα ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ κ ΓΡΑΨΕ 'Πίνακας [ ', ι , ' ]=' ∆ΙΑΒΑΣΕ ΠινΑ[ ι ] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ !Ταξινόµηση µε την µέθοδο φυσαλίδας ΓΙΑ ι ΑΠΟ 2 ΜΕΧΡΙ Ν ΓΙΑ j ΑΠΟ Ν ΜΕΧΡΙ ι ΜΕ ΒΗΜΑ -1 ΑΝ ΠινΑ[ j-1 ]>ΠινA[ j ] ΤΟΤΕ Τ←ΠινA[ j-1 ] ΠινA[ j-1] ←ΠινA[ j ] ΠινA[ j ] ←Τ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ !Εµφάνιση ταξινοµηµένων στοιχείων πίνακα ΓΙΑ Ι ΑΠΟ 1 µέχρι Ν ΓΡΑΨΕ ' Α[', ι, ']= ', Α[Ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Ταξινόµηση_φυσαλίδας Έστω ένας πίνακας πραγµατικών αριθµών Ν θέσεων. Για να κατανοήσουµε τη λειτουργία του αλγόριθµου φυσαλίδας, πρέπει να φανταστούµε τον πίνακα κατακόρυφο και τους αριθµούς σαν φυσαλίδες, ανάλογα µε την τιµή τους. Ο αριθµός µε τη µικρότερη τιµή είναι η πιο µικρή (ελαφριά) φυσαλίδα, ενώ ο αριθµός µε τη µεγαλύτερη τιµή είναι η πιο βαριά (µεγάλη) φυσαλίδα. Στο πρώτο πέρασµα του πίνακα ξεκινάµε από το κάτω µέρος του πίνακα και πραγµατοποιούµε διαδοχικές ανταλλαγές γειτονικών φυσαλίδων. Σε κάθε ζευγάρι φυσαλίδων που συναντάµε, αν η από κάτω φυσαλίδα είναι µικρότερη, τότε πηγαίνει από πάνω. Η αντιµετάθεση των δύο θέσεων γίνεται µε τις κάτωθι εντολές: Τ← ΠινΑ[ j ] ; ΠινΑ[ j ] ← ΠινΑ [ j-1 ]; ΠινΑ[ j- 1 ] ← Τ; Ο προηγούµενος αλγόριθµος ταξινοµεί κατά αύξουσα σειρά ή αλφαβητική σειρά Α - Ω. ¾ Για την φθίνουσα σειρά ή Ω - Α τότε στην συνθήκη ΑΝ… θέτω ΠινΑ[ j ] > ΠινΑ[ j - 1 ] ¾ Κουτσοδόντης Αναστάσιος Σελίδα 16 Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Κεφάλαιο 9ο 9.5 Συγχώνευση δύο µονοδιάστατων πινάκων. ΠΡΟΓΡΑΜΜΑ Συγχώνευση _ 2_πινάκων ΣΤΑΘΕΡΕΣ Ν=.. Κ=.. ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΟΣ: i,j,λ.τ ΠΡΑΓΜΑΤΙΚΟΙ : ΠινA[ Ν ], ΠινΒ[ Κ ], ΠινΓ[ Ν+Κ ], ΑΡΧΗ !Εισαγωγή στοιχείων µονοδιάστατου πίνακα Α ………………………. !Εισαγωγή στοιχείων µονοδιάστατου πίνακα Β ……………………… !Ταξινόµηση Πίνακα Α !Ταξινόµηση Πίνακα Β ……………………… !Μεταφορά στοιχείων στο πίνακα Γ ι ←1 j ←1 λ←1 ΟΣΟ (ι <= Ν) ΚΑΙ ( j <= Κ) ΕΠΑΝΑΛΑΒΕ ΑΝ ΠινΑ[ ι] < ΠινΒ[ j ] ΤΟΤΕ ΠινΓ[ λ ] ← ΠινA[ ι ] ι ←ι+1 ΑΛΛΙΩΣ ΠινΓ[ λ ] ← ΠινΒ[ j ] j ← j +1 ΤΕΛΟΣ_ΑΝ λ←λ+1 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΑΝ ι > Ν ΤΟΤΕ ! έχει µεταφερθεί ο πίνακας Α ! Μεταφέρει τα υπόλοιπα του Β ΓΙΑ τ ΑΠΟ λ ΜΕΧΡΙ Ν + Κ ΠινΓ[ τ ] ← ΠινΒ[ j ] j ←j +1 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΑΛΛΙΩΣ ! έχει µεταφερθεί ο πίνακας Β ΓΙΑ τ ΑΠΟ λ ΜΕΧΡΙ Ν + Κ ! Μεταφέρει τα υπόλοιπα του Α ΠινΓ[ τ ] ← ΠινA[ ι ] ι ←ι+1 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΑΝ ! Εκτύπωση συγχωνευµένου πίνακα Γ …………….. ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Κουτσοδόντης Αναστάσιος Σελίδα 17 Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Κεφάλαιο 9ο ΑΣΚΗΣΕΙΣ ΠΡΟΣ ΕΠΙΛΥΣΗ 1. Να γραφεί πρόγραµµα το οποίο θα διαβάζει έναν πίνακα Ν θέσεων και θα υπολογίζει το άθροισµα και το πλήθος των αρνητικών στοιχείων του. 2. Να γραφεί πρόγραµµα το οποίο θα διαβάζει έναν πίνακα Ν θέσεων και θα υπολογίζει το γινόµενο των θετικών στοιχείων του. Επίσης για κάθε θετικό στοιχείο του θα εµφανίζει την τετραγωνική του ρίζα. 3. Να γραφεί πρόγραµµα το οποίο θα διαβάζει δυο πίνακες Ν στοιχείων και θα ελέγχει αν οι πίνακες είναι ίσοι, δηλ. αν τα αντίστοιχα στοιχεία τους είναι ίσα. 4. Να γραφεί πρόγραµµα που για τα έτη 2003 και 2004 θα διαβάζει το σύνολο των εσόδων µιας εταιρείας ανά µήνα και θα τα αποθηκεύει σε δυο πίνακες καταλλήλων διαστάσεων. Στη συνέχεια θα εµφανίζει τη διαφορά εσόδων µεταξύ των µηνών του 2003 και του 2004. Στην περίπτωση που για κάποιο µήνα του 2003 έχουµε λιγότερα έσοδα από τον αντίστοιχο µήνα του 2004, τότε θα εµφανίζεται κατάλληλο µήνυµα. 5. Να γραφεί πρόγραµµα το οποίο θα διαβάζει τα ονόµατα 50 αεροπορικών εταιρειών και τις αντίστοιχες εισπράξεις τους. Να τυπώνει τα ονόµατα των εταιρειών που έχουν εισπράξεις περισσότερες από τον µέσο όρο. 6. Να γραφεί πρόγραµµα το οποίο θα αντιµεταθέτει τα στοιχεία δύο µονοδιάστατων πινάκων, Α και Β, Ν θέσεων. ∆ηλ. στο Α[1] θα εκχωρηθεί η τιµή του Β[1], ενώ το Β[1] θα πάρει την τιµή του Α[1], Κ.Ο.Κ. 7. Σ' ένα πρόγραµµα περιβαλλοντικής εκπαίδευσης συµµετέχουν 20 σχολεία. Στα πλαίσια αυτού του προγράµµατος, εθελοντές µαθητές των σχολείων, που συµµετέχουν στο πρόγραµµα, µαζεύουν ποσότητες τριών υλικών (γυαλί, χαρτί και αλουµίνιο ). Να αναπτύξετε έναν πρόγραµµα που: i. να διαβάζει τις ποσότητες σε κιλά των παραπάνω υλικών που µάζεψαν οι µαθητές σε κάθε σχολείο, ii. να υπολογίζει τη συνολική ποσότητα σε κιλά του κάθε υλικού που µάζεψαν οι µαθητές σε όλα τα σχολεία, iii. αν η συνολική ποσότητα του χαρτιού που µαζεύτηκε από όλα τα σχολεία είναι λιγότερη των 1000 κιλών, να εµφανίζεται το µήνυµα «Συγχαρητήρια». Αν η ποσότητα είναι από 1000 κιλά και πάνω, αλλά λιγότερο από 2000, να εµφανίζεται το µήνυµα «∆ίνεται έπαινος» και τέλος αν η ποσότητα είναι από 2000 κιλά και πάνω να εµφανίζεται το µήνυµα «∆ίνεται βραβείο». Εξετάσεις Γ' Τάξης του Ενιαίου Λυκείου 2001 8. Σε ένα διαγωνισµό της Ευρωπαϊκής Ένωσης διαγωνίσθηκαν 50 υποψήφιοι. Για κάθε υποψήφιο γνωρίζουµε το επώνυµό και την βαθµολογία του (από 0 έως 100). Για να χαρακτηρισθεί ένας υποψήφιος ως επιτυχών πρέπει η βαθµολογία του να ξεπερνά το µέσο όρο της βαθµολογίας των 50 υποψηφίων. Να γραφεί πρόγραµµα το οποίο θα εµφανίζει τα ονόµατα των διαγωνιζόµενων που θεωρούνται επιτυχόντες καθώς και το πλήθος των επιτυχόντων. 9. Να γραφεί πρόγραµµα το οποίο να διαβάζει των αριθµό των τερµάτων που σηµειώθηκαν σε 9 αγώνες ποδοσφαίρου µίας αγωνιστικής της Α κατηγορίας και να υπολογίζει τον µέσο αριθµό τερµάτων καθώς και το εύρος των τερµάτων, δηλ. τη διαφορά της µεγαλύτερης από την µικρότερη τιµή. 10. Να γραφεί πρόγραµµα το οποίο να διαβάζει τα ονόµατα και τους βαθµούς Ν µαθητών µιας τάξης ενός σχολείου. Το πρόγραµµα θα υπολογίζει και θα εµφανίζει το πλήθος των µαθητών που είναι ΑΡΙΣΤΟΙ (18,1 έως 20) και τα ονόµατα τους, το πλήθος των µαθητών που ΠΑΡΑΠΕΜΠΟΝΤΑΙ (0 έως 9,4) και τα ονόµατα τους. 11. Να γραφεί πρόγραµµα που να διαβάζει έναν πίνακα Ν Χ Μ και να εµφανίζονται τα Κουτσοδόντης Αναστάσιος Σελίδα 18 Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Κεφάλαιο 9ο στοιχεία του από το τέλος προς την αρχή, δηλ. πρώτα θα εµφανίζεται το Π[Ν, Μ], µετά το Π[Ν, Μ-Ι], Κ.Ο.Κ. 12. Να γραφεί πρόγραµµα που θα εµφανίζει την 5η στήλη και κατόπιν την 8η γραµµή ενός πίνακα ΝΧΜ. 13. Να γραφεί πρόγραµµα που θα εµφανίζει τα στοιχεία των δυο διαγωνίων ενός πίνακα Κ Χ Κ. 14. Να γραφεί πρόγραµµα που θα υπολογίζει το άθροισµα της 5ης στήλης ενός πίνακα 10 Χ 10. 15. Να γραφεί πρόγραµµα το οποίο θα διαβάζει έναν πίνακα Ν Χ Ν και θα εµφανίζει το άθροισµα των τετραγώνων των στοιχείων της 3ης γραµµής του. 16. Να γραφεί πρόγραµµα το οποίο θα διαβάζει έναν πίνακα Ν Χ Μ ακεραίων αριθµών, και θα δηµιουργεί έναν δεύτερο πίνακα Ν Χ Μ κάθε στοιχείο του οποίου είναι το διπλάσιο του αντιστοίχου στοιχείου του πρώτου πίνακα. 17. 18. 19. Να γραφεί πρόγραµµα που θα δηµιουργεί τον ακόλουθο δισδιάστατο πίνακα: 1 10 10 10 10 20 1 10 10 10 20 20 1 10 10 20 20 20 1 10 20 20 20 20 1 Να γραφεί πρόγραµµα που θα δηµιουργεί τον ακόλουθο δισδιάστατο πίνακα: α β α β β α β α α β α β β α β α ∆ίνεται το παρακάτω τµήµα αλγορίθµου: No5 για ι από 1 µέχρι Ν για κ από 1 µέχρι Ν αν ι = κ ή ι+κ = Ν + 1 τότε A[ι, κ] o 1 αλλιώς A[ι, κ] o 0 Τέλος_αν Τέλος_επανάληψης Τέλος_επανάληψης Να σχεδιάσετε τον πίνακα Α συµπληρωµένο, όπως θα είναι µετά την εκτέλεση αυτού του τµήµατος αλγορίθµου. 20. Να γραφεί πρόγραµµα το οποίο θα ανταλλάσσει τα στοιχεία της 4ης και 5ης γραµµής ενός πίνακα 10 Χ 12. 21. Ένας δισδιάστατος πίνακας Ν Χ Ν λέγεται τριγωνικός κάτω αν όλα τα στοιχεία πάνω Κουτσοδόντης Αναστάσιος Σελίδα 19 Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Κεφάλαιο 9ο από την κύρια διαγώνιο είναι µηδέν. Να γραφεί πρόγραµµα που θα ελέγχει αν ένας πίνακας Ν Χ Ν είναι τριγωνικός κάτω. 22. Να γραφεί πρόγραµµα που να διαβάζει έναν πίνακα Ν Χ Ν και θα ελέγχει αν το άθροισµα των στοιχείων πάνω από την κύρια διαγώνιο ισούται µε το άθροισµα των στοιχείων κάτω από την κύρια διαγώνιο. 23. Να γίνει πρόγραµµα που να διαβάζει τα περιεχόµενα δύο πινάκων Α και Β οι οποίοι έχουν 20 γραµµές και 40 στήλες και στη συνέχεια να εµφανίζει τα στοιχεία ενός πίνακα Γ τα οποία προκύπτουν από το άθροισµα των αντίστοιχων στοιχείων των πινάκων Α και Β. 24. Να γίνει αλγόριθµος ο οποίος θα διαβάζει τα στοιχεία δύο πινάκων Α και Β µε διαστάσεις 15 γραµµών και 20 στηλών. Στη συνέχεια θα δηµιουργεί έναν νέο πίνακα Γ µε 15 γραµµές και 40 στήλες, στον οποίο στις θέσεις που βρίσκονται στις πρώτες 20 στήλες θα καταχωρεί τα στοιχεία του πίνακα Α και στις στήλες 21 µέχρι και 40 θα καταχωρεί τα στοιχεία του πίνακα Β. 25. Να γίνει αλγόριθµος ο οποίος θα διαβάζει 45 πραγµατικούς αριθµούς και θα τους καταχωρεί σ' έναν µονοδιάστατο πίνακα Α µε 45 θέσεις. Στη συνέχεια θα δηµιουργεί έναν νέο πίνακα Β µε 15 γραµµές και 3 στήλες, στον οποίο στην πρώτη στήλη θα καταχωρήσει τους πρώτους 15 αριθµούς, στη δεύτερη στήλη τους επόµενους 15 και στην τρίτη στήλη τους 15 τελευταίους αριθµούς του πίνακα Α. Για παράδειγµα, για έναν τυχαίο πίνακα Α µε 9 θέσεις θα είχαµε: 6 1 8 5 4 12 0 7 14 6 1 8 5 4 12 0 7 14 > 26. Να γίνει αλγόριθµος που θα δέχεται τα στοιχεία ενός πίνακα 10 γραµµών και 20 στηλών και θα δηµιουργεί έναν νέο πίνακα 20 στηλών και 10 γραµµών ο οποίος θα είναι ο πρώτος πίνακας περιστρεφόµενος κατά 90 µοίρες προς τα δεξιά. Για παράδειγµα αν είχαµε τον πίνακα θα προέκυπτε ο πίνακας: 8 5 4 4 5 2 1 0 11 6 5 5 6 9 2 7 7 9 2 8 11 7 2 4 2 2 1 4 7 0 27. Να γίνει αλγόριθµος που θα δέχεται τα στοιχεία ενός πίνακα 10 γραµµών και 20 στηλών και θα δηµιουργεί έναν νέο πίνακα 10 γραµµών και 20 στηλών ο οποίος θα είναι ο πρώτος πίνακας περιστρεφόµενος κατά 180 µοίρες προς τα δεξιά. Για παράδειγµα αν είχαµε τον πίνακα θα προέκυπτε ο πίνακας: 4 5 8 5 6 11 2 9 7 1 2 2 0 7 4 4 7 0 2 2 1 7 9 2 11 6 5 8 5 4 28. Να γίνει πρόγραµµα που θα δέχεται τις θερµοκρασίες δύο πόλεων Α και Β για διάστηµα 30 ηµερών και στη συνέχεια θα υπολογίζει πόσες µέρες η θερµοκρασία της πόλης Α ήταν µεγαλύτερη από την αντίστοιχη θερµοκρασία της πόλης Β. 29. Ένας πίνακας θεωρείται αραιός αν το ποσοστό των µηδενικών του στοιχείων υπερβαίνει το 80%. Να γραφεί πρόγραµµα που θα ελέγχει αν ένας πίνακας 100 Χ Ι00 είναι Κουτσοδόντης Αναστάσιος Σελίδα 20 Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Κεφάλαιο 9ο αραιός. 30. Ένας δισδιάστατος πίνακας λέγεται συµµετρικός αν ισχύει Π[ι, κ] = Π[κ, ι] για κάθε ι, κ, όπου ι είναι ο αριθµός γραµµής και κ ο αριθµός στήλης. Να γραφεί πρόγραµµα που θα ελέγχει αν ένας πίνακας Ν Χ Ν είναι συµµετρικός. Ένας δισδιάστατος πίνακας λέγεται τριδιαγώνιος αν τα µόνα µη µηδενικά στοιχεία 31. είναι αυτά για τα οποία ισχύει ι = κ ή ι - κ = 1 ή κ - ι = 1, όπου ι είναι ο αριθµός γραµµής και κ ο αριθµός στήλης. Να γραφεί πρόγραµµα που θα ελέγχει αν ένας πίνακας Ν Χ Ν είναι τριδιαγώνιος. 32. Να γραφεί πρόγραµµα που θα διαβάζει έναν πίνακα 100 Χ 100 και θα υπολογίζει το πλήθος των άρτιων και το πλήθος των περιττών στοιχείων ανά γραµµή. 33. Μια τάξη ενός σχολείου αποτελείται από 6 τµήµατα 25 παιδιών το καθένα. Να γίνει πρόγραµµα που θα δέχεται τον βαθµό του απολυτηρίου κάθε µαθητή κάθε τµήµατος και θα εµφανίζει τον µεγαλύτερο και τον µικρότερο βαθµό που παρατηρήθηκε στο σχολείο. 34. Να γραφεί πρόγραµµα όπου για έναν πίνακα Ν Χ Μ, να βρίσκει τη γραµµή µε το µεγαλύτερο άθροισµα και την στήλη µε το µικρότερο άθροισµα. 35. Σε ένα εργαστήριο του Πολυτεχνείου Αθηνών καταγράφουν για πέντε µεγάλες λεωφόρους των Αθηνών πόσα αυτοκίνητα περνούν από ένα συγκεκριµένο σηµείο ανά λεπτό. Στη διάρκεια µιας ηµέρας έγιναν 10 µετρήσεις για κάθε λεωφόρο. Να γραφεί πρόγραµµα το οποίο θα διαβάζει τα ονόµατα των δρόµων και τις µετρήσεις και θα τις αποθηκεύει στις κατάλληλες δοµές δεδοµένων. Στη συνέχεια θα υπολογίζει και θα τυπώνει το όνοµα της λεωφόρου και τη µέση τιµή των αυτοκινήτων που πέρασαν από κάθε λεωφόρο ανά λεπτό. 36. Ένα περιβαλλοντικό εργαστήρι για 30 µέρες καταγράφει τις τιµές του διοξειδίου του άνθρακα σε 5 περιοχές τις Αθήνας. Να γίνει πρόγραµµα που θα διαβάζει τα ονόµατα των περιοχών της Αθήνας, αυτές τις τιµές και θα υπολογίζει: ¾ τη µέρα µε την µικρότερη µέση τιµή διοξειδίου του άνθρακα και ¾ το όνοµα της περιοχής µε την µεγαλύτερη µέση τιµή διοξειδίου του άνθρακα. 37. Να γραφεί πρόγραµµα που θα διαβάζει τους βαθµούς στα µαθηµατικά 10 τµηµάτων, 30 µαθητών το καθένα. Το πρόγραµµα θα υπολογίζει το ποσοστό των µαθητών, ανά τµήµα, µε βαθµό κάτω από τη βάση (9.5). 38. Η Γ τάξη ενός λυκείου αποτελείται από 6 τµήµατα των 30 µαθητών. Να γραφεί πρόγραµµα που θα διαβάζει τους βαθµούς των µαθηµατικών των µαθητών αυτών και θα υπολογίζει το: a µέσο όρο των βαθµών κάθε τµήµατος b µέσο όρο των βαθµών όλων των µαθητών c το τµήµα µε το µεγαλύτερο άθροισµα των βαθµών d το τµήµα όπου βρίσκεται ο µαθητής µε το µεγαλύτερο βαθµό 39. Να γραφεί πρόγραµµα που θα αποθηκεύει στην κατάλληλη δοµή δεδοµένων τις θερµοκρασίες 10 πόλεων της Ελλάδας για τις 30 ηµέρες ενός µήνα και θα υπολογίζει τη µέση θερµοκρασία ανά πόλη, καθώς επίσης και την µέγιστη και την ελάχιστη θερµοκρασία ανά πόλη και ανά ηµέρα. 40. Σε δυο πίνακες υπάρχουν τα µοντέλα Ν υπολογιστών και οι τιµές τους. Να γραφεί πρόγραµµα το οποίο θα εµφανίζει το φθηνότερο και ακριβότερο µοντέλο υπολογιστή. 41. Ένας µαθητής της Α' Ενιαίου Λυκείου επιθυµεί να υπολογίσει τον τελικό µέσο όρο στα 9 κυριότερα µαθήµατά του. Για τον υπολογισµό του µέσου όρου κάθε µαθήµατος, λαµβάνονται υπόψη οι βαθµοί των 2 τετραµήνων και ο βαθµός της τελικής γραπτής εξέτασης. Να γραφεί πρόγραµµα το οποίο θα διαβάζει τους 3 βαθµούς για τα 9 µαθήµατα, θα τους αποθηκεύει σε έναν πίνακα 9 Χ 3 και θα υπολογίζει το µέσο όρο ανά µάθηµα, καθώς και τον µέσο όρο στα 9 µαθήµατα. Κουτσοδόντης Αναστάσιος Σελίδα 21 Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Κεφάλαιο 9ο 42. Έστω ότι ο κατάλογος των µουσείων της πόλης σας υπάρχει αποθηκευµένος σε έναν πίνακα το οποίο περιέχει το όνοµα κάθε µουσείου. Έστω ότι κάποιος επισκέπτης θέλει να µάθει εάν κάποιο συγκεκριµένο µουσείο (π.χ. Λαογραφικό) υπάρχει στην πόλη σας. Να γραφεί ο πρόγραµµα το οποίο θα επιτρέπει την αναζήτηση ενός συγκεκριµένου µουσείου από αυτόν τον πίνακα. 43. Να γίνει πρόγραµµα που θα δέχεται το όνοµα, τη διεύθυνση και το εισόδηµα 1000 κατοίκων που ζουν σε µια επαρχιακή πόλη. Στη συνέχεια, το πρόγραµµα να δέχεται είτε το όνοµα είτε τη διεύθυνση ενός κατοίκου και θα αναζητεί όλους τους κατοίκους που έχουν αυτό το όνοµα ή αυτή τη διεύθυνση. Αν βρεθούν κάποιοι, τότε να µας εµφανίζει όλες τις πληροφορίες τους (όνοµα, διεύθυνση και εισόδηµα). 44. Ο ∆/ντης µιας σχολικής οµάδας επιθυµεί να γράψει έναν αλγόριθµο για τη διαχείριση των στοιχείων των καθηγητών του. Τα στοιχεία που επιθυµεί να καταγράψει για κάθε καθηγητή είναι το πλήρες όνοµα, το τηλέφωνο και η ειδικότητα. Αφού αποθηκευτούν τα στοιχεία των 25 καθηγητών σε τρεις µονοδιάστατους πίνακες, επιθυµεί να µπορεί να κάνει αναζήτηση βάσει του ονόµατος ή βάσει της ειδικότητας. Έτσι, το πρόγραµµα πρέπει να τον ρωτά βάσει ποιου στοιχείου θέλει να κάνει αναζήτηση, να ενεργεί ανάλογα και να εµφανίζει όλους τους καθηγητές που πληρούν τα κριτήρια αναζήτησης. 45. Ένα βιντεοκλάµπ έχει έναν αριθµό από ταινίες. Για κάθε ταινία κράτα σε δυο πίνακες τον τίτλο της και την χρονιά έκδοσής της. Να εµφανίζεται η χρονιά έκδοσης και ο τίτλος της πιο παλιάς ταινίας καθώς και η χρονιά έκδοσης και ο τίτλος της πιο νέας ταινίας. 46. Σε µια λαχειοφόρο αγορά, αγόρασαν λαχνούς 1200 άτοµα. Για κάθε άτοµο καταγράφουµε σε έναν αλγόριθµο το όνοµά του και το νούµερο του λαχνού του. Το πρόγραµµα θα πρέπει να δίνει τη δυνατότητα να διαβάζονται τα νούµερα των 10 κερδοφόρων λαχνών και να εµφανίζονται τα ονόµατα των κατόχων των λαχνών. ∆ηλ. θα διαβάζεται για παράδειγµα το νούµερο 134897 και θα εµφανίζεται ο κάτοχος του λαχνού. Κατόπιν θα διαβάζεται ο δεύτερος λαχνός και θα εµφανίζεται ο δεύτερος νικητής, Κ.Ο.Κ. 47. Να γραφεί πρόγραµµα που να υπολογίζει το µικρότερο άρτιο αριθµό ενός πίνακα 100 ακεραίων αριθµών. 48. Να γραφεί πρόγραµµα που θα εισάγονται 200 ακέραιες βαθµολογίες (0 έως 20) σε ένα µονοδιάστατο πίνακα και να υπολογίζει την συχνότητα εµφάνισης των βαθµών στον πίνακα. 49. Σε έναν διαγωνισµό του δηµοσίου οι 255 πτυχιούχοι υποψήφιοι κατατάσσονται µε βάση τα συνολικά µόρια τα οποία λαµβάνουν. Για κάθε υποψήφιο είναι απαραίτητα να γνωρίζουµε το όνοµά του, τον τίτλο σπουδών του (Πτυχίο(Π): 2 µόρια, Μεταπτυχιακό(Μ): 3 µόρια, ∆ιδακτορικό(∆): 5 µόρια) και το επίπεδο γνώσης των Αγγλικών (Καλή(Κ): 1 µόριο, Πολύ καλή(Π): 2 µόρια, Άριστη(Α): 3 µόρια). Να γραφεί πρόγραµµα το οποίο θα: a. διαβάζει τα στοιχεία των υποψηφίων να τα καταχωρεί σε τρεις µονοδιάστατους πίνακες, b. δηµιουργεί έναν νέο πίνακα που θα περιέχει τα συνολικά µόρια για κάθε υποψήφιο, c. εµφανίζει τους 32 πρώτους που καταλαµβάνουν τις θέσεις του διαγωνισµού. 50. Να γραφεί πρόγραµµα το οποίο θα διαβάζει τα ονόµατα Ν πελατών ενός µαγαζιού καθώς και τα χρήµατα που ξόδεψαν στη διάρκεια ενός µήνα. Να εµφανίζονται τα ονόµατα των 10 καλύτερων πελατών καθώς και τα χρήµατα που ξόδεψαν στο µαγαζί. Σε όποιον από τους 10 πελάτες έχει ξοδέψει πάνω από 500 € τον τρέχοντα µήνα, θα αποστέλλεται µια ευχαριστήρια κάρτα και µια κάρτα έκπτωσης στις επόµενες αγορές. Ο πρόγραµµα λοιπόν πρέπει να ενηµερώνει τον καταστηµατάρχη για αυτούς που δικαιούνται τις δυο κάρτες. 51. ∆ίνεται ο ακόλουθος κατάλογος τηλεοράσεων διαφόρων διαστάσεων και διαφόρων κατασκευαστών: Κουτσοδόντης Αναστάσιος Σελίδα 22 Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Κεφάλαιο 9ο Sony Philips Sharp B&O Τηλεόραση 16" Τηλεόραση 20" Τηλεόραση 25" Τηλεόραση 28" Στα κενά κουτάκια του καταλόγου αναγράφονται οι τιµές για κάθε είδος τηλεόρασης. Να γραφεί πρόγραµµα το οποίο θα διαβάζει τις τιµές για κάθε είδος ανά µοντέλο τηλεόρασης. Κατόπιν να εντοπίζει και να τυπώνει το µοντέλο της φθηνότερης τηλεόρασης ανά µέγεθος (ίντσες). Παρατήρηση: Υποθέτουµε ότι όλες οι τιµές είναι µεταξύ τους διαφορετικές 52. Σ' ένα Λύκειο η Γ' τάξη έχει 120 µαθητές. Οι βαθµοί και τα ονόµατα καταχωρούνται σε δύο πίνακες. Στον ένα µονοδιάστατο πίνακα µε όνοµα Ονόµατα καταχωρούνται τα ονοµατεπώνυµα των µαθητών και στον άλλον δισδιάστατο πίνακα µε όνοµα Βαθµολογίες και κατ' αντιστοιχία θέσεων οι βαθµοί σε 9 µαθήµατα των µαθητών. Έτσι αν στη θέση ί του πίνακα Ονόµατα υπάρχει το ονοµατεπώνυµο κάποιου µαθητή, στην αντίστοιχη θέση ί του πίνακα Βαθµολογίες υπάρχουν οι βαθµολογίες του ίδιου µαθητή σε 9 µαθήµατα. Να γραφεί πρόγραµµα όπου: i να διαβάζει τα στοιχεία των δύο πινάκων ii να υπολογίζει τον µέσο όρο βαθµολογίας του κάθε µαθητή, iii να υπολογίζει τον µέσο όρο βαθµολογίας στο κάθε µάθηµα, iv να ταξινοµεί τους µαθητές κατά σειρά βαθµολογίας v να τυπώνει τα ονόµατα των τριών πρώτων 53. Να γραφεί πρόγραµµα το οποίο θεωρώντας ως δεδοµένους δυο ταξινοµηµένους πίνακες Α και Β, Ν και Μ θέσεων αντίστοιχα, να συγχωνεύει τα στοιχεία τους σε ένα νέο ταξινοµηµένο πίνακα Ν+Μ θέσεων. 54. Κατά τη διάρκεια ∆ιεθνών Αγώνων Στίβου στον ακοντισµό έλαβαν µέρος δέκα (10) αθλητές. Κάθε αθλητής έκανε έξι (6) έγκυρες ρίψεις που καταχωρούνται ως επιδόσεις σε µέτρα. Να αναπτύξετε πρόγραµµα, το οποίο: vi εισάγει σε πίνακα δύο διαστάσεων τις επιδόσεις όλων των αθλητών και σε πίνακα µιας διάστασης τα ονόµατα τους. vii υπολογίζει και καταχωρεί σε µονοδιάστατο πίνακα την καλύτερη από τις επιδόσεις κάθε αθλητή viii ταξινοµεί τις καλύτερες επιδόσεις των αθλητών που καταχωρήθηκαν στο µονοδιάστατο πίνακα ix να τυπώνει τα ονόµατα των καλύτερων αθλητών που πήραν τα 3 µετάλλια και τις επιδόσεις τους. Παρατήρηση: Υποθέτουµε ότι όλες οι επιδόσεις είναι µεταξύ τους διαφορετικές 55. Σε έναν πίνακα Ν Χ 2 καταχωρούνται οι αριθµητικοί κωδικοί των λυκείων της χώρας καθώς και το ποσοστό επιτυχιών τους στις Πανελλήνιες εξετάσεις. Με τη βοήθεια της ταξινόµησης φυσαλίδας, να ταξινοµήσετε τα Λύκεια µε βάση το ποσοστό επιτυχιών τους. 56. Μια αλυσίδα ξενοδοχείων έχει 5 ξενοδοχεία. Σε ένα µονοδιάστατο πίνακα ΞΕΝΟ∆ΟΧΕΙΑ[5] καταχωρούνται τα ονόµατα των ξενοδοχείων. Σε ένα άλλο δισδιάστατο πίνακα ΕΙΣΠΡΑΞΕΙΣ[5,12] καταχωρούνται οι εισπράξεις κάθε ξενοδοχείου για κάθε µήνα του έτους 2001, έτσι ώστε στην i γραµµή καταχωρούνται οι εισπράξεις του i ξενοδοχείου. Να αναπτύξετε αλγόριθµο, ο οποίος: x διαβάζει τα στοιχεία των δύο πινάκων Κουτσοδόντης Αναστάσιος Σελίδα 23 Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Κεφάλαιο 9ο xi εκτυπώνει το όνοµα κάθε ξενοδοχείου και τις ετήσιες εισπράξεις του για το έτος 2001 xii εκτυπώνει το όνοµα του ξενοδοχείου µε τις µεγαλύτερες εισπράξεις για το έτος 2001. xiii εκτυπώνει το όνοµα του ξενοδοχείου και τον µήνα, µε τις µικρότερες εισπράξεις. xiv εκτυπώνει τα ονόµατα των ξενοδοχείων κατά σειρά εισπράξεων για το έτος 2001. 57. Να γραφεί πρόγραµµα το οποίο θα διαβάζει έναν πίνακα 50 Χ 50. Στη συνέχεια θα ζητά έναν αριθµό από 1 ως 50 (αν ο αριθµός δεν είναι µεταξύ του 1 και του 50 να ζητείται επαναληπτικά µέχρι να δοθεί αποδεκτό νούµερο) και θα δηµιουργεί έναν 2ο πίνακα 49 Χ 49 στον οποίο θα έχουν αντιγραφεί τα στοιχεία του πρώτου πίνακα, πλην των στοιχείων που βρίσκονται στη γραµµή και την στήλη που αντιστοιχεί στον αριθµό εισόδου. 58. Μια εταιρεία στατιστικών ερευνών, ρώτησε τη γνώµη 200 ατόµων για 10 θέµατα. Να γραφεί πρόγραµµα το οποίο θα διαβάζει κάθε ερώτηµα καθώς και τις απαντήσεις των 200 ατόµων. Οι απαντήσεις είναι: Ν (ΝΑΙ), Ο (ΌΧΙ), ∆Ξ/∆Α (∆ΕΝ ΞΕΡΩ / ∆ΕΝ ΑΠΑΝΤΩ). Αφού αποθηκεύσει τα στοιχεία στους κατάλληλους πίνακες να εµφανίζει κάθε ερώτηµα µαζί µε το ποσοστό των τριών διαφορετικών απαντήσεων. 59. Να γραφεί πρόγραµµα όπου θα δίνονται οι ακέραιες βαθµολογίες µιας τάξης Ν µαθητών στο µάθηµα των µαθηµατικών στα γραπτά των πανελλαδικών εξετάσεων το 2003. Στη συνέχεια να υπολογίζει και να εµφανίζει όλους τους βαθµούς (1 έως 20 ) και την αντίστοιχη συχνότητα τους. Κουτσοδόντης Αναστάσιος Σελίδα 24 Σηµειώστε αν είναι σωστή ή λανθασµένη καθεµιά από τις παρακάτω προτάσεις βάζοντας σε κύκλο το αντίστοιχο γράµµα Σ ή Λ. Το αποτέλεσµα της επεξεργασίας των δεδοµένων είναι η πληροφορία. Η πληροφορική µελετά τα δεδοµένα και από την πλευρά των δοµών δεδοµένων. ∆οµή ∆εδοµένων είναι ένα σύνόλο δεδοµένων τα οποία υφίστανται επεξεργασία από λειτουργίες. Οι βασικές λειτουργίες επί των δοµών δεδοµένων είναι οκτώ. Κάθε δοµή µπορεί να χρησιµοποιηθεί σε οποιοδήποτε πρόβληµα ή εφαρµογή. Η εξαγωγή είναι βασική λειτουργία µιας δοµής δεδοµένων. Υπάρχουν δυο κατηγορίες δοµών δεδοµένων : οι στατικές και οι δυναµικές. Η τακτοποίηση των κόµβων µίας δοµής µε µία ιδιαίτερη σειρά είναι µία ιδιαίτερη σηµαντική λειτουργία που ονοµάζεται εξαγωγή. Οι στατικές δοµές δεδοµένων στηρίζονται στην τεχνική της δυναµικής παραχώρησης µνήµης. Οι δυναµικές δοµές δεδοµένων αποθηκεύονται σε συνεχόµενες θέσεις µνήµης. Οι πίνακες χρησιµεύουν για την αποθήκευση και διαχείριση τριών βασικών δοµών : της αναδροµής, της στοίβας και της ουράς. Τα δεδοµένα ενός πίνακα πρέπει να είναι του ιδίου τύπου. Ένας πίνακας έχει σταθερό αριθµό κόµβων. Αν Π µονοδιάστατος πίνακας 5 θέσεων, η εντολή ΓΡΑΨΕ Π εµφανίζει τις τιµές των στοιχείων του. Για την εισαγωγή στοιχείων σε ένα πίνακα χρησιµοποιούµε συνήθως µια δοµής επανάληψης Όσο. .. επανάλαβε. Για το διάβασµα ενός δισδιάστατου πίνακα χρησιµοποιούµε µια επανάληψη. Ένας δισδιάστατος πίνακας 3χ5 έχει 3 γραµµές και 5 στήλες. Yπoχεiλιση της στοίβας είναι η περίπτωση που προσπαθούµε να ωθήσουµε ένα στοιχείο σε µια γεµάτη στοίβα. Η µέθοδος επεξεργασίας της στοίβας ονοµάζεται FIFO. Οι βασικές λειτουργίες µιας ουράς είναι η ώθηση και η απώθηση Σ στοιχείων. Μια ουρά διατηρεί τα δεδοµένα ταξινοµηµένα ως προς τη σειρά άφιξής τους. Η σειριακή αναζήτηση εφαρµόζεται όταν ο πίνακας είναι ταξινοµηµένος. . Ο πιο αποδοτικός αλγόριθµος αναζήτησης είναι η σειριακή αναζήτηση. Η ταξινόµηση φυσαλίδας εφαρµόζεται σε δισδιάστατους πίνακες. Η µέθοδος της ταξινόµησης ευθείας ανταλλαγής βασίζεται στην αρχή της σύγκρισης και ανταλλαγής ζευγών γειτονικών στοιχείων, µέχρις ότου διαταχθούν όλα τα στοιχεία. ΕΡΩΤΗΣΕΙΣ ΕΠΙΛΟΓΗΣ Να επιλέξετε τη σωστή απάντηση, βάζοντας σε κύκλο το κατάλληλο γράµµα. Ποιο από τα ακόλουθα δεν ανήκει στις λειτουργίες µιας δοµής δεδοµένων; α) Επιλογή β) Εισαγωγή γ) Προσπέλαση δ) ∆ιαχωρισµός Ποιο από τα ακόλουθα τµήµατα αλγορίθµων εµφανίζουν τα στοιχεία ενός πίνακα 10 θέσεων; α) γ) β) Για ί από 1 µέχρι 10 µε βήµα 2 Εµφάνισε Π[ί] Τέλος_επανάληψης Για ί από 1 µέχρι 10 Εµφάνισε Π[ί, j] Τέλος_επανάληψης Για ί από 10 µέχρι 1 µε βήµα -1 Εµφάνισε Π[ί] Τέλος_επανάληψης δ) Για ί από 1 µέχρι 2 Για j από 1 µέχρι 5 Εµφάνισε Π[ί, j] Τέλος_επανάληψης Τέλος_επανάληψης Ποιο από τα ακόλουθα τµήµατα αλγορίθµων υπολογίζουν το µέσο όρο των στοιχείων ενός πίνακα Ν θέσεων; α) Για ί από Ι µέχρι Ν άθροισµα Å άθροισµα + Π[ί] Τέλος_επανάληψης ΜΟ Å άθροισµα / N γ) άθροισµα Å0 Για ί από Ι µέχρι Ν άθροισµα Å άθροισµα + Π[ί] Τέλος_επανάληψης ΜΟ Å άθροισµα / N β) άθροισµα Å0 Για ί από Ι µέχρι Ν-Ι άθροισµα Å άθροισµα + Π[ί] Τέλος_επανάληψης ΜΟ Å άθροισµα / N δ) άθροισµα Å1 Για ί από Ι µέχρι Ν άθροισµα Å άθροισµα + Π[ί] Τέλος_επανάληψης ΜΟ Å άθροισµα / N Τι εµφανίζει το ακόλουθο τµήµα αλγόριθµου, αν Π πίνακας Ν στοιχείων; γ Å Π[ί] ^ 2 Για ί από 2 µέχρι Ν γ Å γ + Π[ί] ^ 2 Τέλος_επανάληψης Γράψε γ / Ν α) Το άθροισµα των τετραγώνων των στοιχείων του πίνακα β) Το γινόµενο των τετραγώνων των στοιχείων του πίνακα γ) Το µέσο όρο του αθροίσµατος των τετραγώνων των στοιχείων του πίνακα δ) Το άθροισµα των τετραγώνων των Ν-Ι τελευταίων στοιχείων του πίνακα Το πλήθος των στοιχείων ενός δισδιάστατου πίνακα 3 γραµµών και 8 στηλών είναι α) 3 β) 8 γ) 11 δ) 24 Το στοιχείο που βρίσκεται στη 2η γραµµή και 5η στήλη ενός πίνακα µε όνοµα Α συµβολίζεται ως: β) Α[2], [5] γ) Α[2, 5] δ) Α[2]Α[5] α) Α[2 ... 5] Ποιο από τα ακόλουθα τµήµατα αλγορίθµων εµφανίζουν τα στοιχεία της 3ης γραµµής ενός πίνακα 3 Χ 4; α) Για ί από 1 µέχρι 4 Εµφάνισε Π[3, ί] Τέλος_επανάληψης β) Για ί από 1 µέχρι 4 Εµφάνισε Π[ί, 3] Τέλος_επανάληψης γ) Για ί από 1 µέχρι 3 Για j από 1 µέχρι 4 Αν ί = j τότε Εµφάνισε Π[ί, j] Τέλος_αν Τέλος_επανάληψης Τέλος_επανάληψης Για ί από 1 µέχρι 3 Για j από 1 µέχρι 4 δ) Εµφάνισε Π[ί, j] Τέλος_επανάληψης Τέλος_επανάληψης Τι εµφανίζει το ακόλουθο τµήµα αλγόριθµου, αν ο Π πίνακας Ν Χ Μ στοιχείων; Για ί από 1 µέχρι Μ Εµφάνισε Π[4, ί] Τέλος_επανάληψης α) Τα στοιχεία της 4ης στήλης του πίνακα β) Τα στοιχεία της κυρίας διαγωνίου του πίνακα γ) Τα στοιχεία της δευτερεύουσας διαγωνίου του πίνακα δ) Τα στοιχεία της 4ης γραµµής του πίνακα Το φαινόµενο κατά το οποίο προσπαθούµε να εισάγουµε στοιχεία σε µια γεµάτη στοίβα ονοµάζεται α) Υποχείλιση γ) Απώθηση β) Ώθηση δ) Υπερχείλιση Η σειριακή µέθοδος αναζήτησης δικαιολογεί τη χρήση της µόνο όταν α) ο πίνακας είναι δισδιάστατος β) ο πίνακας αποτελείται από ακέραιους γ) ο πίνακας είναι αταξινόµητος δ) η αναζήτηση περιορίζεται στα πρώτα στοιχεία του πίνακα ΕΡΩΤΗΣΕΙΣ ΣΥΜΠΛΗΡΩΣΗΣ ΚΕΝΟΥ Να συµπληρώσετε τα κενά των παρακάτω προτάσεων ή αλγορίθµων βάζοντας την κατάλληλη λέξη ή σύµβολο. Οι δοµές δεδοµένων διακρίνονται σε................................. και ...................... . Η................................. είναι η πράξη κατά την οποία όλοι οι κόµβοι ή µερικοί από τους κόµβους µίας δοµής αντιγράφονται σε µία άλλη δοµή. Η................................. είναι η πράξη κατά την οποία δύο ή περισσότερες δοµές συνενώνονται σε µία ενιαία δοµή. Ο................................. αποτελεί την αντίστροφη πράξη της συγχώνευσης. Οι πίνακες µε µια γραµµή ονοµάζονται ................................ . Οι πίνακες είναι .................................δοµές δεδοµένων. Ένας δισδιάστατος πίνακας λέγεταιόταν ο αριθµός των γραµµών ισούται µε τον αριθµό των στηλών. Για να αθροίσουµε δυο πίνακες πρέπει να έχουν τις ίδιες ................. ∆υο µέθοδοι αναζήτησης στοιχείων σε πίνακα είναι η... ... ......................... και η αναζήτηση. ∆ύο είναι οι κύριες λειτουργίες σε µία στοίβα: η ………………… στοιχείου στην κορυφή της στοίβας και η …………………………… στοιχείου από τη στοίβα. ∆ύο είναι οι κύριες λειτουργίες σε µία ουρά: η ................................ στοιχείου στο πίσω άκρο της ουράς και η ………………………….. στοιχείου από το εµπρός άκρο της ουράς. Να συµπληρωθούν οι ακόλουθοι αλγόριθµοι έτσι ώστε να υπολογίζουν το άθροισµα ενός µονοδιάστατου πίνακα Ν θέσεων. Αλγόριθµος Α1 ∆εδοµένα // Ν, Π // αÅ0 Για ψ από 1 µέχρι …. …..Å …..+ Π[…] Τέλος_επανάληψης Εµφάνισε α Αλγόριθµος Α2 ∆εδοµένα // Π // ΑθρÅ0 Για ζ από Ν µέχρι ... µε βήµα … ….. Å …+ Π[..] Τέλος_επανάληψης Εµφάνισε αθρ Τελος Α1 Τελος Α2 Να συµπληρωθούν οι ακόλουθοι αλγόριθµοι ώστε να εµφανίζουν τα στοιχεία της 4ης στήλης ενός πίνακα 3 Χ 5. Αλγόριθµος Α1 ∆εδοµένα // Π // Αλγόριθµος Α2 ∆εδοµένα // Π // Για ί από 1 µέχρι... Για ζ από Ν µέχρι ... Για ψ από 1 µέχρι …. Εµφάνισε Π[… , ….] Τέλος_επανάληψης Τελος Α1 Αν ... = …. τότε Εµφάνισε Π[ι, ζ] Τέλος_επανάληψης Τέλος_επανάληψης Τελος Α2
© Copyright 2024 Paperzz