!=======================================================================================================
! Μια μέθοδος παραδειγματισμού που χρησιμοποιούσαν πολλές φορές οι Ρωμαίοι
! για να αποθαρρύνουν τυχόν στασιαστές στο στράτευμα τους ήταν η εξής:
! Από τους στασιαστές διάλεγαν 1000 άνδρες που τους τοποθετούσαν σε μία γραμμή.
! Κατόπιν άρχιζαν να τους εκτελούν ανά δύο. Δηλαδή την πρώτη φορά εκτελούσαν το δεύτερο, τον τέταρτο κλπ.
! Εάν ο τελευταίος της σειράς επιζούσε, τοποθετούνταν πρώτος στην ευθεία για την επόμενη εκτέλεση.
! Με τον τρόπο αυτό, τελικά επιζούσε μόνο ένας, ο οποίος αφήνονταν ελεύθερος
! ώστε να κάνει γνωστή την ιστορία στο υπόλοιπο στράτευμα.
! Να υλοποιήσετε πρόγραμμα που θα υπολογίζει τη θέση στην αρχική ευθεία των 1000 ατόμων,
! που θα εξασφαλίζει τη σωτηρία!
!=======================================================================================================
ΠΡΟΓΡΑΜΜΑ Ρωμαίοι_Στασιαστές_με_παρακολούθηση_τιμών
ΣΤΑΘΕΡΕΣ
Μ=10 !Μ: πλήθος ρωμαίων στασιαστών (ενδιαφέρον παρούσιαζει η δοκιμή διαφορετικών αριθμών εδώ)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ:i,Σ[Μ],θ[Μ],Ν
ΑΡΧΗ
Ν <-- Μ ! καθώς το πλήθος θα μεταβάλεται, καταχωρούμε τη σταθερά Μ σε μια μεταβλητή Ν
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
θ[i] <-- i ! Καταχωρούμε τη θεση τους σε ένα πίνακα Ν θέσεων
Σ[i] <-- 1 ! Θεωρούμε πως είναι όλοι ζωντανοί (1: Ζωντανός & 0:Νεκρός)
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΟΣΟ Ν>1 ΕΠΑΝΑΛΑΒΕ ! επαναλαβάνουμε μέχρι να μεινει μονο ενας !
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
ΓΡΑΨΕ_ θ[i],' ' ! εμφανίζουμε κάθε φορα αυτους που μένουν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ Ν ΜΕ ΒΗΜΑ 2
Σ[i] <-- 0 ! εκτελούμε ανα 2 ξεκινώντας κάθε φορά από τον 2ο
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
ΓΡΑΨΕ_ Σ[i],' ' ! εμφανίζουμε στη συνέχεια ποιοι εκτελέστηκαν και ποιοι παρέμειναν ζωντανοί
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ
ΑΝ Σ[Ν]=0 ΤΟΤΕ ! ελέγχουμε αν ο τελευταίος έχει εκτελεστεί
Ν <-- Ν DIV 2 ! αν ΝΑΙ τότε το πλήθος τους είναι άρτιο και άρα έχουν μεινει οι μισοι
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ Ν ! μεταφέρουμε τους εναπομείναντες στη θέση που πρέπει
θ[i] <-- θ[2*i-1] ! 2ος θα γίνει ο 3ος, 3ος ο 5ος, 4ος ο 7ος , 5ος ο 9ος κλπ δηλ. [i]oς ο [2i-1]ος
Σ[i] <-- Σ[1] ! Θεωρούμε πως είναι πάλι όλοι ζωντανοί
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΛΛΙΩΣ
! αν ΟΧΙ
θ[2] <-- θ[1] ! ο πρώτος πρέπει να μετακινηθεί στην δεύτερη θέση, αφου
θ[1] <-- θ[Ν] ! ο τελευταίος (Νιοστος) θα πρέπει να γίνει τώρα πρώτος
Σ[2] <-- 1
Ν <-- Ν DIV 2 + 1 ! αν ΟΧΙ τότε το πλήθος τους είναι περιττό και άρα έχουν μεινει οι μισοι + 1
ΓΙΑ i ΑΠΟ 3 ΜΕΧΡΙ Ν ! μεταφέρουμε τους εναπομείναντες στη θέση που πρέπει
θ[i] <-- θ[2*i-3] ! 3ος θα γίνει ο 3ος, 4ος ο 5ος, 5ος ο 7ος , 6ος ο 9ος κλπ δηλ. [i]oς ο [2i-3]ος
Σ[i] <-- Σ[1] ! Θεωρούμε πως είναι πάλι όλοι ζωντανοί
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΑΝ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
ΓΡΑΨΕ_ θ[i],' ' !εμφανίζουμε κάθε φορα αυτους που απέμειναν μετά την εκτέλεση στις νέες τους θέσεις
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
ΓΡΑΨΕ_ Σ[i],' '
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ
ΓΡΑΨΕ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Η θέση που εξασφαλίζει τη σωτηρία όταν οι στασιαστες είναι ', Μ,' είναι η ',θ[1],'η'
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