ΘΕΜΑ Γ
Δίνεται η εξίσωση Α·x + B·y + Γ·z = Δ. Να αναπτύξετε αλγόριθμο, ο οποίος, θεωρώντας δεδομένες τις τιμές των Α, Β, Γ και Δ:
Γ 1. Να εμφανίζει όλες τις λύσεις (τριάδες) της εξίσωσης, εξετάζοντας όλους τους δυνατούς συνδυασμούς ακεραίων τιμών των x, y, z, που είναι μεγαλύτερες από –100 και μικρότερες από 100. Αν δεν υπάρχουν τέτοιες λύσεις, να εμφανίζει κατάλληλο μήνυμα.
Μονάδες 8
Εφόσον υπάρχουν τέτοιες λύσεις:
Γ2. Να εμφανίζει την πρώτη λύση (τριάδα) για την οποία το άθροισμα των x, y, z έχει τη μεγαλύτερη τιμή.
Μονάδες 4
Γ3. Να εμφανίζει το πλήθος των λύσεων της εξίσωσης για τις οποίες τα x, y, z είναι θετικοί άρτιοι αριθμοί.
Μονάδες 4
Γ4. Να εμφανίζει το ποσοστό των λύσεων της εξίσωσης για τις οποίες ένα μόνο από τα x, y, z είναι ίσο με μηδέν.
Μονάδες 4
ΛΥΣΗ
! Για εκτέλεση στην Γλωσσομάθεια προσαρμόστε τα πεδία τιμών ! των x,y,z σε [-5,5], [-10,10], [-20,20]
ΠΡΟΓΡΑΜΜΑ ΘΕΜΑ_Γ_2014_ΕΠΑΝ_ΗΜΕΡ ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: πλήθος_λύσεων, πλήθος1, πλήθος2, Μέγιστο, Μεγ_x, Μεγ_y, Μεγ_z, Α, Β, Γ, Δ, x, y, z, d ΠΡΑΓΜΑΤΙΚΕΣ: ποσοστό ΑΡΧΗ ! Έστω οι παρακάτω τιμές για Α,Β, Γ, Δ Α <-- 2 Β <-- 1 Γ <-- -1 Δ <-- 0 Μέγιστο <-- -10000 πλήθος_λύσεων <-- 0 πλήθος1 <-- 0 πλήθος2 <-- 0 ΓΙΑ x ΑΠΟ -99 ΜΕΧΡΙ 99 ΓΙΑ y ΑΠΟ -99 ΜΕΧΡΙ 99 ΓΙΑ z ΑΠΟ -99 ΜΕΧΡΙ 99 ΑΝ Α * x + Β * y + Γ * z = Δ ΤΟΤΕ ! Γ1 πλήθος_λύσεων <-- πλήθος_λύσεων + 1 ΓΡΑΨΕ '(x,y,z) ', x, y, z ! Γ2 ΑΝ x+y+z > Μέγιστο ΤΟΤΕ Μέγιστο <-- x + y + z Mέγ_x <-- x Μεγ_y <-- y Μεγ_z <-- z ΤΕΛΟΣ_ΑΝ ! Γ3 ΑΝ (x>0) και (y>0) και (z>0) και (x mod 2 = 0) και (y mod 2 = 0) και (z mod 2 = 0) ΤΟΤΕ πλήθος1 <-- πλήθος1 + 1 ΤΕΛΟΣ_ΑΝ ! Γ4 ΑΝ ( (x=0) και (y*z<>0) ) ή ( (y=0) και (x*z<>0) ) ή ( (z=0) και (x*z<>0) ) ΤΟΤΕ πλήθος2 <-- πλήθος2 + 1 ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ Ποσοστό<--πλήθος2/πλήθος_λύσεων * 100 ΓΡΑΨΕ 'ΜΕΓΙΣΤΟ ΑΘΡΟΙΣΜΑ x,y,z ', Μεγ_x, Μεγ_y, Μεγ_z ΓΡΑΨΕ 'ΠΛΗΘΟΣ ΣΥΝΔΥΑΣΜΩΝ ΘΕΤΙΚΩΝ ΑΡΤΙΩΝ x,y,z ', Πλήθος2 ΓΡΑΨΕ 'ΠΟΣΟΣΤΟ', Ποσοστό ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
ΘΕΜΑ Δ
Στις πρόσφατες δημοτικές εκλογές, σε κάποιο δήμο της χώρας, χρησιμοποιήθηκαν για την ψηφοφορία 217 αίθουσες (εκλογικά τμήματα), σε 34 δημόσια κτήρια (εκλογικά καταστήματα). Τα τμήματα αριθμήθηκαν με τη σειρά, από το 1 μέχρι το 217, έτσι ώστε οι αριθμοί των εκλογικών τμημάτων κάθε καταστήματος να είναι διαδοχικοί: αριθμήθηκαν πρώτα τα τμήματα του πρώτου καταστήματος, στη συνέχεια τα τμήματα του δεύτερου καταστήματος κ.ο.κ. Το ψηφοδέλτιο ενός από τους συμμετέχοντες συνδυασμούς είχε 65 υποψηφίους. Κάθε ψηφοφόρος ψηφίζει σημειώνοντας σταυρό δίπλα στο όνομα κάθε υποψηφίου που επιλέγει.
Να αναπτύξετε αλγόριθμο, ο οποίος:
Δ1. Να διαβάζει:
α. Το πλήθος των εκλογικών τμημάτων για κάθε εκλογικό κατάστημα. Να γίνεται έλεγχος εγκυρότητας των τιμών που δίνονται, ώστε αυτές να είναι θετικές και το άθροισμά τους να είναι ίσο με 217. (μονάδες 4)
β. Τα ονόματα των υποψηφίων του συνδυασμού. (μονάδα 1)
γ. Τον αριθμό των σταυρών που έλαβε καθένας από τους 65 υποψηφίους του συνδυασμού, σε κάθε εκλογικό τμήμα. (μονάδα 1)
Μονάδες 6
Δ2. Να εμφανίζει τον συνολικό αριθμό σταυρών που έλαβε κάθε υποψήφιος.
Μονάδες 2
Δ3. Να εμφανίζει τα ονόματα των υποψηφίων που έλαβαν τους περισσότερους συνολικούς σταυρούς στο δεύτερο εκλογικό κατάστημα.
Μονάδες 5
Δ4. Να εμφανίζει, σε αλφαβητική σειρά, τα ονόματα των δέκα πρώτων σε σταυρούς υποψηφίων. Σε περίπτωση που υπάρχουν υποψήφιοι που έλαβαν τον ίδιο συνολικό αριθμό σταυρών με τον δέκατο, να εμφανίζει και τα δικά τους ονόματα.
Μονάδες 7
ΛΥΣΗ
! προσαρμογή για την Γλωσσομάθεια (όπου 15, κανονικά είναι 65)
ΘΕΜΑ_Δ_2014_ΕΠΑΝ_ΗΜΕΡ [Demo δεδομένα για 15 υποψηφίους]
ΠΡΟΓΡΑΜΜΑ ΘΕΜΑ_Δ_2014_ΕΠΑΝ_ΗΜΕΡ ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: ΣΥΝΟΛΟ, ΑΡ_ΤΜΗΜ[34], ΣΤΑΥΡΟΙ[217,65], Σ_ΣΤΑΥ[65], Σ_ΣΤΑΥ2[65], Μέγιστο, i, j, k, temp ΧΑΡΑΚΤΗΡΕΣ: ΟΝΟΜΑ[65], ΟΝ2[65], temp2 ΛΟΓΙΚΕΣ: done ΑΡΧΗ ! Δ1α ΣΥΝΟΛΟ <-- 0 ΓΡΑΨΕ 'ΕΙΣΑΓΕΤΕ ΑΡΙΘΜΟ ΤΜΗΜΑΤΩΝ ΑΝΑ ΚΑΤΑΣΤΗΜΑ' ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 34 ΓΡΑΨΕ 'ΚΑΤΑΣΤΗΜΑ: ', i ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'ΑΡΙΘΜΟΣ ΤΜΗΜΑΤΩΝ: ' ΔΙΑΒΑΣΕ ΑΡ_ΤΜΗΜ[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 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ! άθροιση κατά στήλη ΓΙΑ 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] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