Πανελλαδικές Εξετάσεις 2024 — informatics, Θέμα D (4 μονάδες)

Μια επιχείρηση έχει 10 πωλητές. Θέλοντας να τους δώσει κίνητρο, καθιέρωσε βραβείο για τον καλύτερο πωλητή κάθε μήνα. Να κατασκευάσετε πρόγραμμα σε ΓΛΩΣΣΑ, το οποίο:
Δ1. α) Να περιλαμβάνει κατάλληλο τμήμα δηλώσεων. (μονάδες 2)
β) Να καταχωρίζει τα ονόματα των πωλητών σε πίνακα ON[10] και τις μηνιαίες πωλήσεις κάθε πωλητή σε πίνακα ακεραίων Π[10,12] (δεν απαιτείται έλεγχος εγκυρότητας). (μονάδες 2)

Απάντηση:
α)
ΠΡΟΓΡΑΜΜΑ Πωλητές
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Π[10,12], i, j, S1, S2, S, max, θέση, θ
  ΧΑΡΑΚΤΗΡΕΣ: ΟΝ[10], όνομα
ΑΡΧΗ
β)
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 10
  ΔΙΑΒΑΣΕ ΟΝ[i]
  ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 12
    ΔΙΑΒΑΣΕ Π[i, j]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΚΛΕΙΔΙ ΒΑΘΜΟΛΟΓΗΣΗΣ (4 μ.). α) Δήλωση πινάκων ΟΝ[10] (ΧΑΡΑΚΤΗΡΕΣ) και Π[10,12] (ΑΚΕΡΑΙΕΣ) με σωστές διαστάσεις: 1 μ. Δήλωση των υπόλοιπων μεταβλητών με σωστό τύπο: 1 μ. β) Διπλός βρόχος ανάγνωσης ονομάτων και πωλήσεων (10x12): 2 μ. Μερική πίστωση: λανθασμένες διαστάσεις πίνακα: -1 μ. Ανάγνωση ονομάτων σε χωριστό βρόχο από τις πωλήσεις: πλήρως αποδεκτή. Παράλειψη δήλωσης μεμονωμένης μεταβλητής: -0,5 μ. ανά περίπτωση.

Πανελλαδικές Εξετάσεις 2024 — informatics, Θέμα D (5 μονάδες)

(Συνέχεια του προγράμματος της επιχείρησης με τους πίνακες ON[10] και Π[10,12].)
Δ2. Να βρίσκει και να εμφανίζει, για κάθε μήνα, το όνομα του πωλητή που πήρε το βραβείο (είχε τις μεγαλύτερες πωλήσεις). Να θεωρήσετε ότι για κάθε μήνα ο βραβευμένος πωλητής είναι μοναδικός.

Απάντηση:
Για κάθε στήλη (μήνα) του πίνακα Π αναζητείται το μέγιστο κατά στήλες:
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 12
  max ← Π[1, j]
  θέση ← 1
  ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 10
    ΑΝ Π[i, j] > max ΤΟΤΕ
      max ← Π[i, j]
      θέση ← i
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΓΡΑΨΕ ΟΝ[θέση]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΚΛΕΙΔΙ ΒΑΘΜΟΛΟΓΗΣΗΣ (5 μ.). Εξωτερικός βρόχος στους 12 μήνες (στήλες): 1 μ. Αρχικοποίηση max και θέσης με το πρώτο στοιχείο της στήλης ΜΕΣΑ στον εξωτερικό βρόχο: 1,5 μ. Ορθή σύγκριση κατά στήλη Π[i,j] > max με ενημέρωση max και θέσης: 1,5 μ. Εμφάνιση ΟΝ[θέση] μέσα στον εξωτερικό βρόχο (ένα όνομα ανά μήνα): 1 μ. Μερική πίστωση: αρχικοποίηση max εκτός εξωτερικού βρόχου: -1,5 μ. Εύρεση μεγίστου κατά γραμμές αντί κατά στήλες (αντιστροφή δεικτών): έως 2 μ. συνολικά. Φύλαξη μόνο της τιμής max χωρίς τη θέση: -1 μ.

