Πίνακες - Παραδείγματα / Ασκήσεις (2.2.8)

2.2.8 Βασικές αλγοριθμικές λειτουργίες σε δομές δεδομένων

Τα δεδομένα μπορεί να είναι απλές μεταβλητές, οι οποίες λαμβάνουν μία τιμή κάθε φορά (απλά δεδομένα) ή μπορούν να αποθηκεύονται ως μία δομή δεδομένων.
Δομή δεδομένων (data structure) είναι ένα σύνολο αποθηκευμένων δεδομένων, τα οποία είναι έτσι οργανωμένα, ώστε να υπόκεινται σε συγκεκριμένες απαιτούμενες επεξεργασίες.
Κάθε δομή δεδομένων αποτελείται, στην πιο γενική της μορφή, από ένα σύνολο στοιχείων ή κόμβων.
Οι βασικές λειτουργίες ή πράξεις επί των δομών δεδομένων είναι οι ακόλουθες:

  • Προσπέλαση (access), πρόσβαση σε δεδομένα με σκοπό την ανάγνωση ή εγγραφή ή μετακίνηση.
  • Ανάκτηση (retrieval), η με οποιονδήποτε τρόπο λήψη (ανάγνωση) του περιεχομένου ενός κόμβου.
  • Αναζήτηση (searching) ενός συνόλου στοιχείων δεδομένων προκειμένου να εντοπιστούν ένα ή περισσότερα στοιχεία, που έχουν μια δεδομένη ιδιότητα.
  • Εισαγωγή (insertion), η προσθήκη ή δημιουργία νέων κόμβων σε μια υπάρχουσα δομή.
  • Μεταβολή ή τροποποίηση (modification), η αλλαγή του περιεχομένου ενός κόμβου.
  • Διαγραφή (deletion) ή ακύρωση που συνιστά το αντίθετο της εισαγωγής.
  • Ταξινόμηση (sorting), όπου τα στοιχεία μιας δομής διατάσσονται κατά αύξουσα ή φθίνουσα τάξη.
  • Συγχώνευση (merging), κατά την οποία δύο ή περισσότερες ταξινομημένες δομές συνενώνονται σε μια ενιαία δομή.
  • Προσάρτηση (append), κατά την οποία μία δομή επικολλάται στο τέλος μιας άλλης.
  • Αντιγραφή (copying), κατά την οποία δημιουργείται ένα αντίγραφο μίας δομής.

Οι δομές δεδομένων είναι πολύ στενά συνδεδεμένες με την έννοια του αλγορίθμου. Είναι πολύ χαρακτηριστική η ακόλουθη «σχέση» που διατύπωσε ο Νικλάους Βιρθ (Niklaus Wirth), δημιουργός της γλώσσας Pascal:

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



Η πιο συνηθισμένη και απλή δομή δεδομένων είναι ο πίνακας. Οι πίνακες υποστηρίζονται από όλες σχεδόν τις γλώσσες προγραμματισμού. Αποτελούνται από ένα σύνολο ομοειδών απλών στοιχείων. Το μέγεθος ενός πίνακα, δηλαδή το πλήθος των στοιχείων που περιέχει, συνήθως είναι σταθερό και προκαθορισμένο.
Η αναφορά σε ένα στοιχείο του πίνακα γίνεται με τη χρήση ενός συμβολικού ονόματος που έχει αποδοθεί στον πίνακα, μαζί με ένα ή περισσότερα στοιχεία που ονομάζονται δείκτες (indexes). Για παράδειγμα το πέμπτο στοιχείο του πίνακα Α συμβολίζεται με Α[5].

Παράδειγμα #1: Μονοδιάστατος πίνακας A ακεραίων με μέγεθος 10 στοιχείων που περιέχει τα πολλαπλάσια του 10 από το 10 έως το 100. Το στοιχείο με δείκτη 7 συμβολίζεται Α[7] και περιέχει την τιμή 70.

Παράδειγμα #2: Δισδιάστατος πίνακας Β χαρακτήρων με μέγεθος 3x3 στοιχείων (3 γραμμές και 3 στήλες = 9 στοιχεία) που περιέχει γράμματα του αλφαβήτου.
Το στοιχείο στην 3η γραμμή και στην 2η στήλη συμβολίζεται Β[3,2] και περιέχει την τιμή “Θ”

Παράδειγμα 2.23α. Εισαγωγή στοιχείων σε πίνακα: Είσοδος δεδομένων αγνώστου πλήθους.
Στον αλγόριθμο αυτό εισάγονται θετικοί αριθμοί στο μονοδιάστατο πίνακα Α. Δεν είναι γνωστός ο αριθμός των στοιχείων που θα εισαχθούν, αλλά έχει συμφωνηθεί ότι το τέλος της εισαγωγής θα καθοριστεί από την είσοδο ενός αρνητικού αριθμού (ή γενικότερα μιας τιμής που δεν μπορεί να ανήκει στο σύνολο τιμών του πίνακα).

