You are on page 1of 3

Τάξη : Γ’ Λυκείου

Ενότητα : ∆οµή Επιλογής


Βαθµός ∆υσκολίας :

Δίληµµα Φυλακισµένου

ΕΚΦΩΝΗΣΗ

Το παρακάτω πρόβληµα είναι γνωστό και ως ∆ίληµµα του Φυλακισµένου.

«Η αστυνοµία έχει συλλάβει δύο συνεργούς. Στον καθένα τίθεται ο εξής συµβιβασµός:
Οµολόγησε και είσαι ελεύθερος, υπό τον όρο ότι ο συνένοχος σου δεν θα οµολογήσει
και αυτός (σε αυτή την περίπτωση ο συνένοχος καταδικάζεται σε 10 χρόνια φυλάκιση).
Εάν οµολογήσουν και οι δύο τότε κάθε ένας καταδικάζεται σε 6 χρόνια φυλάκιση. Εάν
δεν οµολογήσει κανείς τότε το µόνο που αποδεικνύεται είναι ένα ελαφρύτερο έγκληµα
(σε αυτή την περίπτωση καταδικάζεται ο καθένας σε 2 χρόνια φυλάκιση).»

Να γραφεί πρόγραµµα το οποίο:

• θα διαβάζει αν οµολόγησαν ή όχι οι δύο συνεργοί και

• θα εµφανίζει σε πόσα χρόνια φυλακής καταδικάστηκε ο καθένας από τους δύο


συνεργούς ή θα εµφανίζει το µήνυµα «Είναι ελεύθερος» για αυτόν που τελικά δεν
καταδικάστηκε.

ΜΕΘΟ∆ΟΛΟΓΙΑ

Παρατηρούµε ότι η άσκηση αναφέρει πολλές διαφορετικές περιπτώσεις που είναι


δύσκολο να τις εντοπίσουµε µε µία πρώτη ανάγνωση. Σε τέτοιες περιπτώσεις θα ήταν
πολύ χρήσιµο να κάνουµε ένα απλό σχεδιάγραµµα, όπως φαίνεται παρακάτω:
Ασκήσεις Α.Ε.Π.Π.

Ο πρώτος
οµολόγησε;

ΝΑΙ ΟΧΙ

Ο δεύτερος Ο δεύτερος
οµολόγησε; οµολόγησε;

ΝΑΙ ΟΧΙ ΝΑΙ ΟΧΙ

ος ος ος ος
1 : 6 χρόνια 1 : 0 χρόνια 1 : 10 χρόνια 1 : 2 χρόνια
ος ος ος ος
2 : 6 χρόνια 2 : 10 χρόνια 2 : 0 χρόνια 2 : 2 χρόνια

ΛΥΣΗ
ΠΡΟΓΡΑΜΜΑ ∆ίληµµα_Φυλακισµένου
ΜΕΤΑΒΛΗΤΕΣ
ΧΑΡΑΚΤΗΡΕΣ: ΑΠΑΝΤΗΣΗ_1, ΑΠΑΝΤΗΣΗ_2
ΑΚΕΡΑΙΕΣ: ΧΡΟΝΙΑ_1, ΧΡΟΝΙΑ_2
ΑΡΧΗ
ΓΡΑΨΕ "Ο πρώτος συνεργός οµολόγησε ( ΝΑΙ / ΟΧΙ ); "
∆ΙΑΒΑΣΕ ΑΠΑΝΤΗΣΗ_1 Στις µεταβλητές ΧΡΟΝΙΑ_1 και
ΓΡΑΨΕ "Ο δεύτερος συνεργός οµολόγησε ( ΝΑΙ / ΟΧΙ ); " ΧΡΟΝΙΑ_2 αποθηκεύονται τα
ος
∆ΙΑΒΑΣΕ ΑΠΑΝΤΗΣΗ_2 χρόνια που θα φυλακιστούν ο 1
ος
και ο 2 συνεργός αντίστοιχα.

