Εκπαιδευτικός οδηγός ΑΕΠΠ

Δισδιάστατοι Πίνακες

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

Σαφής μεθοδολογία 20 πλήρεις λύσεις Κώδικας σε ΓΛΩΣΣΑ

Εισαγωγή

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

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

Κεντρική ιδέα. Ο εξωτερικός βρόχος καθορίζει ποια ομάδα επεξεργαζόμαστε· ο εσωτερικός βρόχος διατρέχει τα στοιχεία της ομάδας.

1. Τι είναι ο δισδιάστατος πίνακας

Ένας δισδιάστατος πίνακας Α με R γραμμές και C στήλες περιέχει R·C στοιχεία. Κάθε στοιχείο προσδιορίζεται από δύο δείκτες: Α[i,j], όπου i είναι ο αριθμός της γραμμής και j ο αριθμός της στήλης. Στη ΓΛΩΣΣΑ οι δείκτες ξεκινούν από το 1.

ΠΡΟΓΡΑΜΜΑ Παράδειγμα_Δήλωσης
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Α[4,5], i, j
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 4
  ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 5
    ΔΙΑΒΑΣΕ Α[i,j]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Ο παραπάνω πίνακας έχει 4 γραμμές, 5 στήλες και συνολικά 20 στοιχεία. Για κάθε σταθερή τιμή του i, ο δείκτης j παίρνει διαδοχικά όλες τις τιμές από 1 έως 5. Άρα τα στοιχεία διαβάζονται γραμμή προς γραμμή.

2. Τα βασικά μοτίβα σάρωσης

Η σωστή επιλογή των ορίων στους βρόχους λύνει το μεγαλύτερο μέρος του προβλήματος. Ο επόμενος πίνακας συγκεντρώνει τις συνηθέστερες περιοχές ενός τετραγωνικού πίνακα Ν×Ν.

Περιοχή Συνθήκη ή όρια Παρατήρηση
Όλα τα στοιχεία i=1..R, j=1..C Πλήρης σάρωση πίνακα R×C
Γραμμή i j=1..C Ο δείκτης γραμμής παραμένει σταθερός
Στήλη j i=1..R Ο δείκτης στήλης παραμένει σταθερός
Κύρια διαγώνιος i=j Στοιχεία Α[i,i]
Δευτερεύουσα διαγώνιος i+j=N+1 Στοιχεία Α[i,N+1-i]
Πάνω από κύρια i<j Ισοδύναμα: j>i
Κάτω από κύρια i>j Ισοδύναμα: j<i

3. Η σταθερή μεθοδολογία σε έξι βήματα

Βήμα 1 – Αναγνώρισε τι παριστάνουν οι διαστάσεις.

Γράψε δίπλα στον πίνακα τι σημαίνει η γραμμή και τι η στήλη. Για παράδειγμα, Β[30,6]: γραμμή=μαθητής, στήλη=μάθημα.

Βήμα 2 – Σχεδίασε έναν μικρό πίνακα.

Ένα σχήμα 3×4 αποκαλύπτει αμέσως ποιος δείκτης πρέπει να παραμένει σταθερός και ποιος να μεταβάλλεται.

Βήμα 3 – Επίλεξε την κατεύθυνση σάρωσης.

Για αποτέλεσμα ανά γραμμή, εξωτερικός βρόχος είναι το i. Για αποτέλεσμα ανά στήλη, εξωτερικός βρόχος είναι το j.

Βήμα 4 – Τοποθέτησε σωστά την αρχικοποίηση.

Το άθροισμα ή το ακρότατο μιας γραμμής αρχικοποιείται μέσα στον εξωτερικό βρόχο και πριν από τον εσωτερικό.

Βήμα 5 – Επεξεργάσου κάθε στοιχείο.

Μέσα στον εσωτερικό βρόχο γίνεται η πρόσθεση, η σύγκριση, η καταμέτρηση ή η αλλαγή του Α[i,j].

Βήμα 6 – Εμφάνισε το αποτέλεσμα στο σωστό σημείο.

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

4. Αρχικοποίηση: το σημείο που κρίνει τη λύση

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

Ζητούμενο Σωστή αρχικοποίηση Θέση
Συνολικό άθροισμα sum ← 0 Πριν από τους δύο βρόχους
Άθροισμα κάθε γραμμής sum ← 0 Μέσα στον εξωτερικό βρόχο i
Μέγιστο όλου του πίνακα max ← Α[1,1] Μετά την εισαγωγή του πίνακα
Μέγιστο κάθε γραμμής max ← Α[i,1] Στην αρχή κάθε νέας γραμμής
Ελάχιστο κάθε στήλης min ← Α[1,j] Στην αρχή κάθε νέας στήλης

5. Συχνά λάθη

Λάθος 1 – Αντιστροφή των διαστάσεων.

Αν ο πίνακας είναι Α[4,7], το i φτάνει έως 4 και το j έως 7. Η αντιστροφή μπορεί να οδηγήσει σε μη επιτρεπτό δείκτη.

Λάθος 2 – Αρχικοποίηση αθροίσματος μέσα στον εσωτερικό βρόχο.

Τότε το άθροισμα μηδενίζεται πριν προλάβει να συγκεντρώσει όλα τα στοιχεία της γραμμής ή της στήλης.

Λάθος 3 – Εμφάνιση αποτελέσματος πολύ νωρίς.

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

Λάθος 4 – Μέγιστο με αρχική τιμή 0.

Αν όλα τα στοιχεία είναι αρνητικά, το 0 θα παραμείνει λανθασμένα ως μέγιστο. Χρησιμοποίησε Α[1,1], Α[i,1] ή Α[1,j].

Λάθος 5 – Διπλός έλεγχος συμμετρικών ζευγών.

Για συμμετρία αρκεί το πάνω τριγωνικό μέρος, δηλαδή j>i. Το Α[i,j] συγκρίνεται με το Α[j,i] μία μόνο φορά.

Λάθος 6 – Διπλή μέτρηση του κεντρικού στοιχείου.

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

