ΘΕΜΑ Δ
Στην 27η Βαλκανιάδα Πληροφορικής που θα διεξαχθεί στην Αθήνα τον Σεπτέμβριο του 2019, συμμετέχουν 40 μαθητές. Κάθε μαθητής παίρνει έναν κωδικό από 1 έως και 40, ο οποίος αντιστοιχεί στη σειρά που δήλωσε συμμετοχή. Κάθε μαθητής καλείται να επιλύσει έξι προβλήματα. Για κάθε πρόβλημα αναπτύσσει τη λύση του σε μία γλώσσα προγραμματισμού και την υποβάλλει για βαθμολόγηση. Η λύση βαθμολογείται σε ακέραια κλίμακα από 0 έως 100.
Κατά τη διάρκεια του διαγωνισμού κάθε μαθητής και για κάθε πρόβλημα μπορεί να υποβάλλει τη λύση του όσες φορές θέλει.
Να αναπτύξετε πρόγραμμα σε ΓΛΩΣΣΑ το οποίο:
Δ1. Να περιλαμβάνει κατάλληλο τμήμα δηλώσεων. Μονάδες 2
Δ2. Να διαβάζει επαναληπτικά τα ονόματα των μαθητών και να τα καταχωρίζει στον Πίνακα ΟΝ[40]. (μονάδα 1)
Επίσης, να αρχικοποιεί με την τιμή 0 όλα τα στοιχεία του Πίνακα ΒΑΘ[40,6], ο οποίος θα περιέχει τη βαθμολογία κάθε μαθητή για κάθε πρόβλημα. (μονάδες 2)
Μονάδες 3
Δ3. Κάθε φορά που μία λύση προβλήματος υποβάλλεται και βαθμολογείται, το πρόγραμμα να διαβάζει τον κωδικό του μαθητή (από 1 έως και 40), τον αριθμό του προβλήματος (από 1 έως και 6) και τη βαθμολογία του (από 0 έως και 100). (μονάδα 1)
Η βαθμολογία να καταχωρίζεται στην αντίστοιχη θέση του Πίνακα ΒΑΘ[40,6] μόνο αν είναι μεγαλύτερη από τη βαθμολογία που είναι ήδη καταχωρισμένη. (μονάδες 2)
Για τον τερματισμό της εισαγωγής δεδομένων το πρόγραμμα να εμφανίζει το μήνυμα «Υπάρχει νέα λύση προβλήματος; ΝΑΙ / ΟΧΙ». Αν εισαχθεί η τιμή «ΟΧΙ», να τερματίζεται η εισαγωγή δεδομένων. (μονάδες 2)
Μονάδες 5
Δ4. Να υπολογίζει και να καταχωρίζει στον Πίνακα ΣΒ[40] τα αθροίσματα των βαθμολογιών κάθε μαθητή στα έξι προβλήματα. Για τον σκοπό αυτό να καλεί μόνο μια φορά το υποπρόγραμμα με όνομα ΥΣΒ. (μονάδα 1) Να αναπτύξετε το υποπρόγραμμα ΥΣΒ το οποίο να δέχεται ως είσοδο τον Πίνακα ΒΑΘ[40,6] και να επιστρέφει ως έξοδο συμπληρωμένο τον Πίνακα ΣΒ[40]. (μονάδες 4)
Μονάδες 5
Δ5. Να εμφανίζει τα ονόματα των μαθητών ταξινομημένων σύμφωνα με τη συνολική τους βαθμολογία σε φθίνουσα βαθμολογική σειρά. Σε περίπτωση μαθητών με την ίδια βαθμολογία, τα ονόματά τους να εμφανίζονται με αλφαβητική σειρά.
Μονάδες 5
Σημειώσεις
α) Δεν απαιτούνται έλεγχοι εγκυρότητας τιμών.
β) Να θεωρήσετε ότι θα δοθεί τουλάχιστον μια λύση προβλήματος από έναν μαθητή.
ΛΥΣΗ
ΠΡΟΓΡΑΜΜΑ ΒΑΛΚΑΝΙΑΔΑ2019Δ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: ΒΑΘ[40, 6], ΣΒ[40], I, J, Κ, ΤΕΜΠ, ΒΑΘΜΟΣ, ΚΩΔΙΚΟΣ, ΑΡΙΘΜΟΣ
ΧΑΡΑΚΤΗΡΕΣ: ΟΝ[40], ΤΕΜΠ2, ΑΠΑΝΤΗΣΗ
ΑΡΧΗ
! Δ2
ΓΙΑ I ΑΠΟ 1 ΜΕΧΡΙ 40
ΔΙΑΒΑΣΕ ΟΝ[I]
ΓΙΑ Κ ΑΠΟ 1 ΜΕΧΡΙ 6
ΒΑΘ[I, Κ] <- -0
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
! Δ3
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'ΔΩΣΕ ΒΑΘΜΟ'
ΔΙΑΒΑΣΕ ΒΑΘΜΟΣ
ΓΡΑΨΕ 'ΔΩΣΕ ΚΩΔΙΚΟ ΜΑΘΗΤΗ'
ΔΙΑΒΑΣΕ ΚΩΔΙΚΟΣ
ΓΡΑΨΕ 'ΔΩΣΕ ΑΡΙΘΜΟ ΠΡΟΒΛΗΜΑΤΟΣ'
ΔΙΑΒΑΣΕ ΑΡΙΘΜΟΣ
ΑΝ ΒΑΘΜΟΣ > ΒΑΘ[ΚΩΔΙΚΟΣ, ΑΡΙΘΜΟΣ] ΤΟΤΕ
ΒΑΘ[ΚΩΔΙΚΟΣ, ΑΡΙΘΜΟΣ] <- ΒΑΘΜΟΣ
ΤΕΛΟΣ_ΑΝ
ΓΡΑΨΕ 'Υπάρχει νέα λύση προβλήματος; ΝΑΙ / ΟΧΙ'
ΔΙΑΒΑΣΕ ΑΠΑΝΤΗΣΗ
ΜΕΧΡΙΣ_ΟΤΟΥ ΑΠΑΝΤΗΣΗ = 'ΟΧΙ'
! Δ4
ΚΑΛΕΣΕ ΥΣΒ(ΒΑΘ, ΣΒ)
! Δ5
!Δ5. Να εμφανίζει τα ονόματα των μαθητών ταξινομημένων σύμφωνα
! με τη συνολική τους βαθμολογία σε φθίνουσα βαθμολογική σειρά.
! Σε περίπτωση μαθητών με την ίδια βαθμολογία,
! τα ονόματά τους να εμφανίζονται με αλφαβητική σειρά.
! ΠΡΟΣΟΧΗ ΔΙΑΦΟΡΕΤΙΚΟΥ ΤΥΠΟΥ ΤΕΜΠ
! ΤΑΞΙΝΟΜΗΣΗ ΠΑΡΑΛΛΗΛΩΝ ΠΙΝΑΚΩΝ ΣΒ, ΟΝ
! Α ΤΡΟΠΟΣ (ΣΤΗΝ ΙΣΟΤΗΤΑ ΕΛΕΓΧΩ ΤΗΝ ΑΛΦΑΒΗΤΙΚΗ ΣΕΙΡΑ)
ΓΙΑ I ΑΠΟ 2 ΜΕΧΡΙ 40
ΓΙΑ J ΑΠΟ 40 ΜΕΧΡΙ I ΜΕ_ΒΗΜΑ -1
!! β τρόπος (χωρίς αλλιώς_αν) για την περίπτωση ισοβαθμίας
!ΑΝ ΣΒ[J - 1] < ΣΒ[J] 'Η (ΣΒ[J - 1] = ΣΒ[J] ΚΑΙ ΟΝ[J - 1] > ΟΝ[J]) ΤΟΤΕ
ΑΝ ΣΒ[J - 1] < ΣΒ[J] ΤΟΤΕ
ΤΕΜΠ <- ΣΒ[J - 1]
ΣΒ[J - 1] <- ΣΒ[J]
ΣΒ[J] <- ΤΕΜΠ
ΤΕΜΠ2 <- ΟΝ[J - 1]
ΟΝ[J - 1] <- ΟΝ[J]
ΟΝ[J] <- ΤΕΜΠ2
ΑΛΛΙΩΣ_ΑΝ ΣΒ[J - 1] = ΣΒ[J] ΤΟΤΕ ! περίπτωση ισοβαθμίας
ΑΝ ΟΝ[J - 1] > ΟΝ[J] ΤΟΤΕ
ΤΕΜΠ <- ΣΒ[J - 1]
ΣΒ[J - 1] <- ΣΒ[J]
ΣΒ[J] <- ΤΕΜΠ
ΤΕΜΠ2 <- ΟΝ[J - 1]
ΟΝ[J - 1] <- ΟΝ[J]
ΟΝ[J] <- ΤΕΜΠ2
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ I ΑΠΟ 1 ΜΕΧΡΙ 40
ΓΡΑΨΕ ΟΝ[I]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
! γ τρόπος: ΤΑΞΙΝΟΜΩ ΠΡΩΤΑ ΑΛΦΑΒΗΤΙΚΑ ΚΑΙ ΜΕΤΑ ΜΕ ΒΑΘΜΟΛΟΓΙΑ
! ΑΛΦΑΒΗΤΙΚΗ ΤΑΞΙΝΟΜΗΣΗ
! ΓΙΑ I ΑΠΟ 2 ΜΕΧΡΙ 40
! ΓΙΑ J ΑΠΟ 40 ΜΕΧΡΙ I ΜΕ_ΒΗΜΑ -1
! ΑΝ ΟΝ[J - 1] > ΟΝ[J] ΤΟΤΕ
! ΤΕΜΠ2 <- ΟΝ[J - 1]
! ΟΝ[J - 1] <- ΟΝ[J]
! ΟΝ[J] <- ΤΕΜΠ2
! ΤΕΜΠ <- ΣΒ[J - 1]
! ΣΒ[J - 1] <- ΣΒ[J]
! ΣΒ[J] <- ΤΕΜΠ
! ΤΕΛΟΣ_ΑΝ
! ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
! ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
! ΤΑΞΙΝΟΜΗΣΗ ΒΑΘΜΩΝ
! ΓΙΑ I ΑΠΟ 2 ΜΕΧΡΙ 40
! ΓΙΑ J ΑΠΟ 40 ΜΕΧΡΙ I ΜΕ_ΒΗΜΑ -1
! ΑΝ ΣΒ[J - 1] < ΣΒ[J] ΤΟΤΕ
! ΤΕΜΠ2 <- ΟΝ[J - 1]
! ΟΝ[J - 1] <- ΟΝ[J]
! ΟΝ[J] <- ΤΕΜΠ2
! ΤΕΜΠ <- ΣΒ[J - 1]
! ΣΒ[J - 1] <- ΣΒ[J]
! ΣΒ[J] <- ΤΕΜΠ
! ΤΕΛΟΣ_ΑΝ
! ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
! ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ I ΑΠΟ 1 ΜΕΧΡΙ 40
ΓΡΑΨΕ ΟΝ[I]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
! Δ4
ΔΙΑΔΙΚΑΣΙΑ ΥΣΒ(ΒΑΘ, ΣΒ)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: ΒΑΘ[40, 6], ΣΒ[40], I, J
ΑΡΧΗ
! ΜΗΔΕΝΙΖΩ ΤΟΝ ΠΙΝΑΚΑ ΑΘΡΟΙΣΜΑΤΩΝ
ΓΙΑ I ΑΠΟ 1 ΜΕΧΡΙ 40
ΣΒ[I] <- 0
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
! ΑΘΡΟΙΣΜΑ ΚΑΤΑ ΓΡΑΜΜΗ
ΓΙΑ I ΑΠΟ 1 ΜΕΧΡΙ 40
ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 6
ΣΒ[I] <- ΣΒ[I] + ΒΑΘ[I, J]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
! β τρόπος
!ΑΘΡΟΙΣΜΑ ΑΝΑ ΓΡΑΜΜΗ ΑΛΛΑ ΕΝΙΑΙΟ
!ΓΙΑ I ΑΠΟ 1 ΜΕΧΡΙ 40
! Σ<-0
! ΓΙΑ Κ ΑΠΟ 1 ΜΕΧΡΙ 6
! Σ<-Σ+ΒΑΘ[I,Κ]
! ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
! ΣΒ[I]<-Σ
!ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Πρόσφατα σχόλια