Αλγόριθμος παραδειγμα_2_23α
i  0
Διάβασε K
Όσο K  0 επανάλαβε
  i  i + 1
  A[i]  K
  Διάβασε K
Τέλος_επανάληψης
n  i
Εμφάνισε n
Τέλος παραδειγμα_2_23α

Παράδειγμα 2.23β. Εισαγωγή στοιχείων σε πίνακα: Είσοδος δεδομένων γνωστού πλήθους.
Στον αλγόριθμο αυτό είναι γνωστό το πλήθος n των τιμών που εισάγονται στον πίνακα. Σε αυτή την περίπτωση μπορεί να χρησιμοποιηθεί η εντολή επανάληψης Για … από …μέχρι. Η πιο απλή εκδοχή είναι η επόμενη.

Αλγόριθμος παραδειγμα_2_23β
n  5
Για i από 1 μέχρι n
  Διάβασε Α[i] 
Τέλος_επανάληψης
Τέλος παραδειγμα_2_23β

Παράδειγμα 2.24. Εκτύπωση πίνακα.
Με τον αλγόριθμο αυτό γίνεται η εκτύπωση των στοιχείων του πίνακα Α, καθώς και της θέσης i που υπάρχει το κάθε στοιχείο.
Χρησιμοποιείται η εντολή επανάληψης Για … από …μέχρι και η εντολή Δεδομένα.

Αλγόριθμος παραδειγμα_2_24
Δεδομένα // Α, n // 
Για i από 1 μέχρι n
  Εμφάνισε i, Α[i] 
Τέλος_επανάληψης
Τέλος παραδειγμα_2_24
ΑΡΧΕΙΟ ΕΙΣΟΔΟΥ (ΕΝΔΕΙΚΤΙΚΟ):
[5]
111
222
333
444
555
5

Στο αρχείο εισόδου αρχικά δηλώνεται η διάσταση του πίνακα μέσα σε τετράγωνες αγκύλες (εδώ [5] δηλαδή θα περιέχει 5 στοιχεία) και στην συνέχεια δίνονται αυτά τα στοιχεία ένα σε κάθε γραμμή. Τέλος δίνεται και τιμή για την μεταβλητή n που δηλώνει το πλήθος των στοιχείων του πίνακα (εδώ 5) η οποία θα χρειαστεί για τους υπολογισμούς. Η εκτέλεση του αλγορίθμου δίνει:

Άσκηση 1.(2.23α). Είσοδος δεδομένων αγνώστου πλήθους σε πίνακα. Εκτύπωση του πίνακα.
Να συμπληρωθεί ο αλγόριθμος του παραδείγματος 2.23α έτσι ώστε να τυπώνεται το διπλάσιο κάθε στοιχείου του πίνακα Α αφού τελειώσει η εισαγωγή στοιχείων.

Άσκηση 2.(2.24). Είσοδος δεδομένων σε πίνακα. Εκτύπωση στοιχείων του πίνακα. Προσθήκη στοιχείου σε πίνακα.
Να γίνει εισαγωγή στοιχείων σε πίνακα Α με την εντολή ΔΕΔΟΜΕΝΑ από αρχείο εισόδου που θα περιέχει 6 ονόματα.
Στην συνέχεια να εκτυπωθούν το 1ο, το 4ο και το 6ο όνομα που εισήχθηκαν.
Τέλος να προστεθεί ένα 7ο όνομα που να εισάγεται από τον χρήστη κατά την εκτέλεση του αλγόριθμου και να γίνει εκτύπωση και των 7 ονομάτων του πίνακα.

Άσκηση 3.(2.24). Είσοδος δεδομένων σε 2 πίνακες. Παράλληλη εκτύπωση στοιχείων των πινάκων.
Να γίνει εισαγωγή στοιχείων στους πίνακες Α, Β με την εντολή ΔΕΔΟΜΕΝΑ από αρχείο εισόδου που θα περιέχει 6 μικρά ονόματα και 6 επίθετα.
Στην συνέχεια να εκτυπωθούν τα ονοματεπώνυμα (το 1ο στοιχείο από το πίνακα Α με το 1ο στοιχείο από τον πίνακα Β, το 2ο στοιχείο από το πίνακα Α με το 2ο στοιχείο από τον πίνακα Β, κ.ο.κ). Τέλος να προστεθούν στο αρχείο εισόδου και τα δικά σας ονοματεπώνυμα και να εκτυπωθούν ξανά όλα τα ονοματεπώνυμα.