6. Χάρτης των 20 λυμένων ασκήσεων

# Άσκηση Κύρια τεχνική Επίπεδο
1 Εισαγωγή και εμφάνιση Διπλή επανάληψη Βασικό
2 Συνολικό άθροισμα και μέσος όρος Πλήρης σάρωση Βασικό
3 Θετικά, αρνητικά και μηδενικά Μετρητές και ποσοστό Βασικό
4 Μέσος όρος ανά μαθητή Επεξεργασία γραμμών Βασικό
5 Μέσος όρος ανά μάθημα Επεξεργασία στηλών Βασικό
6 Καθολικό μέγιστο και θέσεις Δύο σαρώσεις Μέτριο
7 Μέγιστο κάθε γραμμής Ακρότατο ανά γραμμή Μέτριο
8 Ελάχιστο κάθε στήλης Ακρότατο ανά στήλη Μέτριο
9 Γραμμή με μεγαλύτερο άθροισμα Σύγκριση αθροισμάτων Μέτριο
10 Στήλη με μικρότερο μέσο όρο Σύγκριση μέσων όρων Μέτριο
11 Οι δύο διαγώνιοι Δείκτες διαγωνίων Μέτριο
12 Πάνω και κάτω από τη διαγώνιο Τριγωνικές περιοχές Μέτριο
13 Έλεγχος μοναδιαίου πίνακα Λογική σημαία Μέτριο
14 Έλεγχος συμμετρικού πίνακα Συμμετρικά ζεύγη Προχωρημένο
15 Ανάστροφος ορθογώνιου πίνακα Ανταλλαγή δεικτών Προχωρημένο
16 Αναζήτηση και αντικατάσταση Θέσεις και μεταβολή Μέτριο
17 Ανταλλαγή δύο γραμμών Προσωρινή μεταβλητή Προχωρημένο
18 Ανάλυση πωλήσεων Αθροίσματα γραμμών/στηλών Προχωρημένο
19 Αποτελέσματα μαθητών Σημαίες και βοηθητικός πίνακας Προχωρημένο
20 Διαχείριση κινηματογράφου Σύνθεση πολλών μοτίβων Προχωρημένο

7. Είκοσι λυμένες ασκήσεις

Άσκηση 1. Εισαγωγή και εμφάνιση πίνακα

Επίπεδο: Βασικό

Εκφώνηση. Να διαβαστούν 12 ακέραιοι σε πίνακα Α[3,4] και να εμφανιστεί κάθε στοιχείο μαζί με τη γραμμή και τη στήλη στην οποία βρίσκεται.

Ιδέα λύσης. Χρησιμοποιούμε δύο εμφωλευμένες επαναλήψεις. Η πρώτη σάρωση γεμίζει τον πίνακα και η δεύτερη τον εμφανίζει. Έτσι ξεχωρίζουμε καθαρά την εισαγωγή από την επεξεργασία.

Λύση σε ΓΛΩΣΣΑ

ΠΡΟΓΡΑΜΜΑ Ασκηση1
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Α[3,4], i, j
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 3
  ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 4
    ΔΙΑΒΑΣΕ Α[i,j]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 3
  ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 4
    ΓΡΑΨΕ 'Α[', i, ',', j, '] = ', Α[i,j]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Κρίσιμο σημείο. Ο δείκτης i δεν πρέπει να ξεπεράσει το 3 και ο j δεν πρέπει να ξεπεράσει το 4.

↑ Επιστροφή στις λυμένες ασκήσεις

Άσκηση 2. Συνολικό άθροισμα και μέσος όρος

Επίπεδο: Βασικό

Εκφώνηση. Σε πίνακα Θ[4,5] αποθηκεύονται 20 πραγματικές θερμοκρασίες. Να υπολογιστούν το άθροισμα και ο μέσος όρος όλων των θερμοκρασιών.

Ιδέα λύσης. Το συνολικό άθροισμα αφορά ολόκληρο τον πίνακα, άρα αρχικοποιείται μία φορά πριν από τους δύο βρόχους. Ο πίνακας έχει 4·5=20 στοιχεία.

Λύση σε ΓΛΩΣΣΑ

ΠΡΟΓΡΑΜΜΑ Ασκηση2
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: i, j
ΠΡΑΓΜΑΤΙΚΕΣ: Θ[4,5], αθροισμα, μεσος
ΑΡΧΗ
αθροισμα <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 4
  ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 5
    ΔΙΑΒΑΣΕ Θ[i,j]
    αθροισμα <- αθροισμα + Θ[i,j]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
μεσος <- αθροισμα / 20
ΓΡΑΨΕ 'Αθροισμα: ', αθροισμα
ΓΡΑΨΕ 'Μεσος ορος: ', μεσος
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Κρίσιμο σημείο. Αν το αθροισμα μηδενιζόταν μέσα σε κάποιον βρόχο, θα χάνονταν τα προηγούμενα στοιχεία.

↑ Επιστροφή στις λυμένες ασκήσεις

Άσκηση 3. Καταμέτρηση θετικών, αρνητικών και μηδενικών

Επίπεδο: Βασικό

Εκφώνηση. Να διαβαστεί πίνακας Α[5,6] ακεραίων. Να εμφανιστεί το πλήθος των θετικών, των αρνητικών και των μηδενικών, καθώς και το ποσοστό των θετικών.

Ιδέα λύσης. Κάθε στοιχείο ανήκει ακριβώς σε μία από τις τρεις κατηγορίες. Χρησιμοποιούμε τρεις μετρητές και στο τέλος διαιρούμε το πλήθος των θετικών με τα 30 στοιχεία.

Λύση σε ΓΛΩΣΣΑ