Πανελλαδικές Εξετάσεις 2024 — informatics, Θέμα D (6 μονάδες)

(Συνέχεια του προγράμματος της επιχείρησης.)
Δ3. Να υπολογίζει τις συνολικές πωλήσεις της επιχείρησης στο 1ο και στο 2ο εξάμηνο και να εμφανίζει ανάλογα με την περίπτωση ένα από τα παρακάτω μηνύματα:
- «Οι πωλήσεις του 1ου εξαμήνου είναι μεγαλύτερες από τις πωλήσεις του 2ου εξαμήνου».
- «Οι πωλήσεις του 2ου εξαμήνου είναι μεγαλύτερες από τις πωλήσεις του 1ου εξαμήνου».
- «Οι πωλήσεις του 1ου και του 2ου εξαμήνου είναι ίσες».

Απάντηση:
S1 ← 0
S2 ← 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 10
  ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 6
    S1 ← S1 + Π[i, j]
    S2 ← S2 + Π[i, j+6]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ S1 > S2 ΤΟΤΕ
  ΓΡΑΨΕ 'Οι πωλήσεις του 1ου εξαμήνου είναι μεγαλύτερες από τις πωλήσεις του 2ου εξαμήνου'
ΑΛΛΙΩΣ_ΑΝ S2 > S1 ΤΟΤΕ
  ΓΡΑΨΕ 'Οι πωλήσεις του 2ου εξαμήνου είναι μεγαλύτερες από τις πωλήσεις του 1ου εξαμήνου'
ΑΛΛΙΩΣ
  ΓΡΑΨΕ 'Οι πωλήσεις του 1ου και του 2ου εξαμήνου είναι ίσες'
ΤΕΛΟΣ_ΑΝ

ΚΛΕΙΔΙ ΒΑΘΜΟΛΟΓΗΣΗΣ (6 μ.). Αρχικοποίηση αθροιστών S1, S2 σε 0: 0,5 μ. Ορθή άθροιση πωλήσεων 1ου εξαμήνου (στήλες 1-6): 1,5 μ. Ορθή άθροιση πωλήσεων 2ου εξαμήνου (στήλες 7-12, π.χ. με δείκτη j+6 ή χωριστό βρόχο): 1,5 μ. Πλήρης πολλαπλή επιλογή ΑΝ/ΑΛΛΙΩΣ_ΑΝ/ΑΛΛΙΩΣ με τα τρία ζητούμενα μηνύματα: 2,5 μ. Μερική πίστωση: παράλειψη της περίπτωσης ισότητας: -1 μ. Λανθασμένα όρια στηλών εξαμήνων: -1,5 μ. Αποδεκτή κάθε ισοδύναμη οργάνωση βρόχων (π.χ. δύο χωριστά διπλά αθροίσματα).

Πανελλαδικές Εξετάσεις 2024 — informatics, Θέμα D (4 μονάδες)

(Συνέχεια του προγράμματος της επιχείρησης.)
Δ4. Να διαβάζει το όνομα πωλητή και, αν υπάρχει στον πίνακα ON[10], να υπολογίζει και να εμφανίζει τις συνολικές ετήσιες πωλήσεις του. Σε περίπτωση που δεν υπάρχει, να εμφανίζει το μήνυμα «Ανύπαρκτος πωλητής». Για την αναζήτηση να καλείται το υποπρόγραμμα ΑΝΑΖ που περιγράφεται στο ερώτημα Δ5.

Απάντηση:
ΔΙΑΒΑΣΕ όνομα
θ ← ΑΝΑΖ(ΟΝ, όνομα)
ΑΝ θ = 0 ΤΟΤΕ
  ΓΡΑΨΕ 'Ανύπαρκτος πωλητής'
ΑΛΛΙΩΣ
  S ← 0
  ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 12
    S ← S + Π[θ, j]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΓΡΑΨΕ S