ΑΡΧΕΙΟ ΕΙΣΟΔΟΥ (ΕΝΔΕΙΚΤΙΚΟ):
[6]
Μαρία
Νίκος
Αγγελική
Πέτρος
Όλγα
Μιχάλης
6
[6]
Ανδρεάδη
Παπαδόπουλος
Νικολάου
Βασιλειάδης
Φιλίππου
Ιγνατιάδης
6

Παράδειγμα 2.25. Τροποποίηση στοιχείων πίνακα
Αλγόριθμος που διενεργεί την διόρθωση ενός ή περισσοτέρων στοιχείων του πίνακα Α. Στον αλγόριθμο αυτό η επανάληψη εκτελείται όσο δίνεται τιμή του i εντός ορίων. Κάθε φορά εμφανίζεται το στοιχείο Α[i] και ζητείται η εισαγωγή μιας άλλης τιμής που την αντικαθιστά.

Αλγόριθμος παραδειγμα_2_25
Δεδομένα // Α, n // 
Εμφάνισε "Δώσε τον δείκτη του στοιχείου που θα αλλαχτεί: "
Διάβασε i
Όσο i > 0 και i  n επανάλαβε
  Εμφάνισε "Το στοιχείο με δείκτη ", i, " είναι: "
  Εμφάνισε Α[i] 
  Εμφάνισε "Δώσε το νέο στοιχείο: "
  Διάβασε Α[i] 
  Εμφάνισε "Δώσε τον δείκτη του στοιχείου που θα αλλαχτεί: "
  Διάβασε i
Τέλος_επανάληψης
Τέλος παραδειγμα_2_25
ΑΡΧΕΙΟ ΕΙΣΟΔΟΥ (ΕΝΔΕΙΚΤΙΚΟ):
[5]
111
222
333
444
555
5

Άσκηση 4.(2.25). Τροποποίηση στοιχείων πίνακα.
Να συμπληρωθεί ο αλγόριθμος του παραδείγματος 2.25 έτσι ώστε να αλλάζουν όλα τα στοιχεία του αρχικού πίνακα και στη συνέχεια ο πίνακας να εκτυπώνεται.

Παράδειγμα 2.26. Άθροισμα στοιχείων πίνακα
Δίδεται ο μονοδιάστατος πίνακας Β που περιέχει Ν βαθμούς μαθητών. Να αναπτυχθεί αλγόριθμος, ο οποίος να υπολογίζει και να εμφανίζει το μέσο όρο βαθμολογίας των μαθητών.

Αλγόριθμος Βαθμολογία
Δεδομένα // Β, Ν //
Σ  0
Για i από 1 μέχρι Ν
     Σ  Σ + Β[i]
Τέλος_επανάληψης
ΜΟ  Σ / Ν
Εμφάνισε "Μ.Ο.:", ΜΟ
Τέλος Βαθμολογία
ΑΡΧΕΙΟ ΕΙΣΟΔΟΥ (ΕΝΔΕΙΚΤΙΚΟ):
[3]
14
16
18
3

Στο αρχείο εισόδου αρχικά δηλώνεται η διάσταση του πίνακα μέσα σε τετράγωνες αγκύλες (εδώ [3] δηλαδή θα περιέχει 3 στοιχεία) και στην συνέχεια δίνονται αυτά τα στοιχεία ένα σε κάθε γραμμή (εδώ οι 3 βαθμοί). Τέλος δίνεται και τιμή για την μεταβλητή Ν που δηλώνει το πλήθος των στοιχείων του πίνακα (εδώ 3) η οποία θα χρειαστεί για τους υπολογισμούς. Η εκτέλεση του αλγορίθμου δίνει:

Παράδειγμα 2.27. Μέγιστο στοιχείο πίνακα
Δίδεται ο μονοδιάστατος πίνακας Β που περιέχει Ν βαθμούς μαθητών. Να αναπτυχθεί αλγόριθμος, ο οποίος να βρίσκει και να εμφανίζει την υψηλότερη βαθμολογία.

Αλγόριθμος Μέγιστο_πίνακα
   Δεδομένα // Β, Ν //
   max  Β[1]
   Για i από 2 μέχρι Ν
        Αν Β[i] > max τότε
            max  Β[i]
        Τέλος_αν
   Τέλος_επανάληψης
   Εμφάνισε "Μέγιστο:", max
Τέλος Μέγιστο_πίνακα
ΑΡΧΕΙΟ ΕΙΣΟΔΟΥ (ΕΝΔΕΙΚΤΙΚΟ):
[5]
14
16
13
19
11
5

Στη μεταβλητή max εκχωρείται η τιμή του πρώτου στοιχείου του πίνακα. Στη συνέχεια με το βρόχο Για i από 2 μέχρι Ν εξετάζονται όλα τα υπόλοιπα στοιχεία του πίνακα. Για κάθε ένα, αν είναι μεγαλύτερο από το max, τότε αντικαθιστάται η τιμή του max με το νέο στοιχείο. Δηλαδή στη μεταβλητή max εκχωρείται το εκάστοτε μέγιστο στοιχείο, οπότε στο τέλος της επανάληψης θα έχει το μέγιστο στοιχείο του πίνακα. Η εκτέλεση του αλγορίθμου δίνει:

Άσκηση 5.(2.27). Μέγιστο στοιχείο πίνακα και παράλληλος πίνακας.
Να συμπληρωθεί ο αλγόριθμος του παραδείγματος 2.27 έτσι ώστε να εισάγονται και τα ονοματεπώνυμα των μαθητών στους οποίους αντιστοιχούν οι βαθμοί. Αφού βρεθούν ο μέγιστος και ο ελάχιστος βαθμός θα εκτυπώνονται μαζί με τα ονοματεπώνυμα των μαθητών στους οποίους αντιστοιχούν. (Υποθέτουμε ότι υπάρχει μόνο ένας μέγιστος και μόνο ένας ελάχιστος βαθμός.)

ΑΡΧΕΙΟ ΕΙΣΟΔΟΥ (ΕΝΔΕΙΚΤΙΚΟ):
[5]
14
16
13
19
11
5
[5]
Μαρία Ανδρεάδη
Νίκος Παπαδόπουλος
Αγγελική Νικολάου
Πέτρος Βασιλειάδης
Όλγα Φιλίππου
5

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

Αλγόριθμος Αντιμετάθεση
Διάβασε α, β
temp  α
α  β
β  temp
Εμφάνισε α, β
Τέλος Αντιμετάθεση

Άσκηση 6.(2.7). Αντιμετάθεση στοιχείων πίνακα.
Στον πίνακα Α με 4 ονοματεπώνυμα που δίνεται παρακάτω να γίνει η κατάλληλη αντιμετάθεση των στοιχείων του ώστε τα κορίτσια να είναι στις πρώτες 2 θέσεις και τα αγόρια στις 2 τελευταίες θέσεις. Στην συνέχεια να εκτυπωθεί ο τροποποιημένος πίνακας.

ΑΡΧΕΙΟ ΕΙΣΟΔΟΥ (ΕΝΔΕΙΚΤΙΚΟ):
[4]
Μαρία Ανδρεάδη
Νίκος Παπαδόπουλος
Αγγελική Νικολάου
Πέτρος Βασιλειάδης
4

Παράδειγμα 2.30. Ταξινόμηση φυσαλίδας
Να αναπτυχθεί αλγόριθμος ο οποίος με δεδομένο το πλήθος των μαθητών ενός τμήματος της Β' Λυκείου ενός σχολείου και τον τελικό βαθμό του κάθε μαθητή στο μάθημα «Πληροφορική», να ταξινομεί τον πίνακα των βαθμών σε αύξουσα τάξη, από το μικρότερο στο μεγαλύτερο βαθμό. Στη συνέχεια να επιστρέφει τον ταξινομημένο πίνακα.

Για προσομοίωση της ταξινόμησης φυσαλίδας (bubble sort): κλικ εδώ
Αλγόριθμος Ταξινόμηση_φυσαλίδας
Δεδομένα // A, N //
Για i από 1 μέχρι N
    Για j από 1 μέχρι N - i
        Αν A[j] > A[j+1] τότε
            temp  A[j]
            A[j]  A[j+1]
            A[j+1]  temp
        Τέλος_αν
    Τέλος_επανάληψης
Τέλος_επανάληψης
Αποτελέσματα // A //
Τέλος Ταξινόμηση_φυσαλίδας
ΑΡΧΕΙΟ ΕΙΣΟΔΟΥ (ΕΝΔΕΙΚΤΙΚΟ):
[20]
13
17
17
18
11
16
12
19
10
12
16
14
15
20
12
20
16
19
17
18
20

Άσκηση 7.(2.30). Αντιμετάθεση στοιχείων πίνακα.
Να γίνουν οι απαραίτητες αλλαγές στον αλγόριθμο του παραδείγματος 2.30 ώστε να ταξινομηθεί ο πίνακας των βαθμών σε φθίνουσα τάξη και να εκτυπωθεί ο ταξινομημένος πίνακας.