ΠΡΟΓΡΑΜΜΑ Ασκηση3
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Α[5,6], i, j, θετικα, αρνητικα, μηδενικα
ΠΡΑΓΜΑΤΙΚΕΣ: ποσοστο
ΑΡΧΗ
θετικα <- 0
αρνητικα <- 0
μηδενικα <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5
  ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 6
    ΔΙΑΒΑΣΕ Α[i,j]
    ΑΝ Α[i,j] > 0 ΤΟΤΕ
      θετικα <- θετικα + 1
    ΑΛΛΙΩΣ_ΑΝ Α[i,j] < 0 ΤΟΤΕ
      αρνητικα <- αρνητικα + 1
    ΑΛΛΙΩΣ
      μηδενικα <- μηδενικα + 1
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ποσοστο <- 100 * θετικα / 30
ΓΡΑΨΕ 'Θετικα: ', θετικα
ΓΡΑΨΕ 'Αρνητικα: ', αρνητικα
ΓΡΑΨΕ 'Μηδενικα: ', μηδενικα
ΓΡΑΨΕ 'Ποσοστο θετικων: ', ποσοστο, '%'
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Κρίσιμο σημείο. Οι τρεις περιπτώσεις είναι αμοιβαία αποκλειόμενες, επομένως ταιριάζει η δομή ΑΝ–ΑΛΛΙΩΣ_ΑΝ–ΑΛΛΙΩΣ.

↑ Επιστροφή στις λυμένες ασκήσεις

Άσκηση 4. Μέσος όρος βαθμών ανά μαθητή

Επίπεδο: Βασικό

Εκφώνηση. Σε πίνακα Β[6,4] αποθηκεύονται οι βαθμοί 6 μαθητών σε 4 διαγωνίσματα. Να εμφανιστεί ο μέσος όρος κάθε μαθητή.

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

Λύση σε ΓΛΩΣΣΑ

ΠΡΟΓΡΑΜΜΑ Ασκηση4
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: i, j
ΠΡΑΓΜΑΤΙΚΕΣ: Β[6,4], αθροισμα, μεσος
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 6
  ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 4
    ΔΙΑΒΑΣΕ Β[i,j]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 6
  αθροισμα <- 0
  ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 4
    αθροισμα <- αθροισμα + Β[i,j]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  μεσος <- αθροισμα / 4
  ΓΡΑΨΕ 'Μαθητης ', i, ': ', μεσος
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Κρίσιμο σημείο. Το αθροισμα μηδενίζεται μέσα στον βρόχο i, επειδή χρειαζόμαστε νέο άθροισμα για κάθε μαθητή.

↑ Επιστροφή στις λυμένες ασκήσεις

Άσκηση 5. Μέσος όρος βαθμών ανά μάθημα

Επίπεδο: Βασικό

Εκφώνηση. Σε πίνακα Β[8,3] αποθηκεύονται οι βαθμοί 8 μαθητών σε 3 μαθήματα. Να εμφανιστεί ο μέσος όρος κάθε μαθήματος.

Ιδέα λύσης. Τώρα η ζητούμενη ομάδα είναι η στήλη. Ο εξωτερικός βρόχος διατρέχει τα μαθήματα j και ο εσωτερικός τους μαθητές i.

Λύση σε ΓΛΩΣΣΑ

ΠΡΟΓΡΑΜΜΑ Ασκηση5
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: i, j
ΠΡΑΓΜΑΤΙΚΕΣ: Β[8,3], αθροισμα, μεσος
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 8
  ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 3
    ΔΙΑΒΑΣΕ Β[i,j]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 3
  αθροισμα <- 0
  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 8
    αθροισμα <- αθροισμα + Β[i,j]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  μεσος <- αθροισμα / 8
  ΓΡΑΨΕ 'Μαθημα ', j, ': ', μεσος
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Κρίσιμο σημείο. Η αλλαγή της σειράς των βρόχων δεν είναι διακοσμητική: κρατά σταθερό το μάθημα μέχρι να εξεταστούν όλοι οι μαθητές.

↑ Επιστροφή στις λυμένες ασκήσεις

Άσκηση 6. Καθολικό μέγιστο και όλες οι θέσεις του

Επίπεδο: Μέτριο

Εκφώνηση. Να διαβαστεί πίνακας Α[5,5]. Να βρεθεί η μέγιστη τιμή και να εμφανιστούν όλες οι θέσεις στις οποίες αυτή εμφανίζεται.

Ιδέα λύσης. Μετά την εισαγωγή αρχικοποιούμε το μεγιστο με το Α[1,1]. Μία σάρωση βρίσκει τη μέγιστη τιμή και δεύτερη σάρωση εντοπίζει όλες τις ισοπαλίες.

Λύση σε ΓΛΩΣΣΑ

ΠΡΟΓΡΑΜΜΑ Ασκηση6
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Α[5,5], i, j, μεγιστο, πληθος
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5
  ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 5
    ΔΙΑΒΑΣΕ Α[i,j]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
μεγιστο <- Α[1,1]
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5
  ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 5
    ΑΝ Α[i,j] > μεγιστο ΤΟΤΕ
      μεγιστο <- Α[i,j]
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
πληθος <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5
  ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 5
    ΑΝ Α[i,j] = μεγιστο ΤΟΤΕ
      πληθος <- πληθος + 1
      ΓΡΑΨΕ 'Θεση: ', i, ',', j
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Μεγιστη τιμη: ', μεγιστο
ΓΡΑΨΕ 'Πληθος εμφανισεων: ', πληθος
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Κρίσιμο σημείο. Η αρχικοποίηση με Α[1,1] λειτουργεί σωστά ακόμη και αν όλα τα στοιχεία είναι αρνητικά.

↑ Επιστροφή στις λυμένες ασκήσεις

Άσκηση 7. Μέγιστο στοιχείο κάθε γραμμής

Επίπεδο: Μέτριο

Εκφώνηση. Σε πίνακα Θ[7,4] αποθηκεύονται οι θερμοκρασίες 7 πόλεων σε 4 μετρήσεις. Να εμφανιστεί η μεγαλύτερη θερμοκρασία κάθε πόλης και η μέτρηση στην οποία σημειώθηκε πρώτη φορά.

Ιδέα λύσης. Για κάθε γραμμή i αρχικοποιούμε μεγιστο με το πρώτο στοιχείο Θ[i,1]. Σαρώνουμε τις υπόλοιπες στήλες και αποθηκεύουμε τη θέση μόνο όταν βρεθεί αυστηρά μεγαλύτερη τιμή.

