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

1. Τι είναι οι παράλληλοι πίνακες;

Ας υποθέσουμε ότι για κάθε μαθητή θέλουμε να αποθηκεύσουμε το όνομα, τον βαθμό και τις απουσίες του. Τα τρία αυτά δεδομένα έχουν διαφορετικό τύπο: το όνομα είναι χαρακτήρας, ο βαθμός πραγματικός και οι απουσίες ακέραιος. Μπορούμε να χρησιμοποιήσουμε τρεις μονοδιάστατους πίνακες:

ΧΑΡΑΚΤΗΡΕΣ: ΟΝΟΜΑ[30]
ΠΡΑΓΜΑΤΙΚΕΣ: ΒΑΘΜΟΣ[30]
ΑΚΕΡΑΙΕΣ: ΑΠΟΥΣΙΕΣ[30]

Οι πίνακες είναι παράλληλοι, επειδή τα στοιχεία με τον ίδιο δείκτη περιγράφουν τον ίδιο μαθητή.

Δείκτης i ΟΝΟΜΑ[i] ΒΑΘΜΟΣ[i] ΑΠΟΥΣΙΕΣ[i]
1Άννα17,832
2Μάριος14,251
3Ελένη18,527

Η τιμή ΟΝΟΜΑ[2], η τιμή ΒΑΘΜΟΣ[2] και η τιμή ΑΠΟΥΣΙΕΣ[2] αποτελούν μία ενιαία εγγραφή: αφορούν τον Μάριο.

Προσοχή: οι παράλληλοι πίνακες δεν είναι διαφορετικό είδος πίνακα. Είναι δύο ή περισσότεροι συνηθισμένοι μονοδιάστατοι πίνακες που συνδέονται νοηματικά μέσω του κοινού δείκτη.

2. Η βασική αρχή της αντιστοίχισης

Κανόνας: ο κοινός δείκτης λειτουργεί σαν «συνδετικός κρίκος». Αν αλλάξει η σειρά των εγγραφών, πρέπει να αλλάξει με τον ίδιο ακριβώς τρόπο η σειρά σε όλους τους παράλληλους πίνακες.

Αν, για παράδειγμα, αντιμεταθέσουμε τους βαθμούς των θέσεων 2 και 3, πρέπει να αντιμεταθέσουμε και τα ονόματα και τις απουσίες των ίδιων θέσεων. Διαφορετικά, οι πίνακες παύουν να περιγράφουν σωστά τους μαθητές.

Επεξεργασία Τι εξετάζουμε Τι πρέπει να γίνει στους παράλληλους πίνακες
Γέμισμα Την ίδια εγγραφή. Διαβάζουμε όλα τα πεδία με τον ίδιο δείκτη i.
Εμφάνιση Μια συνθήκη σε έναν ή περισσότερους πίνακες. Εμφανίζουμε τα αντίστοιχα στοιχεία της ίδιας θέσης i.
Αναζήτηση Συνήθως έναν κωδικό ή ένα όνομα. Χρησιμοποιούμε τη θέση που βρέθηκε για πρόσβαση σε όλα τα πεδία.
Ενημέρωση Μία συγκεκριμένη εγγραφή. Τροποποιούμε τα κατάλληλα πεδία στην ίδια θέση.
Διαγραφή Μία θέση. Μετακινούμε αριστερά τα στοιχεία όλων των πινάκων.
Εισαγωγή Μία νέα εγγραφή. Μετακινούμε δεξιά και γράφουμε όλα τα νέα πεδία στην ίδια θέση.
Ταξινόμηση Έναν πίνακα-κλειδί. Σε κάθε αντιμετάθεση αλλάζουμε τις ίδιες θέσεις σε όλους τους πίνακες.

3. Μεθοδολογία επίλυσης

Βήμα 1: Εντοπίζω την οντότητα και τα πεδία της

Ρωτάμε: «Για ποιο αντικείμενο επαναλαμβάνονται τα δεδομένα;» Αν η απάντηση είναι «για κάθε προϊόν», τότε κάθε θέση i αντιστοιχεί σε ένα προϊόν. Ο κωδικός, η ονομασία, η τιμή και το απόθεμά του θα αποθηκευτούν σε παράλληλους πίνακες.

Βήμα 2: Επιλέγω έναν πίνακα για κάθε πεδίο

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

ΧΑΡΑΚΤΗΡΕΣ: ΚΩΔΙΚΟΣ[100], ΠΡΟΙΟΝ[100]
ΠΡΑΓΜΑΤΙΚΕΣ: ΤΙΜΗ[100]
ΑΚΕΡΑΙΕΣ: ΑΠΟΘΕΜΑ[100]

Βήμα 3: Καθορίζω τον πίνακα-κλειδί

Ο πίνακας-κλειδί είναι εκείνος ως προς τον οποίο γίνεται η βασική επεξεργασία. Σε αναζήτηση προϊόντος μπορεί να είναι ο ΚΩΔΙΚΟΣ. Σε ταξινόμηση από το φθηνότερο στο ακριβότερο είναι η ΤΙΜΗ. Οι υπόλοιποι πίνακες ακολουθούν τις μετακινήσεις του.

Βήμα 4: Ελέγχω την αντιστοίχιση σε κάθε αλλαγή θέσης

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

Γρήγορος έλεγχος λύσης: διάλεξε μια θέση, για παράδειγμα τη θέση 5, και έλεγξε αν μετά από κάθε επεξεργασία όλα τα στοιχεία με δείκτη 5 εξακολουθούν να ανήκουν στο ίδιο αντικείμενο.

4. Χρήσιμα πρότυπα κώδικα