Παράδειγμα 2.29. Σειριακή αναζήτηση
Σε ένα μονοδιάστατο πίνακα είναι καταχωρημένα τα ονόματα των σχολείων που συμμετέχουν σε έναν διαγωνισμό επιχειρηματικότητας και έχουν κατασκευάσει ένα χώρο παρουσίασης του επιχειρηματικού τους σχεδίου (που εν συντομία θα λέγεται περίπτερο). Ο αριθμός του περιπτέρου κάθε σχολείου είναι η θέση του σχολείου στον πίνακα. Δηλαδή στο πρώτο κελί του πίνακα είναι το όνομα του σχολείου που έχει το περίπτερο με αριθμό 1, στο δεύτερο κελί του πίνακα είναι το όνομα του σχολείου που έχει το περίπτερο με αριθμό 2 κ.ο.κ. Να αναπτυχθεί αλγόριθμος ο οποίος με δεδομένο το πλήθος των σχολείων που συμμετέχουν στο διαγωνισμό με περίπτερο και τον πίνακα με τα ονόματα των σχολείων, να διαβάζει το όνομα ενός σχολείου και να ψάχνει στον πίνακα, αν υπάρχει αυτό το σχολείο. Ο αλγόριθμος θα επιστρέφει το αποτέλεσμα της αναζήτησης, δηλαδή αν υπάρχει ή όχι το αναζητούμενο σχολείο, και αν υπάρχει τη θέση του στον πίνακα, αλλιώς ως θέση την τιμή μηδέν.

Αλγόριθμος Αναζήτηση
Δεδομένα // Α, Ν //
Εμφάνισε "Αναζητούμενο σχολείο:"
Διάβασε Κ
i  1
Βρέθηκε  Ψευδής
Θέση  0
Όσο i  Ν και Βρέθηκε = Ψευδής επανάλαβε
     Αν Κ = Α[i] τότε
          Θέση  i
          Βρέθηκε  Αληθής
     αλλιώς
           i  i + 1
     Τέλος_αν
Τέλος_επανάληψης
Αποτελέσματα // Βρέθηκε, Θέση //
Τέλος Αναζήτηση
ΑΡΧΕΙΟ ΕΙΣΟΔΟΥ (ΕΝΔΕΙΚΤΙΚΟ):
[7]
1ο ΓΕΛ ΚΟΖΑΝΗΣ
2ο ΓΕΛ ΚΟΖΑΝΗΣ
3ο ΓΕΛ ΚΟΖΑΝΗΣ
4ο ΓΕΛ ΚΟΖΑΝΗΣ
1ο ΓΕΛ ΠΤΟΛΕΜΑΪΔΑΣ
2ο ΓΕΛ ΠΤΟΛΕΜΑΪΔΑΣ
3ο ΓΕΛ ΠΤΟΛΕΜΑΪΔΑΣ
7

Κάθε σχολείο μπορεί να έχει ένα περίπτερο.
Στον αλγόριθμο είναι δεδομένος ο πίνακας Α και το πλήθος των στοιχείων του (Ν).
Η λογική μεταβλητή Βρέθηκε έχει την αρχική τιμή Ψευδής, όπου θεωρείται ότι δεν υπάρχει το ζητούμενο σχολείο
και η μεταβλητή Θέση έχει την αρχική τιμή 0 για τον ίδιο λόγο.
Η επανάληψη του αλγορίθμου εκτελείται όσο δεν τελείωσε
η σάρωση του πίνακα (i ≤ Ν) και όσο δεν βρέθηκε το στοιχείο (Βρέθηκε = Ψευδής).
Τα αποτελέσματα είναι η μεταβλητή Βρέθηκε, η οποία, αν είναι αληθής σημαίνει ότι η αναζήτηση ήταν επιτυχής και η μεταβλητή Θέση, που έχει τη θέση του στοιχείου στον πίνακα, εφ’ όσον βρέθηκε, αλλιώς θα έχουν την τιμή Ψευδής και μηδέν αντίστοιχα.
Η τιμή μηδέν δεν μπορεί να είναι θέση πίνακα.

Άσκηση 8.(2.29). Αναζήτηση σε στοιχεία πίνακα.
Να χρησιμοποιήθεί ο αλγόριθμος της αναζήτησης για να αναζητηθεί αριθμός κινητού τηλεφώνου σε ένα πλήθος 30 τέτοιων αριθμών. Αν βρεθεί ο αριθμός θα τυπώνεται το όνομα του κατόχου του αριθμού αυτού. Οι αριθμοί και τα αντίστοιχα ονοματεπώνυμα των κατόχων θα καταχωρηθούν στους πίνακες Α και Β αντίστοιχα από το παρακάτω αρχείο εισόδου.

Άσκηση 9.(2.29). Αναζήτηση σε στοιχεία πίνακα.
Να χρησιμοποιήθεί ο αλγόριθμος της αναζήτησης για να αναζητηθεί το ονοματεπώνυμο κατόχου αριθμού κινητού σε ένα πλήθος 30 τέτοιων ονοματεπώνυμων. Αν βρεθεί το ονοματεπώνυμο θα τυπώνεται ο αριθμός του κινητού που του αντιστοιχεί. Οι αριθμοί και τα αντίστοιχα ονοματεπώνυμα των κατόχων θα καταχωρηθούν στους πίνακες Α και Β αντίστοιχα από το παρακάτω αρχείο εισόδου.