Λύση σε ΓΛΩΣΣΑ

ΠΡΟΓΡΑΜΜΑ Ασκηση7
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: i, j, θεση
ΠΡΑΓΜΑΤΙΚΕΣ: Θ[7,4], μεγιστο
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 7
  ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 4
    ΔΙΑΒΑΣΕ Θ[i,j]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 7
  μεγιστο <- Θ[i,1]
  θεση <- 1
  ΓΙΑ j ΑΠΟ 2 ΜΕΧΡΙ 4
    ΑΝ Θ[i,j] > μεγιστο ΤΟΤΕ
      μεγιστο <- Θ[i,j]
      θεση <- j
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΓΡΑΨΕ 'Πολη ', i, ': ', μεγιστο
  ΓΡΑΨΕ 'Πρωτη εμφανιση στη μετρηση ', θεση
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Κρίσιμο σημείο. Το μεγιστο επαναρχικοποιείται για κάθε νέα γραμμή, όχι μία φορά για ολόκληρο τον πίνακα.

↑ Επιστροφή στις λυμένες ασκήσεις

Άσκηση 8. Ελάχιστη τιμή κάθε στήλης

Επίπεδο: Μέτριο

Εκφώνηση. Πέντε προμηθευτές δίνουν τιμές για τέσσερα προϊόντα σε πίνακα Τ[5,4]. Να εμφανιστεί για κάθε προϊόν η μικρότερη τιμή και ο προμηθευτής που την προσφέρει πρώτος.

Ιδέα λύσης. Κάθε προϊόν είναι μία στήλη. Για τη στήλη j αρχικοποιούμε ελαχιστο με Τ[1,j] και συγκρίνουμε τους προμηθευτές 2 έως 5.

Λύση σε ΓΛΩΣΣΑ

ΠΡΟΓΡΑΜΜΑ Ασκηση8
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: i, j, προμηθευτης
ΠΡΑΓΜΑΤΙΚΕΣ: Τ[5,4], ελαχιστο
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5
  ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 4
    ΔΙΑΒΑΣΕ Τ[i,j]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 4
  ελαχιστο <- Τ[1,j]
  προμηθευτης <- 1
  ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 5
    ΑΝ Τ[i,j] < ελαχιστο ΤΟΤΕ
      ελαχιστο <- Τ[i,j]
      προμηθευτης <- i
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΓΡΑΨΕ 'Προϊον ', j, ': ', ελαχιστο
  ΓΡΑΨΕ 'Προμηθευτης ', προμηθευτης
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Κρίσιμο σημείο. Στην επεξεργασία στηλών ο εξωτερικός βρόχος είναι ο j και το αρχικό στοιχείο γράφεται Τ[1,j].

↑ Επιστροφή στις λυμένες ασκήσεις

Άσκηση 9. Γραμμή με το μεγαλύτερο άθροισμα

Επίπεδο: Μέτριο

Εκφώνηση. Σε πίνακα Π[6,12] αποθηκεύονται οι μη αρνητικές μηνιαίες πωλήσεις 6 καταστημάτων. Να βρεθεί το κατάστημα με το μεγαλύτερο ετήσιο σύνολο. Σε ισοπαλία να επιλεγεί το πρώτο.

Ιδέα λύσης. Υπολογίζουμε διαδοχικά το άθροισμα κάθε γραμμής. Μετά την ολοκλήρωση της γραμμής το συγκρίνουμε με το μεγαλύτερο άθροισμα που έχει βρεθεί.

Λύση σε ΓΛΩΣΣΑ

ΠΡΟΓΡΑΜΜΑ Ασκηση9
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: i, j, καλυτερο
ΠΡΑΓΜΑΤΙΚΕΣ: Π[6,12], αθροισμα, μεγ_αθροισμα
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 6
  ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 12
    ΔΙΑΒΑΣΕ Π[i,j]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 6
  αθροισμα <- 0
  ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 12
    αθροισμα <- αθροισμα + Π[i,j]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΑΝ i = 1 Ή αθροισμα > μεγ_αθροισμα ΤΟΤΕ
    μεγ_αθροισμα <- αθροισμα
    καλυτερο <- i
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Καλυτερο καταστημα: ', καλυτερο
ΓΡΑΨΕ 'Ετησιες πωλησεις: ', μεγ_αθροισμα
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

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

↑ Επιστροφή στις λυμένες ασκήσεις

Άσκηση 10. Στήλη με τον μικρότερο μέσο όρο

Επίπεδο: Μέτριο

Εκφώνηση. Σε πίνακα Π[7,5] αποθηκεύονται οι πωλήσεις 5 προϊόντων για 7 ημέρες. Να βρεθεί το προϊόν με τον μικρότερο μέσο όρο πωλήσεων. Σε ισοπαλία να επιλεγεί το πρώτο.

Ιδέα λύσης. Κάθε προϊόν είναι μία στήλη. Υπολογίζουμε τον μέσο όρο κάθε στήλης και τον συγκρίνουμε με τον μικρότερο μέσο όρο.

Λύση σε ΓΛΩΣΣΑ

ΠΡΟΓΡΑΜΜΑ Ασκηση10
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Π[7,5], i, j, προϊον
ΠΡΑΓΜΑΤΙΚΕΣ: αθροισμα, μεσος, ελαχ_μεσος
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 7
  ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 5
    ΔΙΑΒΑΣΕ Π[i,j]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 5
  αθροισμα <- 0
  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 7
    αθροισμα <- αθροισμα + Π[i,j]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  μεσος <- αθροισμα / 7
  ΑΝ j = 1 Ή μεσος < ελαχ_μεσος ΤΟΤΕ
    ελαχ_μεσος <- μεσος
    προϊον <- j
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Προϊον: ', προϊον
ΓΡΑΨΕ 'Μικροτερος μεσος ορος: ', ελαχ_μεσος
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Κρίσιμο σημείο. Ο διαιρέτης είναι 7, επειδή κάθε στήλη περιέχει τις τιμές των 7 ημερών.