4.1 Ταυτόχρονο γέμισμα

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
  ΔΙΑΒΑΣΕ ΚΩΔΙΚΟΣ[i], ΟΝΟΜΑ[i], ΤΙΜΗ[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

4.2 Εμφάνιση αντίστοιχου στοιχείου

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
  ΑΝ ΤΙΜΗ[i] < 20 ΤΟΤΕ
    ΓΡΑΨΕ ΟΝΟΜΑ[i], ΤΙΜΗ[i]
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

4.3 Εύρεση μέγιστου και αντίστοιχης εγγραφής

ΘΕΣΗ_MAX ← 1
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ Ν
  ΑΝ ΒΑΘΜΟΣ[i] > ΒΑΘΜΟΣ[ΘΕΣΗ_MAX] ΤΟΤΕ
    ΘΕΣΗ_MAX ← i
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ ΟΝΟΜΑ[ΘΕΣΗ_MAX], ΒΑΘΜΟΣ[ΘΕΣΗ_MAX]

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

4.4 Αντιμετάθεση κατά την ταξινόμηση

ΑΝ ΤΙΜΗ[j] > ΤΙΜΗ[j + 1] ΤΟΤΕ
  ΠΡΟΣΩΡΙΝΗ_ΤΙΜΗ ← ΤΙΜΗ[j]
  ΤΙΜΗ[j] ← ΤΙΜΗ[j + 1]
  ΤΙΜΗ[j + 1] ← ΠΡΟΣΩΡΙΝΗ_ΤΙΜΗ

  ΠΡΟΣΩΡΙΝΟ_ΟΝΟΜΑ ← ΟΝΟΜΑ[j]
  ΟΝΟΜΑ[j] ← ΟΝΟΜΑ[j + 1]
  ΟΝΟΜΑ[j + 1] ← ΠΡΟΣΩΡΙΝΟ_ΟΝΟΜΑ
ΤΕΛΟΣ_ΑΝ
Το κρισιμότερο σημείο: δεν ταξινομούμε ποτέ μόνο τον πίνακα-κλειδί. Η σύγκριση γίνεται σε αυτόν, αλλά η αντιμετάθεση γίνεται σε όλους τους παράλληλους πίνακες.

5. Τα συνηθέστερα λάθη

  1. Διαβάζουμε τα πεδία της ίδιας εγγραφής σε διαφορετικές θέσεις.
  2. Χρησιμοποιούμε διαφορετικό δείκτη για το όνομα και διαφορετικό για την αντίστοιχη τιμή.
  3. Βρίσκουμε ένα μέγιστο, αλλά δεν αποθηκεύουμε τη θέση του ώστε να εμφανίσουμε τα υπόλοιπα πεδία.
  4. Στην ταξινόμηση αντιμεταθέτουμε μόνο τα στοιχεία του πίνακα-κλειδιού.
  5. Χρησιμοποιούμε την ίδια βοηθητική μεταβλητή για στοιχεία διαφορετικού τύπου.
  6. Στη διαγραφή μετακινούμε μόνο έναν από τους παράλληλους πίνακες.
  7. Μετά τη διαγραφή ξεχνάμε να μειώσουμε το ενεργό πλήθος Ν.
  8. Στην εισαγωγή μετακινούμε τα στοιχεία από αριστερά προς τα δεξιά και καταστρέφουμε δεδομένα.
  9. Σε περίπτωση ισοβαθμίας εφαρμόζουμε το δεύτερο κριτήριο χωρίς να ελέγξουμε πρώτα την ισότητα στο πρώτο.
  10. Στη συγχώνευση αντιγράφουμε την τιμή-κλειδί, αλλά όχι τα υπόλοιπα πεδία της ίδιας εγγραφής.

6. Παράλληλοι πίνακες: 20 λυμένες ασκήσεις

Άσκηση 1 – Γέμισμα και εμφάνιση δύο παράλληλων πινάκων

Εκφώνηση: Να διαβαστούν τα ονόματα και οι βαθμοί 6 μαθητών και να εμφανιστούν σε μορφή κατάστασης.

Λύση
ΠΡΟΓΡΑΜΜΑ Κατασταση_Μαθητων
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: i
  ΧΑΡΑΚΤΗΡΕΣ: ΟΝΟΜΑ[6]
  ΠΡΑΓΜΑΤΙΚΕΣ: ΒΑΘΜΟΣ[6]
ΑΡΧΗ
  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 6
    ΓΡΑΨΕ 'Δώσε όνομα και βαθμό'
    ΔΙΑΒΑΣΕ ΟΝΟΜΑ[i], ΒΑΘΜΟΣ[i]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 6
    ΓΡΑΨΕ ΟΝΟΜΑ[i], ' ', ΒΑΘΜΟΣ[i]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Κατασταση_Μαθητων

Κρίσιμο σημείο: το όνομα και ο βαθμός κάθε μαθητή διαβάζονται στην ίδια επανάληψη και αποθηκεύονται στην ίδια θέση i.

Άσκηση 2 – Επιλεκτική εμφάνιση αντίστοιχων στοιχείων

Εκφώνηση: Οι πίνακες ΠΡΟΙΟΝ[20] και ΤΙΜΗ[20] περιέχουν τα στοιχεία 20 προϊόντων. Να εμφανιστούν τα ονόματα και οι τιμές όσων κοστίζουν λιγότερο από 15 ευρώ, καθώς και το πλήθος τους.

Λύση
ΠΛΗΘΟΣ ← 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 20
  ΑΝ ΤΙΜΗ[i] < 15 ΤΟΤΕ
    ΓΡΑΨΕ ΠΡΟΙΟΝ[i], ' ', ΤΙΜΗ[i]
    ΠΛΗΘΟΣ ← ΠΛΗΘΟΣ + 1
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Πλήθος οικονομικών προϊόντων: ', ΠΛΗΘΟΣ

Μεθοδολογία: η συνθήκη ελέγχει τον πίνακα ΤΙΜΗ, αλλά η ίδια θέση i χρησιμοποιείται για την εμφάνιση του αντίστοιχου προϊόντος.

Άσκηση 3 – Μέσος όρος και αντίστοιχα ονόματα

Εκφώνηση: Να διαβαστούν τα ονόματα και οι μηνιαίες εισπράξεις 12 καταστημάτων. Να υπολογιστεί ο μέσος όρος των εισπράξεων και να εμφανιστούν τα καταστήματα που τον ξεπέρασαν.

Λύση
ΑΘΡΟΙΣΜΑ ← 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 12
  ΔΙΑΒΑΣΕ ΚΑΤΑΣΤΗΜΑ[i], ΕΙΣΠΡΑΞΕΙΣ[i]
  ΑΘΡΟΙΣΜΑ ← ΑΘΡΟΙΣΜΑ + ΕΙΣΠΡΑΞΕΙΣ[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΜΟ ← ΑΘΡΟΙΣΜΑ / 12
ΓΡΑΨΕ 'Μέσος όρος: ', ΜΟ

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 12
  ΑΝ ΕΙΣΠΡΑΞΕΙΣ[i] > ΜΟ ΤΟΤΕ
    ΓΡΑΨΕ ΚΑΤΑΣΤΗΜΑ[i], ' ', ΕΙΣΠΡΑΞΕΙΣ[i]
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Γιατί χρειάζεται πίνακας; Ο μέσος όρος γίνεται γνωστός μόνο αφού διαβαστούν όλες οι εισπράξεις. Οι πίνακες μάς επιτρέπουν να επανεξετάσουμε μετά κάθε κατάστημα.

Άσκηση 4 – Συνθήκη που χρησιμοποιεί δύο πίνακες

Εκφώνηση: Για 30 μαθητές δίνονται το όνομα, ο βαθμός και οι απουσίες. Να εμφανιστούν όσοι έχουν βαθμό τουλάχιστον 15 και απουσίες το πολύ 50. Να υπολογιστεί και το πλήθος τους.

Λύση
ΠΛΗΘΟΣ ← 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 30
  ΑΝ ΒΑΘΜΟΣ[i] >= 15 ΚΑΙ ΑΠΟΥΣΙΕΣ[i] <= 50 ΤΟΤΕ
    ΓΡΑΨΕ ΟΝΟΜΑ[i], ' ', ΒΑΘΜΟΣ[i], ' ', ΑΠΟΥΣΙΕΣ[i]
    ΠΛΗΘΟΣ ← ΠΛΗΘΟΣ + 1
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Μαθητές που ικανοποιούν και τα δύο κριτήρια: ', ΠΛΗΘΟΣ

Κοινός δείκτης: οι τιμές ΒΑΘΜΟΣ[i] και ΑΠΟΥΣΙΕΣ[i] αφορούν υποχρεωτικά τον μαθητή ΟΝΟΜΑ[i].

Άσκηση 5 – Μέγιστο και θέση μέγιστου

Εκφώνηση: Στους πίνακες ΠΟΛΗ[15] και ΘΕΡΜΟΚΡΑΣΙΑ[15] υπάρχουν οι μέγιστες θερμοκρασίες 15 πόλεων. Θεωρώντας ότι υπάρχει μοναδική μέγιστη τιμή, να εμφανιστεί η πόλη με τη μεγαλύτερη θερμοκρασία.

Λύση
ΘΕΣΗ_MAX ← 1
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 15
  ΑΝ ΘΕΡΜΟΚΡΑΣΙΑ[i] > ΘΕΡΜΟΚΡΑΣΙΑ[ΘΕΣΗ_MAX] ΤΟΤΕ
    ΘΕΣΗ_MAX ← i
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΓΡΑΨΕ 'Υψηλότερη θερμοκρασία: ', ΘΕΡΜΟΚΡΑΣΙΑ[ΘΕΣΗ_MAX]
ΓΡΑΨΕ 'Πόλη: ', ΠΟΛΗ[ΘΕΣΗ_MAX]

Πλεονέκτημα της θέσης: δεν χρειαζόμαστε ξεχωριστή μεταβλητή για το όνομα της πόλης. Η ΘΕΣΗ_MAX συνδέει αμέσως το μέγιστο με όλα τα αντίστοιχα πεδία.

Άσκηση 6 – Ελάχιστο με πιθανές ισοτιμίες

Εκφώνηση: Για 25 προϊόντα είναι γνωστά το όνομα και η τιμή τους. Να βρεθεί η χαμηλότερη τιμή και να εμφανιστούν όλα τα προϊόντα που πωλούνται σε αυτήν.

Λύση
ΕΛΑΧΙΣΤΗ ← ΤΙΜΗ[1]
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 25
  ΑΝ ΤΙΜΗ[i] < ΕΛΑΧΙΣΤΗ ΤΟΤΕ
    ΕΛΑΧΙΣΤΗ ← ΤΙΜΗ[i]
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΓΡΑΨΕ 'Χαμηλότερη τιμή: ', ΕΛΑΧΙΣΤΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 25
  ΑΝ ΤΙΜΗ[i] = ΕΛΑΧΙΣΤΗ ΤΟΤΕ
    ΓΡΑΨΕ ΠΡΟΙΟΝ[i]
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

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

Άσκηση 7 – Αναζήτηση μοναδικού κωδικού

Εκφώνηση: Οι πίνακες ΚΩΔΙΚΟΣ[40], ΠΡΟΙΟΝ[40] και ΤΙΜΗ[40] περιέχουν μοναδικούς κωδικούς προϊόντων. Να διαβαστεί ένας κωδικός και να εμφανιστούν τα στοιχεία του προϊόντος ή κατάλληλο μήνυμα αν δεν υπάρχει.

Λύση
ΔΙΑΒΑΣΕ ΖΗΤΟΥΜΕΝΟΣ
ΒΡΕΘΗΚΕ ← ΨΕΥΔΗΣ
i ← 1

ΟΣΟ i <= 40 ΚΑΙ ΒΡΕΘΗΚΕ = ΨΕΥΔΗΣ ΕΠΑΝΑΛΑΒΕ
  ΑΝ ΚΩΔΙΚΟΣ[i] = ΖΗΤΟΥΜΕΝΟΣ ΤΟΤΕ
    ΒΡΕΘΗΚΕ ← ΑΛΗΘΗΣ
    ΘΕΣΗ ← i
  ΑΛΛΙΩΣ
    i ← i + 1
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΑΝ ΒΡΕΘΗΚΕ = ΑΛΗΘΗΣ ΤΟΤΕ
  ΓΡΑΨΕ ΠΡΟΙΟΝ[ΘΕΣΗ], ' ', ΤΙΜΗ[ΘΕΣΗ]
ΑΛΛΙΩΣ
  ΓΡΑΨΕ 'Ο κωδικός δεν βρέθηκε'
ΤΕΛΟΣ_ΑΝ

Σημαντικό: η αναζήτηση γίνεται στον ΚΩΔΙΚΟΣ, αλλά η θέση που βρέθηκε χρησιμοποιείται στους πίνακες ΠΡΟΙΟΝ και ΤΙΜΗ.

Άσκηση 8 – Αναζήτηση πολλών εμφανίσεων

Εκφώνηση: Για 50 ξενοδοχεία υπάρχουν οι πίνακες ΞΕΝΟΔΟΧΕΙΟ, ΠΟΛΗ και ΤΙΜΗ. Να δοθεί μια πόλη και να εμφανιστούν όλα τα ξενοδοχεία της και οι τιμές τους. Αν δεν υπάρχει κανένα, να εμφανιστεί σχετικό μήνυμα.

Λύση
ΔΙΑΒΑΣΕ ΖΗΤΟΥΜΕΝΗ_ΠΟΛΗ
ΠΛΗΘΟΣ ← 0

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 50
  ΑΝ ΠΟΛΗ[i] = ΖΗΤΟΥΜΕΝΗ_ΠΟΛΗ ΤΟΤΕ
    ΓΡΑΨΕ ΞΕΝΟΔΟΧΕΙΟ[i], ' ', ΤΙΜΗ[i]
    ΠΛΗΘΟΣ ← ΠΛΗΘΟΣ + 1
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΑΝ ΠΛΗΘΟΣ = 0 ΤΟΤΕ
  ΓΡΑΨΕ 'Δεν βρέθηκαν ξενοδοχεία σε αυτή την πόλη'
ΑΛΛΙΩΣ
  ΓΡΑΨΕ 'Πλήθος ξενοδοχείων: ', ΠΛΗΘΟΣ
ΤΕΛΟΣ_ΑΝ

Διαφορά από την Άσκηση 7: εδώ δεν σταματάμε στην πρώτη επιτυχία, επειδή η ζητούμενη πόλη μπορεί να εμφανίζεται πολλές φορές.

Άσκηση 9 – Άθροισμα ανά ζητούμενη κατηγορία

Εκφώνηση: Για 60 βιβλία είναι γνωστά ο τίτλος, η κατηγορία και οι πωλήσεις τους. Να διαβαστεί μια κατηγορία, να εμφανιστούν οι τίτλοι που ανήκουν σε αυτήν και να υπολογιστούν οι συνολικές πωλήσεις τους.

Λύση
ΔΙΑΒΑΣΕ ΖΗΤΟΥΜΕΝΗ_ΚΑΤΗΓΟΡΙΑ
ΣΥΝΟΛΟ ← 0
ΠΛΗΘΟΣ ← 0

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 60
  ΑΝ ΚΑΤΗΓΟΡΙΑ[i] = ΖΗΤΟΥΜΕΝΗ_ΚΑΤΗΓΟΡΙΑ ΤΟΤΕ
    ΓΡΑΨΕ ΤΙΤΛΟΣ[i]
    ΣΥΝΟΛΟ ← ΣΥΝΟΛΟ + ΠΩΛΗΣΕΙΣ[i]
    ΠΛΗΘΟΣ ← ΠΛΗΘΟΣ + 1
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΑΝ ΠΛΗΘΟΣ > 0 ΤΟΤΕ
  ΓΡΑΨΕ 'Συνολικές πωλήσεις: ', ΣΥΝΟΛΟ
ΑΛΛΙΩΣ
  ΓΡΑΨΕ 'Δεν υπάρχει βιβλίο αυτής της κατηγορίας'
ΤΕΛΟΣ_ΑΝ

Ρόλοι πινάκων: ο ΚΑΤΗΓΟΡΙΑ χρησιμοποιείται για τον έλεγχο, ο ΤΙΤΛΟΣ για την έξοδο και ο ΠΩΛΗΣΕΙΣ για το άθροισμα.

Άσκηση 10 – Καλύτερη επίδοση με περιορισμό

Εκφώνηση: Για 40 αθλητές υπάρχουν το όνομα, η ηλικία και ο χρόνος τους σε έναν αγώνα. Να εμφανιστεί ο αθλητής κάτω των 18 ετών με τον μικρότερο χρόνο. Είναι πιθανό να μην υπάρχει τέτοιος αθλητής.

Λύση
ΒΡΕΘΗΚΕ ← ΨΕΥΔΗΣ

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 40
  ΑΝ ΗΛΙΚΙΑ[i] < 18 ΤΟΤΕ
    ΑΝ ΒΡΕΘΗΚΕ = ΨΕΥΔΗΣ ΤΟΤΕ
      ΘΕΣΗ_MIN ← i
      ΒΡΕΘΗΚΕ ← ΑΛΗΘΗΣ
    ΑΛΛΙΩΣ
      ΑΝ ΧΡΟΝΟΣ[i] < ΧΡΟΝΟΣ[ΘΕΣΗ_MIN] ΤΟΤΕ
        ΘΕΣΗ_MIN ← i
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΑΝ ΒΡΕΘΗΚΕ = ΑΛΗΘΗΣ ΤΟΤΕ
  ΓΡΑΨΕ ΟΝΟΜΑ[ΘΕΣΗ_MIN], ' ', ΧΡΟΝΟΣ[ΘΕΣΗ_MIN]
ΑΛΛΙΩΣ
  ΓΡΑΨΕ 'Δεν υπάρχει αθλητής κάτω των 18 ετών'
ΤΕΛΟΣ_ΑΝ

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

Άσκηση 11 – Ενημέρωση εγγραφής με βάση τον κωδικό

Εκφώνηση: Για 35 προϊόντα υπάρχουν μοναδικός κωδικός, ονομασία, τιμή και απόθεμα. Να διαβαστεί ένας κωδικός και, αν βρεθεί, να αυξηθεί το απόθεμά του κατά μια ποσότητα που θα δοθεί και να εμφανιστεί η ενημερωμένη εγγραφή.

Λύση
ΔΙΑΒΑΣΕ ΖΗΤΟΥΜΕΝΟΣ
ΘΕΣΗ ← 0

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 35
  ΑΝ ΚΩΔΙΚΟΣ[i] = ΖΗΤΟΥΜΕΝΟΣ ΤΟΤΕ
    ΘΕΣΗ ← i
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΑΝ ΘΕΣΗ <> 0 ΤΟΤΕ
  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
    ΔΙΑΒΑΣΕ ΠΟΣΟΤΗΤΑ
  ΜΕΧΡΙΣ_ΟΤΟΥ ΠΟΣΟΤΗΤΑ > 0

  ΑΠΟΘΕΜΑ[ΘΕΣΗ] ← ΑΠΟΘΕΜΑ[ΘΕΣΗ] + ΠΟΣΟΤΗΤΑ
  ΓΡΑΨΕ ΚΩΔΙΚΟΣ[ΘΕΣΗ], ' ', ΠΡΟΙΟΝ[ΘΕΣΗ]
  ΓΡΑΨΕ ΤΙΜΗ[ΘΕΣΗ], ' ', ΑΠΟΘΕΜΑ[ΘΕΣΗ]
ΑΛΛΙΩΣ
  ΓΡΑΨΕ 'Ο κωδικός δεν βρέθηκε'
ΤΕΛΟΣ_ΑΝ

Τι αλλάζει; Μόνο το απόθεμα της συγκεκριμένης θέσης. Τα υπόλοιπα πεδία παραμένουν ίδια και εξακολουθούν να αντιστοιχούν στο ίδιο προϊόν.

Άσκηση 12 – Διαγραφή εγγραφής από παράλληλους πίνακες

Εκφώνηση: Οι πρώτες Ν θέσεις των πινάκων ΚΩΔΙΚΟΣ[100], ΟΝΟΜΑ[100] και ΜΙΣΘΟΣ[100] περιέχουν υπαλλήλους με μοναδικούς κωδικούς. Να διαβαστεί ένας κωδικός και να διαγραφεί η αντίστοιχη εγγραφή.

Λύση
ΔΙΑΒΑΣΕ ΖΗΤΟΥΜΕΝΟΣ
ΘΕΣΗ ← 0

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
  ΑΝ ΚΩΔΙΚΟΣ[i] = ΖΗΤΟΥΜΕΝΟΣ ΤΟΤΕ
    ΘΕΣΗ ← i
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΑΝ ΘΕΣΗ = 0 ΤΟΤΕ
  ΓΡΑΨΕ 'Ο υπάλληλος δεν βρέθηκε'
ΑΛΛΙΩΣ
  ΓΙΑ i ΑΠΟ ΘΕΣΗ ΜΕΧΡΙ Ν - 1
    ΚΩΔΙΚΟΣ[i] ← ΚΩΔΙΚΟΣ[i + 1]
    ΟΝΟΜΑ[i] ← ΟΝΟΜΑ[i + 1]
    ΜΙΣΘΟΣ[i] ← ΜΙΣΘΟΣ[i + 1]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  Ν ← Ν - 1
  ΓΡΑΨΕ 'Η διαγραφή ολοκληρώθηκε'
ΤΕΛΟΣ_ΑΝ

Κρίσιμο σημείο: κάθε επόμενη ολόκληρη εγγραφή μετακινείται μία θέση αριστερά και το ενεργό πλήθος μειώνεται κατά 1.

Άσκηση 13 – Εισαγωγή νέας εγγραφής σε συγκεκριμένη θέση

Εκφώνηση: Οι πρώτες Ν θέσεις των πινάκων ΟΝΟΜΑ[50] και ΒΑΘΜΟΣ[50] περιέχουν στοιχεία μαθητών και Ν < 50. Να εισαχθεί νέος μαθητής σε έγκυρη θέση Θ από 1 έως Ν + 1.

Λύση
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
  ΔΙΑΒΑΣΕ Θ
ΜΕΧΡΙΣ_ΟΤΟΥ Θ >= 1 ΚΑΙ Θ <= Ν + 1

ΔΙΑΒΑΣΕ ΝΕΟ_ΟΝΟΜΑ, ΝΕΟΣ_ΒΑΘΜΟΣ

ΓΙΑ i ΑΠΟ Ν ΜΕΧΡΙ Θ ΜΕ_ΒΗΜΑ -1
  ΟΝΟΜΑ[i + 1] ← ΟΝΟΜΑ[i]
  ΒΑΘΜΟΣ[i + 1] ← ΒΑΘΜΟΣ[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΟΝΟΜΑ[Θ] ← ΝΕΟ_ΟΝΟΜΑ
ΒΑΘΜΟΣ[Θ] ← ΝΕΟΣ_ΒΑΘΜΟΣ
Ν ← Ν + 1

Γιατί η κίνηση είναι προς τα πίσω; Ξεκινάμε από τη θέση Ν, ώστε να μη γράψουμε πάνω σε στοιχείο που δεν έχει ακόμη αντιγραφεί.

Άσκηση 14 – Αύξουσα ταξινόμηση ως προς την τιμή

Εκφώνηση: Οι πίνακες ΠΡΟΙΟΝ[30] και ΤΙΜΗ[30] περιέχουν 30 προϊόντα. Να ταξινομηθούν από το φθηνότερο στο ακριβότερο και να εμφανιστεί η ταξινομημένη κατάσταση.

Λύση
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 30
  ΓΙΑ j ΑΠΟ 30 ΜΕΧΡΙ i ΜΕ_ΒΗΜΑ -1
    ΑΝ ΤΙΜΗ[j] < ΤΙΜΗ[j - 1] ΤΟΤΕ
      ΠΡΟΣ_ΤΙΜΗ ← ΤΙΜΗ[j]
      ΤΙΜΗ[j] ← ΤΙΜΗ[j - 1]
      ΤΙΜΗ[j - 1] ← ΠΡΟΣ_ΤΙΜΗ

      ΠΡΟΣ_ΟΝΟΜΑ ← ΠΡΟΙΟΝ[j]
      ΠΡΟΙΟΝ[j] ← ΠΡΟΙΟΝ[j - 1]
      ΠΡΟΙΟΝ[j - 1] ← ΠΡΟΣ_ΟΝΟΜΑ
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 30
  ΓΡΑΨΕ ΠΡΟΙΟΝ[i], ' ', ΤΙΜΗ[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

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

Άσκηση 15 – Φθίνουσα ταξινόμηση ως προς τον βαθμό

Εκφώνηση: Για 25 υποψηφίους είναι γνωστά το όνομα και ο βαθμός τους. Να εμφανιστεί κατάταξη από τον μεγαλύτερο προς τον μικρότερο βαθμό.

Λύση
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 25
  ΓΙΑ j ΑΠΟ 25 ΜΕΧΡΙ i ΜΕ_ΒΗΜΑ -1
    ΑΝ ΒΑΘΜΟΣ[j] > ΒΑΘΜΟΣ[j - 1] ΤΟΤΕ
      ΠΡΟΣ_ΒΑΘΜΟΣ ← ΒΑΘΜΟΣ[j]
      ΒΑΘΜΟΣ[j] ← ΒΑΘΜΟΣ[j - 1]
      ΒΑΘΜΟΣ[j - 1] ← ΠΡΟΣ_ΒΑΘΜΟΣ

      ΠΡΟΣ_ΟΝΟΜΑ ← ΟΝΟΜΑ[j]
      ΟΝΟΜΑ[j] ← ΟΝΟΜΑ[j - 1]
      ΟΝΟΜΑ[j - 1] ← ΠΡΟΣ_ΟΝΟΜΑ
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 25
  ΓΡΑΨΕ i, ' ', ΟΝΟΜΑ[i], ' ', ΒΑΘΜΟΣ[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

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

Άσκηση 16 – Ταξινόμηση με δεύτερο κριτήριο

Εκφώνηση: Να ταξινομηθούν 40 μαθητές κατά φθίνουσα σειρά βαθμού. Σε περίπτωση ισοβαθμίας, τα ονόματα να εμφανίζονται κατά αλφαβητική σειρά.

Λύση
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 40
  ΓΙΑ j ΑΠΟ 40 ΜΕΧΡΙ i ΜΕ_ΒΗΜΑ -1
    ΑΝ ΒΑΘΜΟΣ[j] > ΒΑΘΜΟΣ[j - 1] Ή (ΒΑΘΜΟΣ[j] = ΒΑΘΜΟΣ[j - 1] ΚΑΙ ΟΝΟΜΑ[j] < ΟΝΟΜΑ[j - 1]) ΤΟΤΕ

      ΠΡΟΣ_ΒΑΘΜΟΣ ← ΒΑΘΜΟΣ[j]
      ΒΑΘΜΟΣ[j] ← ΒΑΘΜΟΣ[j - 1]
      ΒΑΘΜΟΣ[j - 1] ← ΠΡΟΣ_ΒΑΘΜΟΣ

      ΠΡΟΣ_ΟΝΟΜΑ ← ΟΝΟΜΑ[j]
      ΟΝΟΜΑ[j] ← ΟΝΟΜΑ[j - 1]
      ΟΝΟΜΑ[j - 1] ← ΠΡΟΣ_ΟΝΟΜΑ
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Λογική της συνθήκης: γίνεται αντιμετάθεση είτε όταν παραβιάζεται η φθίνουσα σειρά των βαθμών είτε όταν οι βαθμοί είναι ίσοι και παραβιάζεται η αλφαβητική σειρά των ονομάτων.

Άσκηση 17 – Ταξινόμηση τριών παράλληλων πινάκων

Εκφώνηση: Για 35 αυτοκίνητα είναι γνωστά η πινακίδα, το μοντέλο και το έτος κυκλοφορίας. Να ταξινομηθούν κατά αύξον έτος και να εμφανιστούν όλα τα στοιχεία τους.

Λύση
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 35
  ΓΙΑ j ΑΠΟ 35 ΜΕΧΡΙ i ΜΕ_ΒΗΜΑ -1
    ΑΝ ΕΤΟΣ[j] < ΕΤΟΣ[j - 1] ΤΟΤΕ
      ΠΡΟΣ_ΕΤΟΣ ← ΕΤΟΣ[j]
      ΕΤΟΣ[j] ← ΕΤΟΣ[j - 1]
      ΕΤΟΣ[j - 1] ← ΠΡΟΣ_ΕΤΟΣ

      ΠΡΟΣ_ΠΙΝΑΚΙΔΑ ← ΠΙΝΑΚΙΔΑ[j]
      ΠΙΝΑΚΙΔΑ[j] ← ΠΙΝΑΚΙΔΑ[j - 1]
      ΠΙΝΑΚΙΔΑ[j - 1] ← ΠΡΟΣ_ΠΙΝΑΚΙΔΑ

      ΠΡΟΣ_ΜΟΝΤΕΛΟ ← ΜΟΝΤΕΛΟ[j]
      ΜΟΝΤΕΛΟ[j] ← ΜΟΝΤΕΛΟ[j - 1]
      ΜΟΝΤΕΛΟ[j - 1] ← ΠΡΟΣ_ΜΟΝΤΕΛΟ
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 35
  ΓΡΑΨΕ ΠΙΝΑΚΙΔΑ[i], ' ', ΜΟΝΤΕΛΟ[i], ' ', ΕΤΟΣ[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Τρεις πίνακες, μία εγγραφή: σε κάθε αντιμετάθεση μετακινούνται και τα τρία πεδία. Χρειάζονται βοηθητικές μεταβλητές κατάλληλου τύπου για κάθε πεδίο.

Άσκηση 18 – Εύρεση των τριών πρώτων μετά από ταξινόμηση

Εκφώνηση: Για 20 πωλητές είναι γνωστά το όνομα και οι ετήσιες πωλήσεις. Να εμφανιστούν οι τρεις πωλητές με τις μεγαλύτερες πωλήσεις, από τον πρώτο προς τον τρίτο.

Λύση
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 20
  ΓΙΑ j ΑΠΟ 20 ΜΕΧΡΙ i ΜΕ_ΒΗΜΑ -1
    ΑΝ ΠΩΛΗΣΕΙΣ[j] > ΠΩΛΗΣΕΙΣ[j - 1] ΤΟΤΕ
      ΠΡΟΣ_ΠΩΛΗΣΕΙΣ ← ΠΩΛΗΣΕΙΣ[j]
      ΠΩΛΗΣΕΙΣ[j] ← ΠΩΛΗΣΕΙΣ[j - 1]
      ΠΩΛΗΣΕΙΣ[j - 1] ← ΠΡΟΣ_ΠΩΛΗΣΕΙΣ

      ΠΡΟΣ_ΟΝΟΜΑ ← ΟΝΟΜΑ[j]
      ΟΝΟΜΑ[j] ← ΟΝΟΜΑ[j - 1]
      ΟΝΟΜΑ[j - 1] ← ΠΡΟΣ_ΟΝΟΜΑ
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 3
  ΓΡΑΨΕ i, 'η θέση: ', ΟΝΟΜΑ[i], ' ', ΠΩΛΗΣΕΙΣ[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Αποτέλεσμα: μετά τη φθίνουσα ταξινόμηση, οι τρεις μεγαλύτερες τιμές βρίσκονται στις θέσεις 1, 2 και 3 μαζί με τα σωστά ονόματα.

Άσκηση 19 – Συγχώνευση ταξινομημένων παράλληλων πινάκων

Εκφώνηση: Δύο αγώνες έχουν 10 και 8 αθλητές αντίστοιχα. Οι πίνακες ΟΝΟΜΑ1, ΧΡΟΝΟΣ1 και ΟΝΟΜΑ2, ΧΡΟΝΟΣ2 είναι ήδη ταξινομημένοι κατά αύξοντα χρόνο. Να συγχωνευτούν στους πίνακες ΟΝΟΜΑ3[18] και ΧΡΟΝΟΣ3[18], διατηρώντας την αύξουσα σειρά.

Λύση
i ← 1
j ← 1
k ← 1

ΟΣΟ i <= 10 ΚΑΙ j <= 8 ΕΠΑΝΑΛΑΒΕ
  ΑΝ ΧΡΟΝΟΣ1[i] <= ΧΡΟΝΟΣ2[j] ΤΟΤΕ
    ΧΡΟΝΟΣ3[k] ← ΧΡΟΝΟΣ1[i]
    ΟΝΟΜΑ3[k] ← ΟΝΟΜΑ1[i]
    i ← i + 1
  ΑΛΛΙΩΣ
    ΧΡΟΝΟΣ3[k] ← ΧΡΟΝΟΣ2[j]
    ΟΝΟΜΑ3[k] ← ΟΝΟΜΑ2[j]
    j ← j + 1
  ΤΕΛΟΣ_ΑΝ
  k ← k + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΟΣΟ i <= 10 ΕΠΑΝΑΛΑΒΕ
  ΧΡΟΝΟΣ3[k] ← ΧΡΟΝΟΣ1[i]
  ΟΝΟΜΑ3[k] ← ΟΝΟΜΑ1[i]
  i ← i + 1
  k ← k + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΟΣΟ j <= 8 ΕΠΑΝΑΛΑΒΕ
  ΧΡΟΝΟΣ3[k] ← ΧΡΟΝΟΣ2[j]
  ΟΝΟΜΑ3[k] ← ΟΝΟΜΑ2[j]
  j ← j + 1
  k ← k + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Αντιστοίχιση: κάθε φορά που αντιγράφεται ένας χρόνος στον τρίτο πίνακα, αντιγράφεται στην ίδια θέση και το όνομα του ίδιου αθλητή.

Άσκηση 20 – Ολοκληρωμένη άσκηση εξετάσεων

Εκφώνηση: Σε έναν διαγωνισμό συμμετέχουν 30 υποψήφιοι. Για κάθε υποψήφιο να διαβάζονται ένας μοναδικός κωδικός, το όνομα και η βαθμολογία του από 0 έως 100. Το πρόγραμμα:

  1. να ελέγχει την εγκυρότητα κάθε βαθμολογίας,
  2. να υπολογίζει τον μέσο όρο όλων των βαθμολογιών,
  3. να εμφανίζει τους υποψηφίους που πέτυχαν βαθμολογία τουλάχιστον 60 και ταυτόχρονα μεγαλύτερη από τον μέσο όρο,
  4. να ταξινομεί τις εγγραφές κατά φθίνουσα βαθμολογία και, σε ισοβαθμία, κατά αύξον όνομα,
  5. να εμφανίζει την πρώτη πεντάδα της κατάταξης.
Λύση
ΠΡΟΓΡΑΜΜΑ Διαγωνισμος
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: i, j, ΚΩΔΙΚΟΣ[30], ΠΡΟΣ_ΚΩΔΙΚΟΣ
  ΠΡΑΓΜΑΤΙΚΕΣ: ΒΑΘΜΟΣ[30], ΑΘΡΟΙΣΜΑ, ΜΟ, ΠΡΟΣ_ΒΑΘΜΟΣ
  ΧΑΡΑΚΤΗΡΕΣ: ΟΝΟΜΑ[30], ΠΡΟΣ_ΟΝΟΜΑ
ΑΡΧΗ
  ΑΘΡΟΙΣΜΑ ← 0

  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 30
    ΔΙΑΒΑΣΕ ΚΩΔΙΚΟΣ[i], ΟΝΟΜΑ[i]

    ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
      ΔΙΑΒΑΣΕ ΒΑΘΜΟΣ[i]
    ΜΕΧΡΙΣ_ΟΤΟΥ ΒΑΘΜΟΣ[i] >= 0 ΚΑΙ ΒΑΘΜΟΣ[i] <= 100

    ΑΘΡΟΙΣΜΑ ← ΑΘΡΟΙΣΜΑ + ΒΑΘΜΟΣ[i]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  ΜΟ ← ΑΘΡΟΙΣΜΑ / 30
  ΓΡΑΨΕ 'Μέσος όρος: ', ΜΟ
  ΓΡΑΨΕ 'Επιτυχόντες πάνω από τον μέσο όρο:'

  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 30
    ΑΝ ΒΑΘΜΟΣ[i] >= 60 ΚΑΙ ΒΑΘΜΟΣ[i] > ΜΟ ΤΟΤΕ
      ΓΡΑΨΕ ΚΩΔΙΚΟΣ[i], ' ', ΟΝΟΜΑ[i], ' ', ΒΑΘΜΟΣ[i]
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 30
    ΓΙΑ j ΑΠΟ 30 ΜΕΧΡΙ i ΜΕ_ΒΗΜΑ -1
      ΑΝ ΒΑΘΜΟΣ[j] > ΒΑΘΜΟΣ[j - 1] Ή (ΒΑΘΜΟΣ[j] = ΒΑΘΜΟΣ[j - 1] ΚΑΙ ΟΝΟΜΑ[j] < ΟΝΟΜΑ[j - 1]) ΤΟΤΕ

        ΠΡΟΣ_ΒΑΘΜΟΣ ← ΒΑΘΜΟΣ[j]
        ΒΑΘΜΟΣ[j] ← ΒΑΘΜΟΣ[j - 1]
        ΒΑΘΜΟΣ[j - 1] ← ΠΡΟΣ_ΒΑΘΜΟΣ

        ΠΡΟΣ_ΟΝΟΜΑ ← ΟΝΟΜΑ[j]
        ΟΝΟΜΑ[j] ← ΟΝΟΜΑ[j - 1]
        ΟΝΟΜΑ[j - 1] ← ΠΡΟΣ_ΟΝΟΜΑ

        ΠΡΟΣ_ΚΩΔΙΚΟΣ ← ΚΩΔΙΚΟΣ[j]
        ΚΩΔΙΚΟΣ[j] ← ΚΩΔΙΚΟΣ[j - 1]
        ΚΩΔΙΚΟΣ[j - 1] ← ΠΡΟΣ_ΚΩΔΙΚΟΣ
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  ΓΡΑΨΕ 'Πρώτη πεντάδα:'
  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5
    ΓΡΑΨΕ i, ' ', ΚΩΔΙΚΟΣ[i], ' ', ΟΝΟΜΑ[i], ' ', ΒΑΘΜΟΣ[i]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Διαγωνισμος

Συνολική εικόνα: ο πίνακας ΒΑΘΜΟΣ χρησιμοποιείται για τον μέσο όρο, τα κριτήρια και την ταξινόμηση. Ωστόσο, σε κάθε αντιμετάθεση μετακινούνται μαζί ο κωδικός, το όνομα και ο βαθμός, ώστε η εγγραφή κάθε υποψηφίου να παραμένει ενιαία.

7. Συχνές ερωτήσεις

Οι παράλληλοι πίνακες πρέπει να έχουν τον ίδιο τύπο;

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

Πρέπει να έχουν το ίδιο μέγεθος;

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

Ποια είναι η διαφορά τους από έναν δισδιάστατο πίνακα;

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

Ποιος πίνακας ταξινομείται;

Οι συγκρίσεις γίνονται στον πίνακα που εκφράζει το ζητούμενο κριτήριο, αλλά οι ίδιες αντιμεταθέσεις εκτελούνται σε όλους τους παράλληλους πίνακες.

Γιατί είναι χρήσιμο να αποθηκεύουμε τη θέση ενός μέγιστου;

Επειδή η θέση επιτρέπει να εμφανίσουμε αμέσως όλα τα αντίστοιχα στοιχεία. Αν το μέγιστο βρίσκεται στη θέση k, τότε το όνομα είναι ΟΝΟΜΑ[k], ο κωδικός ΚΩΔΙΚΟΣ[k] κ.ο.κ.

Τι πρέπει να θυμάμαι στις εξετάσεις;

Μία πρόταση αρκεί: ίδια θέση σημαίνει ίδια εγγραφή· όταν μετακινείται ένα πεδίο, μετακινούνται μαζί όλα τα πεδία της εγγραφής.

Οι ασκήσεις του άρθρου είναι πρωτότυπες και έχουν δημιουργηθεί για εξάσκηση στη μεθοδολογία των παράλληλων πινάκων στη ΓΛΩΣΣΑ.


0 Comments

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *

You cannot copy content of this page

Ασκήσεις ΑΕΠΠ με Λύσεις – Θέματα Α,Β,Γ & Δ για Πανελλήνιες | infoclass.gr