ΑΡΧΕΙΟ ΕΙΣΟΔΟΥ (ΕΝΔΕΙΚΤΙΚΟ):
6962888409
6973111424
6920320643
6967008377
6952385046
6986483515
6947859033
6982085472
6924547902
6965108729
6951612623
6943844484
6912689434
6944380305
6995470082
6956551635
6915516939
6912193702
6956952540
6942824477
6980325203
6938874777
6969783805
6954214607
6965055861
6923266589
6980402719
6961886325
6982639055
6966793718
Καλογήρου Κάρολος
Καρύδης Μαρίνος
Γεωργίου Μαρίνα
Ανδρεάδης Απόλλων
Καζάζης Αστέριος
Νίκου Μαρία
Μιχαϊλίδου Στυλιανή
Παπακώστα Βασιλική
Γεωργιάδης Αγαμέμνων
Νικολάου Γεωργία
Σερέτης Απόστολος
Σιγάλας Βασίλειος
Βασιλείου Όλγα
Σακελλαρίου Ελένη
Τανίδης Βασίλειος
Βασιλειάδης Θησέας
Δελής Γεώργιος
Ελευθερίου Αικατερίνη
Ελληνιάδης Νικηφόρος
Ζωγράφος Ραφαήλ
Ιορδανίδης Θεόδωρος
Ρωμανός Ηρακλής
Θεοχαρόπουλος Πέτρος
Καλογιάννης Θεμιστοκλής
Λαμπίρης Χρύσανθος
Λεφούση Νίκη
Μανακίδης Αιμίλιος
Μητακίδης Αλέξανδρος
Ξενόπουλος Αντώνιος
Ορέστης Αθανάσιος

Παράδειγμα 2.28. Επεξεργασία δισδιάστατου πίνακα
Να αναπτυχθεί αλγόριθμος ο οποίος με δεδομένο το πλήθος των μαθητών της Γ' Γυμνασίου ενός σχολείου και τους βαθμούς των μαθητών στα μαθηματικά, σε καθένα από τα 3 τρίμηνα, να υπολογίζει και να επιστρέφει το μέσο όρο βαθμολογίας κάθε μαθητή και το συνολικό μέσο όρο. Ο πίνακας Β έχει Ν γραμμές και 3 στήλες. Σε κάθε μία γραμμή υπάρχουν οι βαθμολογίες των τριών τριμήνων για κάθε ένα μαθητή.

ΑΡΧΕΙΟ ΕΙΣΟΔΟΥ (ΕΝΔΕΙΚΤΙΚΟ):
[5,3]
14
15
16
13
12
14
17
18
19
20
19
18
15
16
17
5


Αλγόριθμος Αθροίσματα
Δεδομένα // Β, Ν // 
Σ  0
Για i από 1 μέχρι Ν
  ΣΜ  0
  Για j από 1 μέχρι 3
    ΣΜ  ΣΜ + Β[i, j] 
  Τέλος_επανάληψης
  ΜΟΒ[i]  ΣΜ/ 3
  Σ  Σ + ΣΜ
Τέλος_επανάληψης
ΜΟ  Σ/(Ν* 3) 
Αποτελέσματα // ΜΟΒ, ΜΟ // 
Τέλος Αθροίσματα

Με το διπλό βρόχο Για i και Για j σαρώνονται κατά γραμμή όλα τα στοιχεία του πίνακα Β. Σε κάθε μία γραμμή, δηλαδή για κάθε μία τιμή του i, μηδενίζεται το ΣΜ (άθροισμα βαθμών μαθητή) και ακολούθως με τον εσωτερικό βρόχο αθροίζονται όλα τα στοιχεία της γραμμής αυτής. Όταν ολοκληρωθεί ο εσωτερικός βρόχος, στο ΜΟΒ[i] βρίσκεται ο μέσος όρος των στοιχείων της εκάστοτε γραμμής, δηλαδή ο μέσος όρος κάθε μαθητή στα τρία τρίμηνα. Το άθροισμα που υπολογίστηκε ανά γραμμή αξιοποιείται και αυξάνει τη μεταβλητή Σ κατά το άθροισμα γραμμής, η οποία στο τέλος θα έχει το άθροισμα όλων των στοιχείων του πίνακα.

Η εκτέλεση του αλγόριθμου δίνει:

Άσκηση 9.(2.28) Υπολογισμός μέσου όρου τετραμήνων.
Να γραφεί αλγόριθμος που να βασίζεται στο προηγούμενο παράδειγμα για τον υπολογισμό των μέσων όρων τετραμήνων 10 μαθητών με βαθμούς που φαίνονται στον παρακάτω πίνακα:



Μοναδιαίος πίνακας