↑ Επιστροφή στις λυμένες ασκήσεις

Άσκηση 11. Άθροισμα των δύο διαγωνίων

Επίπεδο: Μέτριο

Εκφώνηση. Να διαβαστεί τετραγωνικός πίνακας Α[5,5]. Να υπολογιστούν τα αθροίσματα της κύριας και της δευτερεύουσας διαγωνίου, καθώς και το άθροισμα των διαφορετικών στοιχείων που ανήκουν σε κάποια από τις δύο.

Ιδέα λύσης. Στην κύρια διαγώνιο βρίσκεται το Α[i,i], ενώ στη δευτερεύουσα το Α[i,6-i]. Επειδή ο πίνακας είναι περιττής τάξης, το Α[3,3] ανήκει και στις δύο και αφαιρείται μία φορά από το ενιαίο άθροισμα.

Λύση σε ΓΛΩΣΣΑ

ΠΡΟΓΡΑΜΜΑ Ασκηση11
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Α[5,5], i, j
ΑΚΕΡΑΙΕΣ: κυρια, δευτερευουσα, ενιαιο
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5
  ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 5
    ΔΙΑΒΑΣΕ Α[i,j]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
κυρια <- 0
δευτερευουσα <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5
  κυρια <- κυρια + Α[i,i]
  δευτερευουσα <- δευτερευουσα + Α[i,6-i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ενιαιο <- κυρια + δευτερευουσα - Α[3,3]
ΓΡΑΨΕ 'Κυρια διαγωνιος: ', κυρια
ΓΡΑΨΕ 'Δευτερευουσα διαγωνιος: ', δευτερευουσα
ΓΡΑΨΕ 'Διαφορετικα στοιχεια: ', ενιαιο
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Κρίσιμο σημείο. Στη δευτερεύουσα διαγώνιο το άθροισμα των δεικτών είναι πάντοτε 6, δηλαδή Ν+1.

↑ Επιστροφή στις λυμένες ασκήσεις

Άσκηση 12. Στοιχεία πάνω και κάτω από την κύρια διαγώνιο

Επίπεδο: Μέτριο

Εκφώνηση. Να διαβαστεί πίνακας Α[6,6]. Να υπολογιστεί το άθροισμα των στοιχείων πάνω από την κύρια διαγώνιο και το πλήθος των αρνητικών στοιχείων κάτω από αυτή.

Ιδέα λύσης. Πάνω από την κύρια διαγώνιο ισχύει j>i και κάτω από αυτή j<i. Περιορίζουμε τα όρια των βρόχων ώστε να μη σαρώνονται άχρηστα στοιχεία.

Λύση σε ΓΛΩΣΣΑ

ΠΡΟΓΡΑΜΜΑ Ασκηση12
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Α[6,6], i, j, αθροισμα, πληθος
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 6
  ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 6
    ΔΙΑΒΑΣΕ Α[i,j]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
αθροισμα <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5
  ΓΙΑ j ΑΠΟ i + 1 ΜΕΧΡΙ 6
    αθροισμα <- αθροισμα + Α[i,j]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
πληθος <- 0
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 6
  ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ i - 1
    ΑΝ Α[i,j] < 0 ΤΟΤΕ
      πληθος <- πληθος + 1
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Αθροισμα πανω απο τη διαγωνιο: ', αθροισμα
ΓΡΑΨΕ 'Αρνητικα κατω απο τη διαγωνιο: ', πληθος
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Κρίσιμο σημείο. Τα διαγώνια στοιχεία Α[i,i] δεν συμμετέχουν σε κανένα από τα δύο ζητούμενα.

↑ Επιστροφή στις λυμένες ασκήσεις

Άσκηση 13. Έλεγχος μοναδιαίου πίνακα

Επίπεδο: Μέτριο

Εκφώνηση. Ένας τετραγωνικός πίνακας είναι μοναδιαίος όταν έχει 1 στην κύρια διαγώνιο και 0 σε όλες τις άλλες θέσεις. Να ελεγχθεί αν ο ακέραιος πίνακας Α[5,5] είναι μοναδιαίος.

Ιδέα λύσης. Ξεκινάμε θεωρώντας ότι ο πίνακας είναι μοναδιαίος. Αν βρεθεί έστω ένα λανθασμένο στοιχείο, η λογική σημαία γίνεται ΨΕΥΔΗΣ και δεν ξαναγίνεται ΑΛΗΘΗΣ.

Λύση σε ΓΛΩΣΣΑ

ΠΡΟΓΡΑΜΜΑ Ασκηση13
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Α[5,5], i, j
ΛΟΓΙΚΕΣ: μοναδιαιος
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5
  ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 5
    ΔΙΑΒΑΣΕ Α[i,j]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
μοναδιαιος <- ΑΛΗΘΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5
  ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 5
    ΑΝ i = j ΤΟΤΕ
      ΑΝ Α[i,j] <> 1 ΤΟΤΕ
        μοναδιαιος <- ΨΕΥΔΗΣ
      ΤΕΛΟΣ_ΑΝ
    ΑΛΛΙΩΣ
      ΑΝ Α[i,j] <> 0 ΤΟΤΕ
        μοναδιαιος <- ΨΕΥΔΗΣ
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ μοναδιαιος ΤΟΤΕ
  ΓΡΑΨΕ 'Ο πινακας ειναι μοναδιαιος'
ΑΛΛΙΩΣ
  ΓΡΑΨΕ 'Ο πινακας δεν ειναι μοναδιαιος'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

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

↑ Επιστροφή στις λυμένες ασκήσεις

Άσκηση 14. Έλεγχος συμμετρικού πίνακα

Επίπεδο: Προχωρημένο

Εκφώνηση. Να διαβαστεί πίνακας Α[6,6] και να ελεγχθεί αν είναι συμμετρικός ως προς την κύρια διαγώνιο, δηλαδή αν Α[i,j]=Α[j,i] για κάθε ζεύγος θέσεων.

Ιδέα λύσης. Δεν χρειάζεται να εξετάσουμε ολόκληρο τον πίνακα. Ελέγχουμε μόνο τα στοιχεία πάνω από την κύρια διαγώνιο και τα συγκρίνουμε με τα συμμετρικά τους κάτω από αυτή.

Λύση σε ΓΛΩΣΣΑ

ΠΡΟΓΡΑΜΜΑ Ασκηση14
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Α[6,6], i, j
ΛΟΓΙΚΕΣ: συμμετρικος
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 6
  ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 6
    ΔΙΑΒΑΣΕ Α[i,j]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
συμμετρικος <- ΑΛΗΘΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5
  ΓΙΑ j ΑΠΟ i + 1 ΜΕΧΡΙ 6
    ΑΝ Α[i,j] <> Α[j,i] ΤΟΤΕ
      συμμετρικος <- ΨΕΥΔΗΣ
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ συμμετρικος ΤΟΤΕ
  ΓΡΑΨΕ 'Ο πινακας ειναι συμμετρικος'
ΑΛΛΙΩΣ
  ΓΡΑΨΕ 'Ο πινακας δεν ειναι συμμετρικος'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Κρίσιμο σημείο. Το ζεύγος Α[i,j] και Α[j,i] ελέγχεται μία φορά. Η κύρια διαγώνιος δεν χρειάζεται έλεγχο, επειδή κάθε στοιχείο της είναι ίσο με τον εαυτό του.

↑ Επιστροφή στις λυμένες ασκήσεις

Άσκηση 15. Ανάστροφος ορθογώνιου πίνακα

Επίπεδο: Προχωρημένο

Εκφώνηση. Να διαβαστεί πραγματικός πίνακας Α[3,5] και να δημιουργηθεί ο ανάστροφός του Β. Στη συνέχεια να εμφανιστούν τα στοιχεία του Β μαζί με τις θέσεις τους.

Ιδέα λύσης. Ο ανάστροφος πίνακας έχει 5 γραμμές και 3 στήλες. Κάθε στοιχείο Α[i,j] μεταφέρεται στη θέση Β[j,i].

Λύση σε ΓΛΩΣΣΑ

ΠΡΟΓΡΑΜΜΑ Ασκηση15
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: i, j
ΠΡΑΓΜΑΤΙΚΕΣ: Α[3,5], Β[5,3]
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 3
  ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 5
    ΔΙΑΒΑΣΕ Α[i,j]
    Β[j,i] <- Α[i,j]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5
  ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 3
    ΓΡΑΨΕ 'Β[', i, ',', j, '] = ', Β[i,j]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Κρίσιμο σημείο. Με την αναστροφή ανταλλάσσονται και οι δείκτες και οι διαστάσεις: ο 3×5 γίνεται 5×3.

↑ Επιστροφή στις λυμένες ασκήσεις

Άσκηση 16. Αναζήτηση και αντικατάσταση τιμής

Επίπεδο: Μέτριο

Εκφώνηση. Να διαβαστεί ακέραιος πίνακας Α[5,5] και μία τιμή x. Να εμφανιστούν οι θέσεις της x, να μετρηθούν οι εμφανίσεις της και όλες να αντικατασταθούν με 0.

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

Λύση σε ΓΛΩΣΣΑ

ΠΡΟΓΡΑΜΜΑ Ασκηση16
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Α[5,5], i, j, x, πληθος
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5
  ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 5
    ΔΙΑΒΑΣΕ Α[i,j]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ x
πληθος <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5
  ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 5
    ΑΝ Α[i,j] = x ΤΟΤΕ
      πληθος <- πληθος + 1
      ΓΡΑΨΕ 'Βρεθηκε στη θεση ', i, ',', j
      Α[i,j] <- 0
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ πληθος = 0 ΤΟΤΕ
  ΓΡΑΨΕ 'Η τιμη δεν βρεθηκε'
ΑΛΛΙΩΣ
  ΓΡΑΨΕ 'Πληθος αντικαταστασεων: ', πληθος
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Κρίσιμο σημείο. Η αλλαγή του Α[i,j] γίνεται αφού ελεγχθεί η αρχική του τιμή και δεν επηρεάζει τις επόμενες θέσεις.

↑ Επιστροφή στις λυμένες ασκήσεις

Άσκηση 17. Ανταλλαγή δύο γραμμών

Επίπεδο: Προχωρημένο

Εκφώνηση. Να διαβαστεί ακέραιος πίνακας Α[6,8] και δύο διαφορετικοί έγκυροι αριθμοί γραμμών r1 και r2. Να ανταλλαχθούν οι δύο γραμμές.

Ιδέα λύσης. Ελέγχουμε την εγκυρότητα των αριθμών γραμμής. Έπειτα, για κάθε στήλη j, ανταλλάσσουμε τα Α[r1,j] και Α[r2,j] με τη βοήθεια προσωρινής μεταβλητής.

Λύση σε ΓΛΩΣΣΑ

ΠΡΟΓΡΑΜΜΑ Ασκηση17
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Α[6,8], i, j, r1, r2, προσωρινο
ΛΟΓΙΚΕΣ: εγκυρο
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 6
  ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 8
    ΔΙΑΒΑΣΕ Α[i,j]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
  ΓΡΑΨΕ 'Δωσε δυο διαφορετικες γραμμες 1..6'
  ΔΙΑΒΑΣΕ r1, r2
  εγκυρο <- r1 >= 1 ΚΑΙ r1 <= 6
  εγκυρο <- εγκυρο ΚΑΙ r2 >= 1 ΚΑΙ r2 <= 6
  εγκυρο <- εγκυρο ΚΑΙ r1 <> r2
ΜΕΧΡΙΣ_ΟΤΟΥ εγκυρο
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 8
  προσωρινο <- Α[r1,j]
  Α[r1,j] <- Α[r2,j]
  Α[r2,j] <- προσωρινο
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Οι γραμμες ανταλλαχθηκαν'
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Κρίσιμο σημείο. Ανταλλάσσουμε ζεύγη στοιχείων με την ίδια στήλη. Δεν χρειάζεται να σαρωθούν οι υπόλοιπες γραμμές.

↑ Επιστροφή στις λυμένες ασκήσεις

Άσκηση 18. Ολοκληρωμένη ανάλυση πωλήσεων

Επίπεδο: Προχωρημένο

Εκφώνηση. Σε πίνακα Π[4,12] αποθηκεύονται οι πωλήσεις 4 υποκαταστημάτων για 12 μήνες. Να υπολογιστούν τα ετήσια σύνολα ανά υποκατάστημα, τα συνολικά ποσά ανά μήνα, το καλύτερο υποκατάστημα, ο καλύτερος μήνας και το γενικό σύνολο.

Ιδέα λύσης. Δημιουργούμε δύο βοηθητικούς μονοδιάστατους πίνακες: ΕΤΗΣΙΟ[4] για τα αθροίσματα γραμμών και ΜΗΝΑΣ[12] για τα αθροίσματα στηλών. Το γενικό σύνολο μπορεί να υπολογιστεί κατά την εισαγωγή.

Λύση σε ΓΛΩΣΣΑ

ΠΡΟΓΡΑΜΜΑ Ασκηση18
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: i, j, καλυτερο_κατ, καλυτερος_μηνας
ΠΡΑΓΜΑΤΙΚΕΣ: Π[4,12], ΕΤΗΣΙΟ[4], ΜΗΝΑΣ[12]
ΠΡΑΓΜΑΤΙΚΕΣ: συνολο, μεγ_κατ, μεγ_μηνας
ΑΡΧΗ
συνολο <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 4
  ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 12
    ΔΙΑΒΑΣΕ Π[i,j]
    συνολο <- συνολο + Π[i,j]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 4
  ΕΤΗΣΙΟ[i] <- 0
  ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 12
    ΕΤΗΣΙΟ[i] <- ΕΤΗΣΙΟ[i] + Π[i,j]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΓΡΑΨΕ 'Υποκαταστημα ', i, ': ', ΕΤΗΣΙΟ[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 12
  ΜΗΝΑΣ[j] <- 0
  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 4
    ΜΗΝΑΣ[j] <- ΜΗΝΑΣ[j] + Π[i,j]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΓΡΑΨΕ 'Μηνας ', j, ': ', ΜΗΝΑΣ[j]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
μεγ_κατ <- ΕΤΗΣΙΟ[1]
καλυτερο_κατ <- 1
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 4
  ΑΝ ΕΤΗΣΙΟ[i] > μεγ_κατ ΤΟΤΕ
    μεγ_κατ <- ΕΤΗΣΙΟ[i]
    καλυτερο_κατ <- i
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
μεγ_μηνας <- ΜΗΝΑΣ[1]
καλυτερος_μηνας <- 1
ΓΙΑ j ΑΠΟ 2 ΜΕΧΡΙ 12
  ΑΝ ΜΗΝΑΣ[j] > μεγ_μηνας ΤΟΤΕ
    μεγ_μηνας <- ΜΗΝΑΣ[j]
    καλυτερος_μηνας <- j
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Καλυτερο υποκαταστημα: ', καλυτερο_κατ
ΓΡΑΨΕ 'Καλυτερος μηνας: ', καλυτερος_μηνας
ΓΡΑΨΕ 'Γενικο συνολο: ', συνολο
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Κρίσιμο σημείο. Τα ΕΤΗΣΙΟ[i] και ΜΗΝΑΣ[j] αποθηκεύουν ενδιάμεσα αποτελέσματα που θα χρειαστούν ξανά για την εύρεση ακρότατων.

↑ Επιστροφή στις λυμένες ασκήσεις

Άσκηση 19. Ανάλυση αποτελεσμάτων μαθητών

Επίπεδο: Προχωρημένο

Εκφώνηση. Σε πίνακα Β[30,6] αποθηκεύονται οι βαθμοί 30 μαθητών σε 6 μαθήματα. Να βρεθεί πόσοι μαθητές έχουν βαθμό τουλάχιστον 10 σε όλα τα μαθήματα και ποιο μάθημα έχει τις περισσότερες αποτυχίες. Σε ισοπαλία μαθημάτων να εμφανιστούν όλα.

Ιδέα λύσης. Για κάθε μαθητή χρησιμοποιούμε λογική σημαία που παραμένει ΑΛΗΘΗΣ μόνο αν όλοι οι βαθμοί είναι τουλάχιστον 10. Παράλληλα, ο βοηθητικός πίνακας ΑΠΟΤΥΧΙΕΣ[6] μετρά τις αποτυχίες ανά στήλη.

Λύση σε ΓΛΩΣΣΑ

ΠΡΟΓΡΑΜΜΑ Ασκηση19
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: i, j, επιτυχοντες, μεγ_αποτυχιες
ΑΚΕΡΑΙΕΣ: ΑΠΟΤΥΧΙΕΣ[6]
ΠΡΑΓΜΑΤΙΚΕΣ: Β[30,6]
ΛΟΓΙΚΕΣ: περασε_ολα
ΑΡΧΗ
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 6
  ΑΠΟΤΥΧΙΕΣ[j] <- 0
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 30
  ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 6
    ΔΙΑΒΑΣΕ Β[i,j]
    ΑΝ Β[i,j] < 10 ΤΟΤΕ
      ΑΠΟΤΥΧΙΕΣ[j] <- ΑΠΟΤΥΧΙΕΣ[j] + 1
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
επιτυχοντες <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 30
  περασε_ολα <- ΑΛΗΘΗΣ
  ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 6
    ΑΝ Β[i,j] < 10 ΤΟΤΕ
      περασε_ολα <- ΨΕΥΔΗΣ
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΑΝ περασε_ολα ΤΟΤΕ
    επιτυχοντες <- επιτυχοντες + 1
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
μεγ_αποτυχιες <- ΑΠΟΤΥΧΙΕΣ[1]
ΓΙΑ j ΑΠΟ 2 ΜΕΧΡΙ 6
  ΑΝ ΑΠΟΤΥΧΙΕΣ[j] > μεγ_αποτυχιες ΤΟΤΕ
    μεγ_αποτυχιες <- ΑΠΟΤΥΧΙΕΣ[j]
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Μαθητες που περασαν ολα: ', επιτυχοντες
ΓΡΑΨΕ 'Περισσοτερες αποτυχιες: ', μεγ_αποτυχιες
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 6
  ΑΝ ΑΠΟΤΥΧΙΕΣ[j] = μεγ_αποτυχιες ΤΟΤΕ
    ΓΡΑΨΕ 'Μαθημα ', j
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Κρίσιμο σημείο. Η συνθήκη «σε όλα τα μαθήματα» απαιτεί σημαία ανά μαθητή, ενώ οι αποτυχίες ανά μάθημα απαιτούν μετρητή ανά στήλη.

↑ Επιστροφή στις λυμένες ασκήσεις

Άσκηση 20. Διαχείριση θέσεων κινηματογράφου

Επίπεδο: Προχωρημένο

Εκφώνηση. Πίνακας Θ[12,20] περιγράφει τις θέσεις αίθουσας: 0 σημαίνει ελεύθερη και 1 κατειλημμένη. Να γίνει έλεγχος εγκυρότητας κατά την εισαγωγή και να υπολογιστούν το ποσοστό πληρότητας, το πλήθος των γεμάτων σειρών και η πρώτη σειρά με τις περισσότερες ελεύθερες θέσεις. Επίσης να προταθούν οι πρώτες δύο συνεχόμενες ελεύθερες θέσεις της ίδιας σειράς, αν υπάρχουν.

Ιδέα λύσης. Η άσκηση συνδυάζει έλεγχο εγκυρότητας, συνολικό μετρητή, επεξεργασία ανά γραμμή και αναζήτηση γειτονικών στοιχείων. Για ζεύγος θέσεων ελέγχουμε τις στήλες 1 έως 19, ώστε να υπάρχει πάντα η επόμενη θέση j+1.

Λύση σε ΓΛΩΣΣΑ

ΠΡΟΓΡΑΜΜΑ Ασκηση20
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Θ[12,20], i, j, κατειλημμενες
ΑΚΕΡΑΙΕΣ: ελευθερες, μεγ_ελευθερες, καλυτερη_σειρα
ΑΚΕΡΑΙΕΣ: γεματες_σειρες, σειρα_ζευγους, θεση_ζευγους
ΠΡΑΓΜΑΤΙΚΕΣ: πληροτητα
ΛΟΓΙΚΕΣ: βρεθηκε
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 12
  ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 20
    ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
      ΔΙΑΒΑΣΕ Θ[i,j]
    ΜΕΧΡΙΣ_ΟΤΟΥ Θ[i,j] = 0 Ή Θ[i,j] = 1
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
κατειλημμενες <- 0
γεματες_σειρες <- 0
μεγ_ελευθερες <- -1
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 12
  ελευθερες <- 0
  ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 20
    ΑΝ Θ[i,j] = 1 ΤΟΤΕ
      κατειλημμενες <- κατειλημμενες + 1
    ΑΛΛΙΩΣ
      ελευθερες <- ελευθερες + 1
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΑΝ ελευθερες = 0 ΤΟΤΕ
    γεματες_σειρες <- γεματες_σειρες + 1
  ΤΕΛΟΣ_ΑΝ
  ΑΝ ελευθερες > μεγ_ελευθερες ΤΟΤΕ
    μεγ_ελευθερες <- ελευθερες
    καλυτερη_σειρα <- i
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
βρεθηκε <- ΨΕΥΔΗΣ
σειρα_ζευγους <- 0
θεση_ζευγους <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 12
  ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 19
    ΑΝ ΟΧΙ βρεθηκε ΚΑΙ Θ[i,j] = 0 ΚΑΙ Θ[i,j+1] = 0 ΤΟΤΕ
      βρεθηκε <- ΑΛΗΘΗΣ
      σειρα_ζευγους <- i
      θεση_ζευγους <- j
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
πληροτητα <- 100 * κατειλημμενες / 240
ΓΡΑΨΕ 'Πληροτητα: ', πληροτητα, '%'
ΓΡΑΨΕ 'Γεματες σειρες: ', γεματες_σειρες
ΓΡΑΨΕ 'Σειρα με περισσοτερες ελευθερες: ', καλυτερη_σειρα
ΑΝ βρεθηκε ΤΟΤΕ
  ΓΡΑΨΕ 'Προτεινομενη σειρα: ', σειρα_ζευγους
  ΓΡΑΨΕ 'Θεσεις: ', θεση_ζευγους, ' και ', θεση_ζευγους + 1
ΑΛΛΙΩΣ
  ΓΡΑΨΕ 'Δεν υπαρχουν δυο συνεχόμενες ελευθερες θεσεις'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

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

↑ Επιστροφή στις λυμένες ασκήσεις

8. Τελικός οδηγός αυτοελέγχου

Έλεγχος Ερώτηση πριν παραδώσω τη λύση
Διαστάσεις Έλεγξα ότι το i κινείται στις γραμμές και το j στις στήλες;
Ομάδα Το ζητούμενο είναι συνολικό, ανά γραμμή, ανά στήλη ή σε ειδική περιοχή;
Αρχικοποίηση Το άθροισμα, το πλήθος, η σημαία ή το ακρότατο αρχικοποιείται στο σωστό επίπεδο;
Όρια Τα όρια των βρόχων αποφεύγουν μη επιτρεπτούς δείκτες όπως j+1>C;
Θέση αποτελέσματος Η εμφάνιση γίνεται αφού ολοκληρωθεί η ομάδα που εξετάζω;
Ισοπαλίες Η εκφώνηση ζητά πρώτη θέση, όλες τις θέσεις ή κάτι διαφορετικό;
Διαγώνιοι Χρησιμοποίησα i=j, i+j=N+1 και πρόσεξα το κοινό κεντρικό στοιχείο;

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

↑ Επιστροφή στην αρχή


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