Μια ομάδα παιδιών στέκονται σε μια ευθεία γραμμή, το ένα πίσω από το άλλο, περιμένοντας τη σειρά τους στο κυλικείο του σχολείου. Το πρώτο παιδί προφανώς βλέπει την είσοδο του κυλικείου, όσα παιδιά όμως στέκονται πίσω του δεν είναι σίγουρο ότι και αυτά τη βλέπουν. Για να βλέπει ένα παιδί την είσοδο του κυλικείου πρέπει όλα τα παιδιά που στέκονται μπροστά του να είναι κοντύτερα από αυτό.
Πρόβλημα:
Να αναπτύξετε ένα πρόγραμμα σε Γλώσσα το οποίο, αφού διαβάσει τα ύψη 20 παιδιών που βρίσκονται το ένα πίσω από το άλλο θα εμφανίζει τον αριθμό των παιδιών που βλέπουν την είσοδο του κυλικείου. ΕΠΥ, 27ος ΠΔΠ (2015), Α’ Φάση
ΛΥΣΗ
ΠΡΟΓΡΑΜΜΑ ΑΣΚ15_ΠΑΡ_Β_ΠΙΝΑΚΕΣ_ΚΥΛΙΚΕΙΟ ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: i, j, ΥΨ[20], πλήθος ΛΟΓΙΚΕΣ: βλέπει ΑΡΧΗ ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 20 ΔΙΑΒΑΣΕ ΥΨ[i] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣπλήθος <-- 1 i <-- 2 ΟΣΟ i <= 20 ΕΠΑΝΑΛΑΒΕ βλέπει <-- ΑΛΗΘΗΣ j <-- 1 ΟΣΟ j < i ΚΑΙ βλέπει = ΑΛΗΘΗΣ ΕΠΑΝΑΛΑΒΕ ΑΝ ΥΨ[j]>ΥΨ[i] ΤΟΤΕ βλέπει <-- ΨΕΥΔΗΣ ΑΛΛΙΩΣ j <-- j+1 ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΑΝ βλέπει = ΑΛΗΘΗΣ ΤΟΤΕ πλήθος <-- πλήθος + 1ΤΕΛΟΣ_ΑΝ i <-- i + 1 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ πλήθος ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Νομίζω ότι πρέπει να διορθώσουμε την “βλέπει”.
για παράδειγμα αν η σειρά που δώσουμε τα νούμερα (για μόνο 8 μαθητές) είναι 3, 5, 6, 12, 7, 8, 15, 16 θα εμφανίσει πλήθος 4 ενώ κανονικά θα έπρεπε να εμφανίζει 6.
Έχετε δίκιο. Ενημερώθηκε!
Υπήρχε πρόβλημα με την ‘βλέπει’, αλλά και το βήμα της i. Ευχαριστώ πολύ για τη βοήθεια το χρόνο που αφιερώσατε για τη συντήρηση του κώδικα!
Θα μπορούσε να λυθεί απλούστερα ως εξής:
ΠΛ <- 1
ΜΑΧ <- ΥΨ[1]
ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ 20
ΑΝ ΜΑΧ < ΥΨ[Ι] ΤΟΤΕ
ΜΑΧ <- ΥΨ[Ι]
ΠΛ <-ΠΛ + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ ΠΛ
Ευχαριστούμε για τη συμβολή σας!