Ένας δισδιάστατος τετραγωνικός NxN πίνακας της μορφής της παραπάνω εικόνας ονομάζεται μοναδιαίος πίνακας.
Για κάθε στοιχείο του πίνακα Α ισχύει: Αν i=j τότε Α[i,j]←1 και αν i≠j τότε Α[i,j]←0.

Άσκηση 10. Δημιουργία και εκτύπωση μοναδιαίου πίνακα.
Να γραφεί αλγόριθμος που να δημιουργεί και να εκτυπώνει στην μορφή της παραπάνω εικόνας έναν μοναδιαίο πίνακα δοσμένων διαστάσεων ΝxN.

ΔΙΑΦΟΡΕΣ ΑΣΚΗΣΕΙΣ

Άσκηση Δ1. Μετρητής/Μέγιστο.
Σε κάποιο σημείο της Εθνικής οδού είναι εγκατεστημένο ένα ειδικό σύστημα το οποίο μετράει την ταχύτητα των διερχόμενων οχημάτων με μεγάλη ακρίβεια.
Το όριο ταχύτητας στο συγκεκριμένο σημείο είναι 100 km/h.
Να γράψετε αλγόριθμο ο οποίος για 20 οχήματα:
α) Να διαβάζει τον αριθμό πινακίδας και την ταχύτητα κάθε οχήματος.
β) Να εμφανίζει το πλήθος των οχημάτων που ξεπέρασαν το όριο ταχύτητας.
γ) Να εμφανίζει την υψηλότερη ταχύτητα που πέρασε κάποιος.
δ) Να εμφανίζει τις πινακίδες και τις ταχύτητες των οχημάτων που έχουν υπερβεί το όριο ταχύτητας.

ΑΡΧΕΙΟ ΕΙΣΟΔΟΥ (ΕΝΔΕΙΚΤΙΚΟ):
ΠΙΝ-1101
111
ΠΙΝ-1102
81
ΠΙΝ-1103
79
ΠΙΝ-1104
97
ΠΙΝ-1105
110
ΠΙΝ-1106
119
ΠΙΝ-1107
84
ΠΙΝ-1108
82
ΠΙΝ-1109
84
ΠΙΝ-1110
130
ΠΙΝ-1111
103
ΠΙΝ-1112
78
ΠΙΝ-1113
109
ΠΙΝ-1114
125
ΠΙΝ-1115
84
ΠΙΝ-1116
109
ΠΙΝ-1117
127
ΠΙΝ-1118
117
ΠΙΝ-1119
105
ΠΙΝ-1120
94

Άσκηση Δ2. ΠΛΗΘΟΣ – ΑΘΡΟΙΣΜΑ – ΜΕΣΟΣ ΟΡΟΣ.
Στο υπολογιστικό σύστημα ενός βιβλιοπωλείου πρόκειται να καταχωρηθούν 10 νέα βιβλία.
Για κάθε βιβλίο καταχωρείται ο τίτλος (στον πίνακα ΤΤ), ο συγγραφέας (στον πίνακα ΣΓ) και η τιμή του (στον πίνακα ΤΜ).
Να αναπτύξετε αλγόριθμο ο οποίος:
α) διαβάζει τα παραπάνω δεδομένα για κάθε βιβλίο και τα καταχωρεί στους αντίστοιχους πίνακες.
β) υπολογίζει και εμφανίζει το πλήθος των βιβλίων του συγγραφέα Ντίκενς.
γ) υπολογίζει και εμφανίζει το μέσο όρο της τιμής όλων των βιβλίων του Ντίκενς.
δ) υπολογίζει και εμφανίζει το μέσο όρο της τιμής και των 10 βιβλίων.

ΑΡΧΕΙΟ ΕΙΣΟΔΟΥ (ΕΝΔΕΙΚΤΙΚΟ):
Μεγάλες Προσδοκίες
Ντίκενς
15
Έγκλημα και Τιμωρια
Ντοστογιέφσκι
16
Πόλεμος και ειρήνη
Τολστόι
17
Μία Χριστουγεννιάτικη ιστορία
Ντίκενς
17
Όλιβερ Τουίστ
Ντίκενς
14
Οι άθλιοι
Ουγκώ
15
Ο κόμπος των εχιδνών
Μωριάκ
13
Ο ξένος
Καμύ
12
Ο Καπετάν Μιχάλης
Καζατζάκης
14
Ζητείται ελπίς
Σαμαράκης
15


ΑΣΚΗΣΗ ΤΕΣΤ2:
Σε ένα τεστ στο μάθημα της Πληροφορικής της Β’ Λυκείου οι βαθμοί
των 22 μαθητών καταχωρούνται σε έναν πίνακα Β.
Να συμπληρώσετε κατάλληλα τα κενά στον αλγόριθμο δεξιά ο οποίος υπολογίζει:
α) Τον μέσο όρο όλων των βαθμών στο τεστ των 22 μαθητών.
β) Πόσοι μαθητές βαθμολογήθηκαν με βαθμό πάνω από τον μέσο όρο που υπολογίστηκε στο (α).
γ) Πόσοι μαθητές βαθμολογήθηκαν με βαθμό κάτω από την βάση.
δ) Ποιος είναι ο μεγαλύτερος βαθμός σε αυτό το τεστ.


