Στις πρόσφατες δημοτικές εκλογές, σε κάποιο δήμο της χώρας, χρησιμοποιήθηκαν για την ψηφοφορία 217 αίθουσες (εκλογικά τμήματα), σε 34 δημόσια κτήρια (εκλογικά καταστήματα). Τα τμήματα αριθμήθηκαν με τη σειρά, από το 1 μέχρι το 217, έτσι ώστε οι αριθμοί των εκλογικών τμημάτων κάθε καταστήματος να είναι διαδοχικοί: αριθμήθηκαν πρώτα τα τμήματα του πρώτου καταστήματος, στη συνέχεια τα τμήματα του δεύτερου καταστήματος κ.ο.κ. Το ψηφοδέλτιο ενός από τους συμμετέχοντες συνδυασμούς είχε 65 υποψηφίους. Κάθε ψηφοφόρος ψηφίζει σημειώνοντας σταυρό δίπλα στο όνομα κάθε υποψηφίου που επιλέγει.
Να αναπτύξετε αλγόριθμο, ο οποίος:
Δ1. Να διαβάζει:
α. Το πλήθος των εκλογικών τμημάτων για κάθε εκλογικό κατάστημα. Να γίνεται έλεγχος εγκυρότητας των τιμών που δίνονται, ώστε αυτές να είναι θετικές και το άθροισμά τους να είναι ίσο με 217. (μονάδες 4)
β. Τα ονόματα των υποψηφίων του συνδυασμού. (μονάδα 1)
γ. Τον αριθμό των σταυρών που έλαβε καθένας από τους 65 υποψηφίους του συνδυασμού, σε κάθε εκλογικό τμήμα. (μονάδα 1)
Μονάδες 6
Δ2. Να εμφανίζει τον συνολικό αριθμό σταυρών που έλαβε κάθε υποψήφιος.
Μονάδες 2
Δ3. Να εμφανίζει τα ονόματα των υποψηφίων που έλαβαν τους περισσότερους συνολικούς σταυρούς στο δεύτερο εκλογικό κατάστημα.
Μονάδες 5
Δ4. Να εμφανίζει, σε αλφαβητική σειρά, τα ονόματα των δέκα πρώτων σε σταυρούς υποψηφίων. Σε περίπτωση που υπάρχουν υποψήφιοι που έλαβαν τον ίδιο συνολικό αριθμό σταυρών με τον δέκατο, να εμφανίζει και τα δικά τους ονόματα.
Μονάδες 7
Τα θέματα σε pdf, 2014, Επαναληπτικές, Ημερήσια
ΛΥΣΗ
ΘΕΜΑ_Δ_2014_ΕΠΑΝ_ΗΜΕΡ [Demo δεδομένα για 15 υποψηφίους]
! προσαρμογή για την Γλωσσομάθεια (όπου 15 κανονικά είναι 65)
ΠΡΟΓΡΑΜΜΑ ΘΕΜΑ_Δ_2014_ΕΠΑΝ_ΗΜΕΡ ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: ΣΥΝΟΛΟ, ΑΡ_ΤΜΗΜ[34], ΣΤΑΥΡΟΙ[217,65], Σ_ΣΤΑΥ[65], Σ_ΣΤΑΥ2[65], Μέγιστο, i, j, k, temp ΧΑΡΑΚΤΗΡΕΣ: ΟΝΟΜΑ[65], ΟΝ2[65], temp2 ΛΟΓΙΚΕΣ: done ΑΡΧΗ ! Δ1α ! 1ος Έλεγχος εγκυρότητας συνόλου τμημάτων = 217 ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΣΥΝΟΛΟ <-- 0 ΓΡΑΨΕ 'ΕΙΣΑΓΕΤΕ ΑΡΙΘΜΟ ΤΜΗΜΑΤΩΝ ΑΝΑ ΚΑΤΑΣΤΗΜΑ' ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 34 ΓΡΑΨΕ 'ΚΑΤΑΣΤΗΜΑ: ', i ! 2ος έλεγχος εγκυρότητας ΑΡΙΘΜΟΣ_ΤΜΗΜΑΤΩΝ > 0 ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'ΑΡΙΘΜΟΣ ΤΜΗΜΑΤΩΝ: ' ΔΙΑΒΑΣΕ ΑΡ_ΤΜΗΜ[i] ΜΕΧΡΙΣ_ΟΤΟΥ ( ΑΡ_ΤΜΗΜ[i]>0 ) ΣΥΝΟΛΟ <-- ΣΥΝΟΛΟ + ΑΡ_ΤΜΗΜ[i] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΜΕΧΡΙΣ_ΟΤΟΥ ( ΣΥΝΟΛΟ = 217 ) ! Δ1β ΓΡΑΨΕ 'ΕΙΣΑΓΕΤΕ ΟΝΟΜΑΤΑ ΣΥΝΔΥΑΣΜΟΥ (65)' ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 15 ΓΡΑΨΕ 'ΔΩΣΤΕ ΟΝΟΜΑ:' ΔΙΑΒΑΣΕ ΟΝΟΜΑ[j] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ! Δ1γ ΓΡΑΨΕ 'ΕΙΣΑΓΕΤΕ ΣΤΑΥΡΟΥΣ ΥΠΟΨΗΦΙΩΝ ΣΥΝΔΥΑΣΜΟΥ ΣΕ ΚΑΘΕ ΤΜΗΜΑ' ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 15 ΓΡΑΨΕ 'ΥΠΟΨΗΦΙΟΣ ', j ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 217 ΔΙΑΒΑΣΕ ΣΤΑΥΡΟΙ[i,j] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ! Δ2 ! αρχικοποίηση πίκανα μετρητή σταυρών ανά υποψήφιο ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 15 Σ_ΣΤΑΥ[j] <-- 0 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ! άθροιση κατά στήλη ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 15 ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 217 Σ_ΣΤΑΥ[j] <-- Σ_ΣΤΑΥ[j] + ΣΤΑΥΡΟΙ[i,j] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'ΣΥΝΟΛΟ ΣΤΑΥΡΩΝ ΥΠΟΨΗΦΙΩΝ' ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 15 ΓΡΑΨΕ 'Ο ΥΠΟΨΗΦΙΟΣ ', j, ' ΕΛΑΒΕ: ', Σ_ΣΤΑΥ[j] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ !Δ3 ! αρχικοποίηση πίκανα μετρητή σταυρών ανά υποψήφιο στο 2ο κατάστημα ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 15 Σ_ΣΤΑΥ2[j] <-- 0 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'ΥΠΟΨΗΦΙΟΙ ΜΕ ΜΑΧ ΣΤΑΥΡΟΥΣ ΣΤΟ 2 ΕΚΛ.ΚΑΤΑΣΤΗΜΑ' ! άθροιση κατά στήλη ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 15 ΓΙΑ i ΑΠΟ ΑΡ_ΤΜΗΜ[1] + 1 ΜΕΧΡΙ ΑΡ_ΤΜΗΜ[1] + ΑΡ_ΤΜΗΜ[2] Σ_ΣΤΑΥ2[j] <-- Σ_ΣΤΑΥ2[j] + ΣΤΑΥΡΟΙ[i,j] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ! Εύρεση Μεγίστου Σ_ΣΤΑΥΡ2 Μέγιστο <-- Σ_ΣΤΑΥ2[1] ΓΙΑ j ΑΠΟ 2 ΜΕΧΡΙ 15 ΑΝ Σ_ΣΤΑΥ2[1] > Μέγιστο ΤΟΤΕ Μέγιστο <-- Σ_ΣΤΑΥ2[1] ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'ΥΠΟΨΗΦΙΟΙ ΜΕ ΜΑΧ ΨΗΦΟΥΣ ΣΤΟ 2ο ΚΑΤΑΣΤΗΜΑ' ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 15 ΑΝ Σ_ΣΤΑΥ2[j] = Μέγιστο ΤΟΤΕ ΓΡΑΨΕ ΟΝΟΜΑ[j] ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ! παράλληλη Φθίνουσα ταξινόμηση φυσαλίδας ! στον Σ_ΣΤΑΥΡ και ΟΝ ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 15 ΓΙΑ j ΑΠΟ 15 ΜΕΧΡΙ i ΜΕ ΒΗΜΑ -1 ΑΝ Σ_ΣΤΑΥ[j]>Σ_ΣΤΑΥ[j-1] ΤΟΤΕ temp <-- Σ_ΣΤΑΥ[j] Σ_ΣΤΑΥ[j] <-- Σ_ΣΤΑΥ[j-1] Σ_ΣΤΑΥ[j-1] <-- temp temp2 <-- ΟΝΟΜΑ[j] ΟΝΟΜΑ[j] <-- ΟΝΟΜΑ[j-1] ΟΝΟΜΑ[j-1] <-- temp2 ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ! εύρεση ισόβαθμων στη 10η θέση done <-- ΨΕΥΔΗΣ k <-- 0 ΟΣΟ done = ΨΕΥΔΗΣ ΕΠΑΝΑΛΑΒΕ ΑΝ Σ_ΣΤΑΥ[10] = Σ_ΣΤΑΥ[11 + k] ΤΟΤΕ k <-- k + 1 ΑΛΛΙΩΣ done <-- ΑΛΗΘΗΣ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ! παράλληλη αλφαβητικής (αύξουσα) ταξινόμηση φυσαλίδας ! στον ΟΝΟΜΑ και Σ_ΣΤΑΥΡ μέχρι την 10+k θέση ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 10+k ΓΙΑ j ΑΠΟ 10+k ΜΕΧΡΙ i ΜΕ ΒΗΜΑ -1 ΑΝ ΟΝΟΜΑ[j]<ΟΝΟΜΑ[j-1] ΤΟΤΕ temp2 <-- ΟΝΟΜΑ[j] ΟΝΟΜΑ[j] <-- ΟΝΟΜΑ[j-1] ΟΝΟΜΑ[j-1] <-- temp2 temp <-- Σ_ΣΤΑΥ[j] Σ_ΣΤΑΥ[j] <-- Σ_ΣΤΑΥ[j-1] Σ_ΣΤΑΥ[j-1] <-- temp ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'ΟΙ ΠΡΩΤΟΙ 10 ΥΠΟΨΗΦΙΟΙ ΚΑΙ ΙΣΟΒΑΘΜΟΙ ΣΕ ΣΤΑΥΡΟΥΣ' ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 10 + k ΓΡΑΨΕ ΟΝΟΜΑ[i] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Πρόσφατα σχόλια