ΘΕΜΑ Γ
Στις εξετάσεις του ΑΣΕΠ οι υποψήφιοι εξετάζονται σε τρεις θεματικές ενότητες. Ο βαθμός κάθε θεματικής ενότητας είναι από 1 έως 100. Η συνολική βαθμολογία κάθε υποψηφίου προκύπτει από τον μέσο όρο των βαθμών του στις τρεις θεματικές ενότητες. Ο υποψήφιος θεωρείται ως επιτυχών, αν η συνολική βαθμολογία του είναι τουλάχιστον 55 και ο βαθμός του σε κάθε θεματική ενότητα είναι τουλάχιστον 50. Να γράψετε αλγόριθμο ο οποίος:
Για κάθε υποψήφιο:
Γ1. Να διαβάζει το όνομά του και τους βαθμούς του σε καθεμία από τις τρεις θεματικές ενότητες. (Δεν απαιτείται έλεγχος εγκυρότητας δεδομένων).
Μονάδες 2
Γ2. Να εμφανίζει τον μεγαλύτερο από τους βαθμούς που πήρε στις τρεις θεματικές ενότητες.
Μονάδες 5
Γ3. Να εμφανίζει το όνομα και τη συνολική βαθμολογία του στην περίπτωση που είναι επιτυχών.
Μονάδες 4
Γ4. Ο αλγόριθμος να τερματίζει όταν δοθεί ως όνομα η λέξη “ΤΕΛΟΣ”.
Μονάδες 4
Γ5. Στο τέλος να εμφανίζει το όνομα του επιτυχόντα με τη μικρότερη συνολική βαθμολογία. Θεωρήστε ότι είναι μοναδικός.
Μονάδες 5
Τα θέματα σε pdf, 2011, Μαΐου-Ιουνίου, Ημερήσια
ΛΥΣΗ
ΠΡΟΓΡΑΜΜΑ ΘΕΜΑ_Γ_2011_ΗΜΕΡ ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: i, S, ΒΑΘ[3], ελάχιστο, μέγιστο ΛΟΓΙΚΕΣ: επιτυχών ΧΑΡΑΚΤΗΡΕΣ: ΟΝΟΜΑ, Όνομα_ελάχιστο ΑΡΧΗ ελάχιστο <-- 1000 ! ελάχιστη συνολική βαθμολογία επιτυχόντα ! αρχική τιμή αρκετά μεγάλη ώστε να αλλάξει (βλ.παρ.3, κεφ2) ΓΡΑΨΕ 'ΔΩΣΤΕ ΟΝΟΜΑ ΥΠΟΨΗΦΙΟΥ' ΔΙΑΒΑΣΕ ΟΝΟΜΑ ΟΣΟ ΟΝΟΜΑ <> 'ΤΕΛΟΣ' ΕΠΑΝΑΛΑΒΕ ! Γ4 ! Γ1 ΓΡΑΨΕ 'ΔΩΣΤΕ ΒΑΘΜΟΥΣ (3)' ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 3 ΔΙΑΒΑΣΕ ΒΑΘ[i] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ! Γ2 ! εύρεση μέγιστου σε πίνακα μέγιστο <-- ΒΑΘ[1] ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 3 ΑΝ ΒΑΘ[i]>μέγιστο ΤΟΤΕ μέγιστο <-- ΒΑΘ[i] ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'ΜΕΓΑΛΥΤΕΡΟΣ ΒΑΘΜΟΣ ', μέγιστο ! Γ3 ! αν έστω ένας βαθμός κάτω του 50, απορρίπτεται ο υποψήφιος επιτυχών <-- ΑΛΗΘΗΣ i <-- 1 ΟΣΟ i <= 3 ΚΑΙ επιτυχών = ΑΛΗΘΗΣ ΕΠΑΝΑΛΑΒΕ ΑΝ ΒΑΘ[i]<50 ΤΟΤΕ επιτυχών <-- ΨΕΥΔΗΣ ΤΕΛΟΣ_ΑΝ i <-- i+1 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ! υπολογισμός συνολικής βαθμολογίας επιτυχόντα ΑΝ επιτυχών=ΑΛΗΘΗΣ ΤΟΤΕ S <-- 0 ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 3 S <-- S + ΒΑΘ[i] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΑΝ ! Αν MO κάτω του 55, απορρίπτεται ο υποψήφιος ΑΝ επιτυχών=ΑΛΗΘΗΣ ΤΟΤΕ ΑΝ S/3 < 55 ΤΟΤΕ επιτυχών <-- ΨΕΥΔΗΣ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΑΝ ! όνομα και σύνολική βαθμολογία επιτυχόντα ΑΝ επιτυχών=ΑΛΗΘΗΣ ΤΟΤΕ ΓΡΑΨΕ 'ΕΠΙΤΥΧΩΝ', ΟΝΟΜΑ, S ΤΕΛΟΣ_ΑΝ ! Γ5 ! υπολογισμός ελάχιστης βαθμολογίας επιτυχόντων ΑΝ επιτυχών=ΑΛΗΘΗΣ ΤΟΤΕ ΑΝ S < ελάχιστο ΤΟΤΕ ελάχιστο <-- S Όνομα_ελάχιστο <-- ΟΝΟΜΑ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΑΝ ΓΡΑΨΕ 'ΔΩΣΤΕ ΟΝΟΜΑ ΥΠΟΨΗΦΙΟΥ' ΔΙΑΒΑΣΕ ΟΝΟΜΑ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΑΝ ελάχιστο<>1000 ΤΟΤΕ ! Περίπτωση να μη έχει γίνει εισαγωγή ΓΡΑΨΕ 'ΥΠΟΨΗΦΙΟΣ ΜΕ ΤΗΝ ΜΙΚΡΟΤΕΡΗ ΒΑΘΜΟΛΟΓΙΑ' ΓΡΑΨΕ Όνομα_ελάχιστο, ελάχιστο ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
ΘΕΜΑ Δ
Στην αρχή της ποδοσφαιρικής περιόδου οι 22 παίκτες μιας ομάδας, οι οποίοι αριθμούνται από 1 έως 22, ψηφίζουν για τους 3 αρχηγούς που θα τους εκπροσωπούν. Κάθε παίκτης μπορεί να ψηφίσει όσους συμπαίκτες του θέλει, ακόμα και τον εαυτό του. Τα αποτελέσματα της ψηφοφορίας καταχωρίζονται σε έναν πίνακα ΨΗΦΟΣ με 22 γραμμές και 22 στήλες, έτσι ώστε το στοιχείο ΨΗΦΟΣ[i,j] να έχει την τιμή 1, όταν ο παίκτης με αριθμό i έχει ψηφίσει τον παίκτη με αριθμό j, και τιμή 0 στην αντίθετη περίπτωση. Να γράψετε αλγόριθμο ο οποίος:
Δ1. Να διαβάζει τα στοιχεία του πίνακα ΨΗΦΟΣ και να ελέγχει την ορθότητά τους με αποδεκτές τιμές 0 ή 1.
Μονάδες 4
Δ2. Να εμφανίζει το πλήθος των παικτών που δεν ψήφισαν κανέναν.
Μονάδες 4
Δ3. Να εμφανίζει το πλήθος των παικτών που ψήφισαν τον εαυτό τους.
Μονάδες 4
Δ4. Να βρίσκει τους 3 παίκτες που έλαβαν τις περισσότερες ψήφους και να εμφανίζει τους αριθμούς τους και τις ψήφους που έλαβαν. Θεωρήστε ότι δεν υπάρχουν ισοψηφίες.
Μονάδες 8
ΛΥΣΗ
ΘΕΜΑΔ_2011ΗΜΕΡ [demo_δεδομένα6παίκτες]
ΠΡΟΓΡΑΜΜΑ ΘΕΜΑ_Δ_2011_ΗΜΕΡ ΣΤΑΘΕΡΕΣ ΠΑΙΚΤΕΣ=6 ! Για τα demo δεδομένα, για την άσκηση 22 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: ΨΗΦΟΣ[ΠΑΙΚΤΕΣ,ΠΑΙΚΤΕΣ], i, j, πλήθος, πλήθος2, S[ΠΑΙΚΤΕΣ], ΟΝ[ΠΑΙΚΤΕΣ], temp, temp2 ΛΟΓΙΚΕΣ: δε_ψήφισε ΑΡΧΗ !Δ1 ! Οι ψήφοι κάθε παίκτη εισάγονται σε στήλη ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ ΠΑΙΚΤΕΣ ΓΡΑΨΕ 'ΨΗΦΟΙ ΠΑΙΚΤΗ ', i ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ ΠΑΙΚΤΕΣ ! Έλεγχος εγκυρότητητας ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΔΙΑΒΑΣΕ ΨΗΦΟΣ[i,j] ΜΕΧΡΙΣ_ΟΤΟΥ (ΨΗΦΟΣ[i,j]=0 Ή ΨΗΦΟΣ[i,j]=1) ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ !Δ2 πλήθος <-- 0 ! παικτών που δεν ψήφισαν κανέναν ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ ΠΑΙΚΤΕΣ δε_ψήφισε <-- ΑΛΗΘΗΣ j <-- 1 ΟΣΟ j <= ΠΑΙΚΤΕΣ ΚΑΙ δε_ψήφισε=ΑΛΗΘΗΣ ΕΠΑΝΑΛΑΒΕ ΑΝ ΨΗΦΟΣ[i,j] = 0 ΤΟΤΕ j <-- j+1 ΑΛΛΙΩΣ δε_ψήφισε <-- ΨΕΥΔΗΣ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΑΝ δε_ψήφισε = ΑΛΗΘΗΣ ΤΟΤΕ πλήθος <-- πλήθος + 1 ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'Δεν ψήφισαν κανέναν ', πλήθος !Δ3 πλήθος2 <-- 0 ! παικτών που δεν ψήφισαν τον εαυτό τους ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ ΠΑΙΚΤΕΣ ΑΝ ΨΗΦΟΣ[i,i] = 1 ΤΟΤΕ πλήθος2 <-- πλήθος2 + 1 ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'Ψήφισαν τον εαυτό τους ', πλήθος2 !Δ4 ! Αρχικοποίηση Πίνακα Αθροιστή ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ ΠΑΙΚΤΕΣ S[j] <-- 0 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ! Άθροισμα κατά γραμμή / ψήφοι που έλαβε κάθε παίκτης ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ ΠΑΙΚΤΕΣ ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ ΠΑΙΚΤΕΣ S[j] <-- S[j] + ΨΗΦΟΣ[i,j] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ! κρατώ τον αριθμό κάθε παίκτη σε νέο ξεχωριστό πίνακα ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ ΠΑΙΚΤΕΣ ΟΝ[i] <-- i ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ ΠΑΙΚΤΕΣ ΓΙΑ j ΑΠΟ ΠΑΙΚΤΕΣ ΜΕΧΡΙ i ΜΕ ΒΗΜΑ -1 ΑΝ S[j]>S[j-1] ΤΟΤΕ temp <-- S[j-1] S[j-1] <-- S[j] S[j] <-- temp ! ταξινομώ παράλληλα τον ΟΝ temp2 <-- ΟΝ[j-1] ΟΝ[j-1] <-- ΟΝ[j] ΟΝ[j] <-- temp2 ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'ΟΙ 3 ΠΑΙΚΤΕΣ ΜΕ ΤΙΣ ΠΕΡΙΣΣΟΤΕΡΕΣ ΨΗΦΟΥΣ:' ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 3 ΓΡΑΨΕ 'ΠΑΙΚΤΗΣ', ΟΝ[i], 'ΕΛΑΒΕ ', S[i] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