Εκφώνηση
Οι συμμετέχοντες στο camp του 18ου ΠΔΠ, επισκέφθηκαν το νέο Κυκλικό Επιταχυντή Στοιχειωδών Σωματείων (ΚΕΣΣ) Θεσσαλονίκης. Ο επιταχυντής αυτός, περιλαμβάνει Ν θυρίδες εισόδου σωματείων. Στην είσοδο κάθε θυρίδας τα σωμάτια λαμβάνουν ενέργεια Εin(N) (όπου Ν ο αριθμός της θυρίδας). Κατά την τροχιά τους μέχρι την επόμενη θυρίδα, τα σωμάτια, δαπανούν ενέργεια που αντιστοιχεί σε φράγμα δυναμικού Εout(Ν) που πρέπει να «υπερπηδήσουν». Αν Εin(Ν) >= Εout(Ν) το σωμάτιο θα φθάσει στην επόμενη θυρίδα (Ν+1), στην οποία και θα λάβει ενέργεια Εin(N+1). Η συνολική λοιπόν ενέργεια του σωματίου στην Ν+1 θυρίδα (εφόσον μπήκε στην Ν) θα είναι: Εin(Ν) – Εout(Ν) + Εin(Ν+1).
Πρόβλημα
Να αναπτύξετε πρόγραμμα σε Γλώσσα, το οποίο αφού καταχωρίσει δεδομένα σε έναν πίνακα 50 Χ 2 θέσεων όπου στην [Ν-οστή, 1] θέση θα καταχωρείται η τιμή Εin(Ν) και στην [Ν-οστή, 2] θέση θα καταχωρείται η τιμή Εout(Ν). Το πρόγραμμα στη συνέχεια θα προσδιορίζει και θα εμφανίζει την πρώτη (με το μικρότερο αριθμό) θυρίδα από την οποία αν εισέλθει το σωμάτιο, θα ολοκληρώσει μια πλήρη κυκλική τροχιά εντός του επιταχυντή. ΕΠΥ, 18ος Π.Δ.Π. (2006) Τελική Φάση (1° θέμα)
Λύση
ΠΡΟΓΡΑΜΜΑ ΑΣΚ2_ΠΑΡ_Β_ΠΙΝ_ΕΠΙΤΑΧΥΝΤΗΣ ΣΤΑΘΕΡΕΣ maxports = 10 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: i, j, port ΠΡΑΓΜΑΤΙΚΕΣ: E[maxports,2], Eold, Enew ΛΟΓΙΚΕΣ: gotout, done ΑΡΧΗ ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ maxports ΔΙΑΒΑΣΕ E[i,1], E[i,2] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ port <-- 0 ! κατάλληλη θύρα εισόδου i <-- 1 done <-- ΨΕΥΔΗΣ ΟΣΟ i<= maxports ΚΑΙ done = ΨΕΥΔΗΣ ΕΠΑΝΑΛΑΒΕ Eold <-- 0 ! Ενέργεια από την προηγούμενη θύρα j <-- i gotout <-- ΑΛΗΘΗΣ ΟΣΟ j<=maxports-1 ΚΑΙ gotout = ΑΛΗΘΗΣ ΕΠΑΝΑΛΑΒΕ Enew <-- Eold + E[j,1] - E[j,2] ΑΝ Enew <= 0 ΤΟΤΕ gotout <-- ΨΕΥΔΗΣ ΑΛΛΙΩΣ Eold <-- Enew j <-- j+1 ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΑΝ gotout = ΑΛΗΘΗΣ ΤΟΤΕ port <-- i ΤΕΛΟΣ_ΑΝ ΑΝ gotout = ΑΛΗΘΗΣ ΤΟΤΕ done <-- ΑΛΗΘΗΣ ΑΛΛΙΩΣ i <-- i+1 ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΑΝ gotout = ΑΛΗΘΗΣ ΤΟΤΕ ΓΡΑΨΕ port ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Παράδειγμα εισόδου 50 100 120 100 90 100 140 100 90 90 90 90 90 90 90 90 90 90 90 90 Έξοδος: 2
Πρόσφατα σχόλια