ΑΡΧΕΙΟ ΕΙΣΟΔΟΥ (ΕΝΔΕΙΚΤΙΚΟ):
11
7
10
10
8
13
15
11
9
7
11
19
15
14
17
9
14
13
14
13
13
16

Άσκηση Δ3. ΠΛΗΘΟΣ – ΜΕΣΟΣ ΟΡΟΣ - ΜΕΓΙΣΤΟΣ.
Σε μια εξέταση Αγγλικών 20 υποψήφιοι εξετάζονται προφορικά και γραπτά
και βαθμολογούνται από το 1 έως και 100 μονάδες σε κάθε εξέταση.
Να αναπτύξετε αλγόριθμο ο οποίος:
α) διαβάζει επαναληπτικά τον κωδικό, την προφορική και τη γραπτή βαθμολογία
κάθε υποψηφίου και τα καταχωρεί στους πίνακες Κ, Π, και Γ αντίστοιχα.
β) εμφανίζει το πλήθος και τους κωδικούς των υποψηφίων που το άθροισμα
της προφορικής και γραπτής βαθμολογίας είναι πάνω από 160 μονάδες.
γ) εμφανίζει το πλήθος των υποψηφίων που η προφορική βαθμολογία τους
ήταν μεγαλύτερη από τη γραπτή βαθμολογία τους.
δ) εμφανίζει τους μέσους όρους όλων των γραπτών και όλων των προφορικών βαθμολογιών των υποψηφίων
ε) εμφανίζει τον κωδικό υποψηφίου με τον μεγαλύτερο μέσο όρο προφορικής
και γραπτής βαθμολογίας (υποτίθεται ότι είναι μοναδικός)


ΑΡΧΕΙΟ ΕΙΣΟΔΟΥ (ΕΝΔΕΙΚΤΙΚΟ):
Υ1101
59
66
Υ1102
98
95
Υ1103
88
83
Υ1104
46
53
Υ1105
81
85
Υ1106
98
96
Υ1107
25
29
Υ1108
61
66
Υ1109
93
90
Υ1110
75
71
Υ1111
39
31
Υ1112
57
48
Υ1113
52
53
Υ1114
87
89
Υ1115
77
73
Υ1116
43
45
Υ1117
81
93
Υ1118
28
23
Υ1119
62
63
Υ1120
33
40

Άσκηση Δ4. ΠΛΗΘΟΣ – 3 ΠΡΩΤΟΙ (ΤΑΞΙΝΟΜΗΣΗ).
Σε προκριματικούς αγώνες ακοντισμού διαγωνίζονται 20 αθλητές.
Στον παρακάτω πίνακα δίνονται οι κωδικοί των αθλητών και οι επιδόσεις τους σε 3 διαφορετικές ρίψεις για τον καθένα.

(α) Να καταχωρηθούν όλες οι επιδόσεις στις ρίψεις των 20 αθλητών στον δισδιάστατο πίνακα Ρ με διαστάσεις 20x3.
Οι αντίστοιχοι κωδικοί των αθλητών να καταχωρηθούν στον μονοδιάστατο πίνακα Κ.
(β) Η μέγιστη επίδοση κάθε αθλητή θεωρείται η καλύτερή του και θα καταχωρηθεί στον πίνακα Μ.
(γ) Αν το όριο πρόκρισης των αθλητών είναι τα 80 μέτρα και πάνω να υπολογιστεί πόσοι αθλητές
το ξεπέρασαν και να εκτυπωθούν οι κωδικοί τους.
Επίσης να υπολογιστεί και να εκτυπωθεί το ποσοστό των αθλητών που προκρίθηκαν.
(δ) Να εκτυπωθούν οι κωδικοί και οι επιδόσεις των 3 πρώτων σε φθίνουσα σειρά
(οι 3 πρώτοι θεωρείται ότι είναι μοναδικοί).


ΑΡΧΕΙΟ ΕΙΣΟΔΟΥ (ΕΝΔΕΙΚΤΙΚΟ):
Α001
62
65
85
Α002
79
74
75
Α003
83
86
73
Α004
80
79
69
Α005
75
83
61
Α006
77
73
74
Α007
65
78
68
Α008
67
65
63
Α009
67
82
71
Α010
72
61
69
Α011
73
62
65
Α012
77
80
81
Α013
66
80
82
Α014
68
60
79
Α015
71
76
73
Α016
66
73
63
Α017
73
61
76
Α018
71
65
63
Α019
84
78
79
Α020
60
64
68