ΑΝ ΑΠΑΝΤΗΣΗ_1 = "ΝΑΙ" ΤΟΤΕ


ΑΝ ΑΠΑΝΤΗΣΗ_2 = "ΝΑΙ" ΤΟΤΕ
ΧΡΟΝΙΑ_1  6
ΧΡΟΝΙΑ_2  6 Αν ο πρώτος συνεργός
ΑΛΛΙΩΣ οµολόγησε τότε εκτελούµε
αυτό το κοµµάτι κώδικα
ΧΡΟΝΙΑ_1  0
ΧΡΟΝΙΑ_2  10
ΤΕΛΟΣ_ΑΝ
ΑΛΛΙΩΣ
ΑΝ ΑΠΑΝΤΗΣΗ_2 = "ΝΑΙ" ΤΟΤΕ
ΧΡΟΝΙΑ_1  10
ΧΡΟΝΙΑ_2  0
ΑΛΛΙΩΣ
ΧΡΟΝΙΑ_1  2
ΧΡΟΝΙΑ_2  2 Αλλιώς εκτελούµε αυτό το
ΤΕΛΟΣ_ΑΝ κοµµάτι κώδικα
ΤΕΛΟΣ_ΑΝ

Σαρηµπαλίδης Ιωάννης Σελίδα 2


Ασκήσεις Α.Ε.Π.Π.

ΓΡΑΨΕ "1ος συνεργός."


ΑΝ ΧΡΟΝΙΑ_1 = 0 ΤΟΤΕ
ΓΡΑΨΕ "Είναι ελεύθερος."
ΑΛΛΙΩΣ
ΓΡΑΨΕ "Καταδικάστηκε σε ", ΧΡΟΝΙΑ_1, " χρόνια φυλακή."
ΤΕΛΟΣ_ΑΝ

ΓΡΑΨΕ "2ος συνεργός."


ΑΝ ΧΡΟΝΙΑ_2 = 0 ΤΟΤΕ Εµφανίζουµε κατάλληλα
µηνύµατα.
ΓΡΑΨΕ "Είναι ελεύθερος."
ΑΛΛΙΩΣ
ΓΡΑΨΕ "Καταδικάστηκε σε ", ΧΡΟΝΙΑ_2, " χρόνια φυλακή."
ΤΕΛΟΣ_ΑΝ

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ∆ίληµµα_Φυλακισµένου

ΕΚΤΕΛΕΣΗ ΚΩ∆ΙΚΑ
Περίπτωση που ο 1ος οµολογεί και ο 2ος δεν οµολογεί:

Ο πρώτος συνεργός οµολόγησε ( ΝΑΙ / ΟΧΙ ); ΝΑΙ


Ο δεύτερος συνεργός οµολόγησε ( ΝΑΙ / ΟΧΙ ); ΟΧΙ
1ος συνεργός.
Είναι ελεύθερος.
2ος συνεργός.
Καταδικάστηκε σε 10 χρόνια φυλακή.

Περίπτωση που ο 1ος δεν οµολογεί και ο 2ος δεν οµολογεί:

Ο πρώτος συνεργός οµολόγησε ( ΝΑΙ / ΟΧΙ ); ΟΧΙ


Ο δεύτερος συνεργός οµολόγησε ( ΝΑΙ / ΟΧΙ ); ΟΧΙ
1ος συνεργός.
Καταδικάστηκε σε 2 χρόνια φυλακή.
2ος συνεργός.
Καταδικάστηκε σε 2 χρόνια φυλακή.

ΣΗΜΕΙΩΣΕΙΣ

Το πρόβληµα θα µπορούσε να λυθεί χωρίς την χρήση των µεταβλητών ΧΡΟΝΙΑ_1


και ΧΡΟΝΙΑ_2 αν εµφανίζαµε κατευθείαν τα µηνύµατα µέσα στην δοµή επιλογής.

Σαρηµπαλίδης Ιωάννης Σελίδα 3

You might also like