ΤΕΛΟΣ_ΑΝ

ΚΛΕΙΔΙ ΒΑΘΜΟΛΟΓΗΣΗΣ (4 μ.). Ανάγνωση ονόματος και ορθή κλήση του υποπρογράμματος ΑΝΑΖ με εκχώρηση της επιστρεφόμενης θέσης (θ ← ΑΝΑΖ(ΟΝ, όνομα)): 1,5 μ. Έλεγχος θ = 0 με εμφάνιση μηνύματος «Ανύπαρκτος πωλητής»: 1 μ. Άθροιση της γραμμής θ του Π (12 μήνες) και εμφάνιση των ετήσιων πωλήσεων: 1,5 μ. Μερική πίστωση: κλήση της συνάρτησης με ΚΑΛΕΣΕ: -1 μ. Υλοποίηση της αναζήτησης μέσα στο κύριο πρόγραμμα αντί για κλήση του ΑΝΑΖ: έως 2 μ. συνολικά. Παράλειψη αρχικοποίησης S ← 0: -0,5 μ.

Πανελλαδικές Εξετάσεις 2024 — informatics, Θέμα D (6 μονάδες)

(Συνέχεια του προγράμματος της επιχείρησης.)
Δ5. Να κατασκευάσετε το υποπρόγραμμα ΑΝΑΖ, το οποίο θα δέχεται ως είσοδο τον πίνακα ON[10] και ένα όνομα, θα αναζητά το όνομα στον πίνακα ON[10] και θα επιστρέφει τη θέση του ή την τιμή 0 στην περίπτωση που αυτό δεν υπάρχει.

Απάντηση:
Αφού επιστρέφει μία τιμή, υλοποιείται ως συνάρτηση με σειριακή αναζήτηση:
ΣΥΝΑΡΤΗΣΗ ΑΝΑΖ(ΟΝ, όνομα): ΑΚΕΡΑΙΑ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: i, θέση
  ΛΟΓΙΚΕΣ: βρέθηκε
  ΧΑΡΑΚΤΗΡΕΣ: ΟΝ[10], όνομα
ΑΡΧΗ
  βρέθηκε ← ΨΕΥΔΗΣ
  θέση ← 0
  i ← 1
  ΟΣΟ βρέθηκε = ΨΕΥΔΗΣ ΚΑΙ i <= 10 ΕΠΑΝΑΛΑΒΕ
    ΑΝ όνομα = ΟΝ[i] ΤΟΤΕ
      βρέθηκε ← ΑΛΗΘΗΣ
      θέση ← i
    ΑΛΛΙΩΣ
      i ← i + 1
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΑΝΑΖ ← θέση
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

ΚΛΕΙΔΙ ΒΑΘΜΟΛΟΓΗΣΗΣ (6 μ.). Ορθή επιλογή συνάρτησης με επικεφαλίδα ΣΥΝΑΡΤΗΣΗ ΑΝΑΖ(ΟΝ, όνομα): ΑΚΕΡΑΙΑ: 1,5 μ. Ορθό τμήμα δηλώσεων (συμπεριλαμβανομένων των παραμέτρων ΟΝ[10] και όνομα): 1 μ. Ορθή σειριακή αναζήτηση με τερματισμό στην εύρεση: 2 μ. Επιστροφή της θέσης ή του 0 μέσω εκχώρησης στο όνομα της συνάρτησης (ΑΝΑΖ ← θέση): 1,5 μ. Μερική πίστωση: αποδεκτή και εξαντλητική σάρωση όλου του πίνακα (χωρίς πρόωρο τερματισμό), χωρίς αφαίρεση. Υλοποίηση ως ΔΙΑΔΙΚΑΣΙΑ με παράμετρο εξόδου: έως 4 μ. (δεν ικανοποιεί την «επιστροφή τιμής» ως συνάρτηση, αλλά λειτουργεί σε συνδυασμό με ορθό Δ4). Παράλειψη επιστροφής 0 σε αποτυχία: -1 μ.