ΠΡΟΓΡΑΜΜΑ Μετρό ! ΘΕΜΑ Δ ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ:Ι,Κ,Μ,Μ1,Μ2,ΓΡΑΦ,ΓΡΠΡ,ΓΡ,Σ1,Σ2,ΘΚΟΜΒ[3],ΣΚΟΜΒ ΧΑΡΑΚΤΗΡΕΣ: ΣΤΘ[3,20],ΑΦΕΤ,ΠΡΟΟΡ,ΚΟΜΒ ΑΡΧΗ ΣΤΘ[1,1] <-- 'Πειραιάς' ΣΤΘ[1,2] <-- 'Φάληρο' ΣΤΘ[1,3] <-- 'Μοσχάτο' ΣΤΘ[1,4] <-- 'Καλλιθέα' ΣΤΘ[1,5] <-- 'Ταύρος' ΣΤΘ[1,6] <-- 'Πετράλωνα' ΣΤΘ[1,7] <-- 'Θησείο' ΣΤΘ[1,8] <-- 'Μοναστηράκι' ΣΤΘ[1,9] <-- 'Ομόνοια' ΣΤΘ[1,10] <-- 'Βικτώρια' ΣΤΘ[1,11] <-- 'Αττική' ΣΤΘ[1,12] <-- 'Άγιος Νικόλαος' ΣΤΘ[1,13] <-- 'Κάτω Πατήσια' ΣΤΘ[1,14] <-- 'Άγιος Ελευθέριος' ΣΤΘ[1,15] <-- 'Άνω Πατήσια' ΣΤΘ[1,16] <-- 'Περισσός' ΣΤΘ[1,17] <-- 'Πευκάκια' ΣΤΘ[1,18] <-- 'Νέα Ιωνία' ΣΤΘ[1,19] <-- 'Ηράκλειο' ΣΤΘ[1,20] <-- 'Ειρήνη' ΣΤΘ[2,1] <-- 'Ανθούπολη' ΣΤΘ[2,2] <-- 'Περιστέρι' ΣΤΘ[2,3] <-- 'Άγιος Αντώνιος' ΣΤΘ[2,4] <-- 'Σεπόλια' ΣΤΘ[2,5] <-- 'Γεωπονική' ΣΤΘ[2,6] <-- 'Σταθμός Λαρίσης' ΣΤΘ[2,7] <-- 'Μεταξουργείο' ΣΤΘ[2,8] <-- 'Ομόνοια' ΣΤΘ[2,9] <-- 'Πανεπιστήμιο' ΣΤΘ[2,10] <-- 'Ζάππειο' ΣΤΘ[2,11] <-- 'Ακρόπολη' ΣΤΘ[2,12] <-- 'Συγγρού - Φιξ' ΣΤΘ[2,13] <-- 'Νέος Κόσμος' ΣΤΘ[2,14] <-- 'Άγιος Ιωάννης' ΣΤΘ[2,15] <-- 'Δάφνη' ΣΤΘ[2,16] <-- 'Άγιος Δημήτριος' ΣΤΘ[2,17] <-- 'Ηλιούπολη' ΣΤΘ[2,18] <-- 'Άλιμος' ΣΤΘ[2,19] <-- 'Αργυρούπολη' ΣΤΘ[2,20] <-- 'Ελληνικό' ΣΤΘ[3,1] <-- 'Δημοτικό Θέατρο' ΣΤΘ[3,2] <-- 'Λιμάνι' ΣΤΘ[3,3] <-- 'Μανιάτικα' ΣΤΘ[3,4] <-- 'Νίκαια' ΣΤΘ[3,5] <-- 'Κορυδαλλός' ΣΤΘ[3,6] <-- 'Αγία Βαρβάρα' ΣΤΘ[3,7] <-- 'Αγία Μαρίνα' ΣΤΘ[3,8] <-- 'Αιγάλεω' ΣΤΘ[3,9] <-- 'Ελαιώνας' ΣΤΘ[3,10] <-- 'Κεραμεικός' ΣΤΘ[3,11] <-- 'Ομόνοια' ΣΤΘ[3,12] <-- 'Κολωνάκι' ΣΤΘ[3,13] <-- 'Ευαγγελισμός' ΣΤΘ[3,14] <-- 'Μέγαρο Μουσικής' ΣΤΘ[3,15] <-- 'Αμπελόκηποι' ΣΤΘ[3,16] <-- 'Πανόρμου' ΣΤΘ[3,17] <-- 'Κατεχάκη' ΣΤΘ[3,18] <-- 'Εθνική Άμυνα' ΣΤΘ[3,19] <-- 'Χολαργός' ΣΤΘ[3,20] <-- 'Νομισματοκοπείο' ! Δ2--- Εύρεση του κοινού σταθμού (κόμβου) των γραμμών 2 και 3 του μετρό Ι <-- 0 ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ Ι <-- Ι+1 Κ <-- 0 ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ Κ <-- Κ+1 ΜΕΧΡΙΣ_ΟΤΟΥ (ΣΤΘ[2,Ι]=ΣΤΘ[3,Κ]) Ή Κ=20 ΜΕΧΡΙΣ_ΟΤΟΥ ΣΤΘ[2,Ι]=ΣΤΘ[3,Κ] ! Τερματισμός χωρίς έλεγχο της περίπτωσης να μην υπάρχει κόμβος (Ι=20), βάσει εκφώνησης ΚΟΜΒ <-- ΣΤΘ[2,Ι] ΓΡΑΨΕ 'Κόμβος των τριών γραμμών του μετρό ο σταθμός:',ΚΟΜΒ !------Αποθήκευση σε πίνακα ΘΚΟΜΒ[3] των θέσεων του κόμβου στις 3 γραμμές ΘΚΟΜΒ[2] <-- Ι !-----Θέση του κόμβου στη 2η γραμμή του μετρό ΘΚΟΜΒ[3] <-- Κ !-----Θέση του κόμβου στη 3η γραμμή του μετρό !Δ3--------Κλήση για εύρεση θέσης του κόμβου στη 1η γραμμή του μετρό ΚΑΛΕΣΕ ΑΝΑΖΗΤΗΣΗ(ΚΟΜΒ,ΣΤΘ,ΓΡ,Κ) ΘΚΟΜΒ[ΓΡ] <-- Κ !------Θέση του κόμβου στη 1η γραμμή του μετρό !Δ4-------- ΓΡΑΨΕ 'ΔΩΣΕ ΣΤΑΘΜΟ ΑΦΕΤΗΡΙΑΣ' ΔΙΑΒΑΣΕ ΑΦΕΤ ΟΣΟ ΑΦΕΤ<>' ' ΕΠΑΝΑΛΑΒΕ ΓΡΑΨΕ 'ΔΩΣΕ ΣΤΑΘΜΟ ΠΡΟΟΡΙΣΜΟΥ' ΔΙΑΒΑΣΕ ΠΡΟΟΡ !-----Αν ο κομβικός σταθμός είναι ο αρχικός σταθμός επιβίβασης ή ο τελικός σταθμός !----προορισμού, επιλέγουμε αυτόν που ανήκει στην ίδια γραμμή με τον σταθμό προορισμού !----ή επιβίβασης αντίστοιχα (ο επιβάτης δεν θα αλλάξει γραμμή μετρό). !Επειδή η ΑΝΑΖΗΤΗΣΗ επιστρέφει τη θέση του κεντρικού κόμβου μόνο στην 1η γραμμή του μετρό !---τη θέση του σταθμού-κόμβου την λαμβάνουμε πάντα απ' τον πίνακα ΘΚΟΜΒ[3]. ΑΝ ΑΦΕΤ=ΚΟΜΒ ΤΟΤΕ ΓΡΑΦ <-- ΓΡΠΡ Σ1 <-- ΘΚΟΜΒ[ΓΡΠΡ] !-----το α/α παρακάτω σημαίνει αύξων αριθμός άφιξης, δηλαδή η σειρά (θέση) !-----του σταθμού στη γραμμή του μετρό !--------Κλήση για εύρεση θέσης σταθμού προορισμού (γραμμή και α/α) ΚΑΛΕΣΕ ΑΝΑΖΗΤΗΣΗ(ΠΡΟΟΡ,ΣΤΘ,ΓΡΠΡ,Σ2) ΑΛΛΙΩΣ_ΑΝ ΠΡΟΟΡ=ΚΟΜΒ ΤΟΤΕ !------- Κλήση για εύρεση θέσης σταθμού αφετηρίας (γραμμή και α/α) ΚΑΛΕΣΕ ΑΝΑΖΗΤΗΣΗ(ΑΦΕΤ,ΣΤΘ,ΓΡΑΦ,Σ1) ΓΡΠΡ <-- ΓΡΑΦ Σ2 <-- ΘΚΟΜΒ[ΓΡΑΦ] ΑΛΛΙΩΣ !-----Κλήσεις για εύρεση θέσης σταθμών αφετηρίας και προορισμού (γραμμή και α/α) ΚΑΛΕΣΕ ΑΝΑΖΗΤΗΣΗ(ΑΦΕΤ,ΣΤΘ,ΓΡΑΦ,Σ1) ΚΑΛΕΣΕ ΑΝΑΖΗΤΗΣΗ(ΠΡΟΟΡ,ΣΤΘ,ΓΡΠΡ,Σ2) ΤΕΛΟΣ_ΑΝ ΑΝ ΓΡΑΦ=ΓΡΠΡ ΤΟΤΕ !Αν οι σταθμοί αφετηρία-προορισμός είναι στην ίδια γραμμή ΚΑΛΕΣΕ ΕΚΤΥΠΩΣΗ(ΣΤΘ,ΓΡΑΦ,Σ1,Σ2,Μ) ΑΛΛΙΩΣ !------Διαφορετικά !------Εμφάνιση και μέτρημα σταθμών από επιβίβαση μέχρι τον κόμβο ΣΚΟΜΒ <-- ΘΚΟΜΒ[ΓΡΑΦ] !-----ενημέρωση θέσης κόμβου ως προορισμός ΚΑΛΕΣΕ ΕΚΤΥΠΩΣΗ(ΣΤΘ,ΓΡΑΦ,Σ1,ΣΚΟΜΒ,Μ1) !-----Εμφάνιση και μέτρημα σταθμών από κόμβο μέχρι τον προορισμό ΣΚΟΜΒ <-- ΘΚΟΜΒ[ΓΡΠΡ] !-----ενημέρωση θέσης κόμβου ως επιβίβαση ΚΑΛΕΣΕ ΕΚΤΥΠΩΣΗ(ΣΤΘ,ΓΡΠΡ,ΣΚΟΜΒ,Σ2,Μ2) Μ <-- Μ1+Μ2 ΤΕΛΟΣ_ΑΝ ΓΡΑΨΕ 'Πλήθος σταθμών διαδρομής=',Μ ΓΡΑΨΕ 'ΔΩΣΕ ΣΤΑΘΜΟ ΑΦΕΤΗΡΙΑΣ' ΔΙΑΒΑΣΕ ΑΦΕΤ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ !Δ5----------- ΔΙΑΔΙΚΑΣΙΑ ΑΝΑΖΗΤΗΣΗ(ΚΟΜΒ,ΣΤΘ,ΓΡ,ΣΤ) ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ:ΓΡ,ΣΤ ΧΑΡΑΚΤΗΡΕΣ:ΚΟΜΒ,ΣΤΘ[3,20] ΑΡΧΗ ΓΡ <-- 0 ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΓΡ <-- ΓΡ+1 ΣΤ <-- 0 ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΣΤ <-- ΣΤ+1 ΜΕΧΡΙΣ_ΟΤΟΥ (ΚΟΜΒ=ΣΤΘ[ΓΡ,ΣΤ]) Ή ΣΤ=20 ΜΕΧΡΙΣ_ΟΤΟΥ (ΚΟΜΒ=ΣΤΘ[ΓΡ,ΣΤ]) ! Τερματισμός χωρίς έλεγχο της περίπτωσης να μην υπάρχει (ΓΡ=3), βάσει εκφώνησης ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ !Δ6-----------Διαδικασία που εμφανίζει και μετράει τους σταθμούς διέλευσης ΔΙΑΔΙΚΑΣΙΑ ΕΚΤΥΠΩΣΗ(ΣΤΘ,ΓΡ,ΑΦ,ΠΡ,Μ) ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ:ΓΡ,ΑΦ,ΠΡ,Μ,Β,Ι ΧΑΡΑΚΤΗΡΕΣ:ΣΤ,ΣΤΘ[3,20] ΑΡΧΗ ΓΡΑΨΕ 'ΔΙΑΔΡΟΜΗ ΣΤΗΝ',ΓΡ,'η ΓΡΑΜΜΗ ΜΕΤΡΟ:' !------Ρύθμιση βήματος Β και για αντίστροφη σειρά εμφάνισης σταθμών Β <-- 1 ΑΝ ΑΦ>ΠΡ ΤΟΤΕ Β <-- -1 ΤΕΛΟΣ_ΑΝ Μ <-- 0 ΓΙΑ Ι ΑΠΟ ΑΦ ΜΕΧΡΙ ΠΡ ΜΕ ΒΗΜΑ Β ΓΡΑΨΕ ΣΤΘ[ΓΡ,Ι] Μ <-- Μ+1 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