lostpfg
Νεοφερμένος
Ο Πέτρος αυτή τη στιγμή δεν είναι συνδεδεμένος. Είναι 32 ετών και Φοιτητής. Έχει γράψει 38 μηνύματα.
05-05-09
18:35
Νομίζω πως δουλέυει..Είναι η άσκηση με του Ρωμαίους...
"Μια μέθοδος παραδειγματισμού που χρησιμοποιούσαν πολλές φορές οι Ρωμαίοι για να αποθαρρύνουν τυχόν στασιαστές στο στράτευμα τους ήταν η εξής: Από τους στασιαστές διάλεγαν 1000 άνδρες που τους τοποθετούσαν σε μία γραμμή. Κατόπιν άρχιζαν να τους εκτελούν ανά δύο. Δηλαδή την πρώτη φορά εκτελούσαν το δεύτερο, τον τέταρτο κλπ. Εάν ο τελευταίος της σειράς επιζούσε, τοποθετούνταν πρώτος στην ευθεία για την επόμενη εκτέλεση. Με τον τρόπο αυτό, τελικά επιζούσε μόνο ένας, ο οποίος αφήνονταν ελεύθερος ώστε να κάνει γνωστή την ιστορία στο υπόλοιπο στράτευμα. Να υλοποιήσετε πρόγραμμα που θα υπολογίζει τη θέση στην αρχική ευθεία των 1000 ατόμων, που θα εξασφαλίζει τη σωτηρία!"
Λύση
"Μια μέθοδος παραδειγματισμού που χρησιμοποιούσαν πολλές φορές οι Ρωμαίοι για να αποθαρρύνουν τυχόν στασιαστές στο στράτευμα τους ήταν η εξής: Από τους στασιαστές διάλεγαν 1000 άνδρες που τους τοποθετούσαν σε μία γραμμή. Κατόπιν άρχιζαν να τους εκτελούν ανά δύο. Δηλαδή την πρώτη φορά εκτελούσαν το δεύτερο, τον τέταρτο κλπ. Εάν ο τελευταίος της σειράς επιζούσε, τοποθετούνταν πρώτος στην ευθεία για την επόμενη εκτέλεση. Με τον τρόπο αυτό, τελικά επιζούσε μόνο ένας, ο οποίος αφήνονταν ελεύθερος ώστε να κάνει γνωστή την ιστορία στο υπόλοιπο στράτευμα. Να υλοποιήσετε πρόγραμμα που θα υπολογίζει τη θέση στην αρχική ευθεία των 1000 ατόμων, που θα εξασφαλίζει τη σωτηρία!"
Λύση
ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ_ΒΛΕΠΩ_ΤΑ_ΡΑΔΙΚΙΑ_ΑΝΑΠΟΔΑ
ΣΤΑΘΕΡΕΣ
Ν=1000
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ:i,j,ΠΙΝ[Ν],sum,temp,temp1,temp2[Ν],k
ΑΡΧΗ
!Γέμισμα πίνακα
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
ΠΙΝ <-- i
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!Τροποποίηση πίνακα ΠΙΝ με νέα σείρα με την βοήθεια ενώς πίνακα(temp2)
sum <-- Ν
ΟΣΟ sum<>1 ΕΠΑΝΑΛΑΒΕ
k <-- sum
!Σκοτώνω "μηδενίζοντας" τους νεκρόυς και παράλληλα μετράω το νέο πλήθος(k)
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ sum ΜΕΒΗΜΑ 2
ΠΙΝ <-- 0
k <-- k-1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ ΠΙΝ[sum]=0 ΤΟΤΕ
i <-- 1
j <-- 1
ΟΣΟ i <=sum ΚΑΙ j<=k ΕΠΑΝΑΛΑΒΕ
ΑΝ ΠΙΝ<>0 ΤΟΤΕ
temp2[j] <-- ΠΙΝ
ΠΙΝ <-- 0
i <-- i+1
j <-- j+1
ΑΛΛΙΩΣ
i <-- i+1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΛΛΙΩΣ
i <-- 1
j <-- 1
ΟΣΟ i <=sum ΚΑΙ j<=k ΕΠΑΝΑΛΑΒΕ
ΑΝ ΠΙΝ<>0 ΤΟΤΕ
temp2[j+1] <-- ΠΙΝ
ΠΙΝ <-- 0
i <-- i+1
j <-- j+1
ΑΛΛΙΩΣ
i <-- i+1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
temp2[1] <-- temp2[k+1]
temp2[k+1] <-- 0
ΤΕΛΟΣ_ΑΝ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ k
ΠΙΝ <-- temp2
temp2 <-- 0
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!Το νέο πλήθος(j) γίνεται sum για τον επόμενο γύρω "του Θανάτου"
sum <-- k
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Η τυχέρη θέση είναι η ',ΠΙΝ[1],'η'
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Σημείωση: Το μήνυμα αυτό γράφτηκε 14 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
lostpfg
Νεοφερμένος
Ο Πέτρος αυτή τη στιγμή δεν είναι συνδεδεμένος. Είναι 32 ετών και Φοιτητής. Έχει γράψει 38 μηνύματα.
05-05-09
14:11
ΠΡΟΓΡΑΜΜΑ ΑΚΣΗΣΗ_ΕΞ_ΑΣΚΗΣΗ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ:j,k,i,ΠΙΝ[100],temp
ΛΟΓΙΚΕΣ:done
ΑΡΧΗ
j <-- 1
ΓΡΑΨΕ 'Δώστε το 1ο στοιχείο του πίνακα'
ΔΙΑΒΑΣΕ ΠΙΝ[1]
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 100
ΓΡΑΨΕ 'Δώστε το ',i,'ο στοιχείο του πίνακα'
ΔΙΑΒΑΣΕ temp
done <-- ΨΕΥΔΗΣ
k <-- 1
ΟΣΟ k<=j ΕΠΑΝΑΛΑΒΕ
ΑΝ temp=ΠΙΝ[k] ΤΟΤΕ
k <-- j
done <-- ΑΛΗΘΗΣ
ΑΛΛΙΩΣ
k <-- k+1
ΤΕΛΟΣ_ΑΝ
ΑΝ done=ΑΛΗΘΗΣ ΤΟΤΕ
k <-- 1
ΓΡΑΨΕ 'Δώστε το ',i,'ο στοιχείο του πίνακα ξανά'
ΔΙΑΒΑΣΕ temp
done <-- ΨΕΥΔΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΠΙΝ <-- temp
j <-- j+1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Φίλε μια χαρά τρέχει!!! δες το στην γλωσσομάθεια για του λόγου το αληθές.....:no1:
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ:j,k,i,ΠΙΝ[100],temp
ΛΟΓΙΚΕΣ:done
ΑΡΧΗ
j <-- 1
ΓΡΑΨΕ 'Δώστε το 1ο στοιχείο του πίνακα'
ΔΙΑΒΑΣΕ ΠΙΝ[1]
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 100
ΓΡΑΨΕ 'Δώστε το ',i,'ο στοιχείο του πίνακα'
ΔΙΑΒΑΣΕ temp
done <-- ΨΕΥΔΗΣ
k <-- 1
ΟΣΟ k<=j ΕΠΑΝΑΛΑΒΕ
ΑΝ temp=ΠΙΝ[k] ΤΟΤΕ
k <-- j
done <-- ΑΛΗΘΗΣ
ΑΛΛΙΩΣ
k <-- k+1
ΤΕΛΟΣ_ΑΝ
ΑΝ done=ΑΛΗΘΗΣ ΤΟΤΕ
k <-- 1
ΓΡΑΨΕ 'Δώστε το ',i,'ο στοιχείο του πίνακα ξανά'
ΔΙΑΒΑΣΕ temp
done <-- ΨΕΥΔΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΠΙΝ <-- temp
j <-- j+1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Φίλε μια χαρά τρέχει!!! δες το στην γλωσσομάθεια για του λόγου το αληθές.....:no1:
Σημείωση: Το μήνυμα αυτό γράφτηκε 14 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.