Κλασική προσέγγιση για να δείξει κάποιος την ανάγκη για πίνακες στον προγραμματισμό:
Φτιάξτε πρόγραμμα που διαβάζει ν ακέραιους βαθμούς, και βρίσκει τον μέσο όρο τους. Στη συνέχεια, το πρόγραμμα να εμφανίζει αυτούς που είναι μεγαλύτεροι από τον μέσο όρο.
Όπως κάναμε από τον Οκτώβριο, για τον μέσο όρο, μας αρκεί να διαβάσουμε επαναληπτικά μια μεταβλητή και να συσσωρεύσουμε το τρέχον άθροισμα. Το τελευταίο, διαιρούμενο με ν μας δίνει τον μέσο όρο. Όμως πώς θα βρούμε πόσοι βαθμοί ήταν μεγαλύτεροι από το μέσο όρο, αφού αυτός υπολογίστηκε μετά και έξω από την επανάληψη;
Μετά από λίγη σιωπή και προτάσεις αν μπορούμε να ξαναδιαβάσουμε τους βαθμούς, ακούγεται μια φωνή:
Κύριε, αφού ξέρουμε ότι είναι βαθμοί, μπορούμε!
Στη ΓΛΩΣΣΑ, βέβαια, ο ακέραιος τύπος γρήγορα θα υπερχειλίσει, αλλά η ιδέα είναι μαθηματικά ορθή και πανέξυπνη:
ΣΤΑΘΕΡΕΣ
ν = 9
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: ι, χ, σ, π, λ, δ
ΠΡΑΓΜΑΤΙΚΕΣ: μ
ΑΡΧΗ
σ <- 0
π <- 0
ΓΙΑ ι ΑΠΟ 0 ΜΕΧΡΙ ν – 1
ΓΡΑΨΕ "Δώσε τον ", ι + 1, "ο βαθμό: "
ΔΙΑΒΑΣΕ χ
δ <- 1
ΓΙΑ λ ΑΠΟ 1 ΜΕΧΡΙ 2*ι
δ <- δ*10
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
π <- π + δ*χ
σ <- σ + χ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
μ <- σ / ν
ΓΡΑΨΕ "Μεγαλύτεροι από το μ.ο. ", μ, " είναι οι:"
ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ ν
ΑΝ π mod 100 > μ ΤΟΤΕ
ΓΡΑΨΕ (π mod 100)
ΤΕΛΟΣ_ΑΝ
π <- π div 100
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Σε γλώσσες όχι απλώς εκπαιδευτικού σκοπού, όπως η python, οι ακέραιοι μπορούν να μεγαλώνουν πολύ περισσότερο… Οπότε θα βρεθούν μαθητές για αυτή την υλοποίηση.
a=0
n=10
for i in range(n):
print(str(i+1)+"ος βαθμός: ", end="")
x=int(input())
a+=10**(2*i)*x
s+=x
mean=s/n
for i in range(n):
if a%100>mean:
print(a%100)
a//=100
Πάντα υπάρχουν λόγοι να χαίρεσαι που είσαι δάσκαλος.
Κι από δω και μπρος δεν θα λέω «βαθμούς», αλλά «αριθμούς», ξερωγώ τις μετρήσεις ενός ρύπου τα 30 μεσημέρια ενός μήνα.