ΜΕΤΑΤΡΟΠΗ ΜΕΧΡΙΣ_ΟΤΟΥ ΣΕ ΓΙΑ...ΑΠΟ...ΜΕΧΡΙ

Ξεκίνησε από droopy, 29 Οκτ 2007, 05:38:48 ΜΜ

« προηγούμενο - επόμενο »

droopy

ΔΙΝΕΤΑΙ ΤΟ ΤΜΗΜΑ ΑΛΓΟΡΙΘΜΟΥ:

Χ<--Α

ΑΡΧΗ ΕΠΑΝΑΛΗΨΗΣ
Χ<-- Χ+2
ΕΜΦΑΝΙΣΕ Χ
ΜΕΧΡΙΣ_ΟΤΟΥ Χ>=Μ

ΝΑ ΓΡΑΦΕΙ ΜΕ ΤΗΝ ΓΙΑ...ΑΠΟ...ΜΕΧΡΙ ΩΣΤΕ ΝΑ ΤΥΠΩΝΕΙ ΤΙΣ ΙΔΙΕΣ ΤΙΜΕΣ ΜΕ ΤΟ ΠΙΟ ΠΑΝΩ ΤΜΗΜΑ ΑΛΓΟΡΙΘΜΟΥ


ΑΝ ΘΕΩΡΗΣΟΥΜΕ ΩΣ ΙΣΟΔΥΝΑΜΟ ΤΟΥ ΤΟ ΑΚΟΛΟΥΘΟ:

ΓΙΑ Χ ΑΠΟ Α+2 ΜΕΧΡΙ Μ+1 ΜΕ ΒΗΜΑ 2
ΕΜΦΑΝΙΣΕ Χ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΤΟΤΕ ΓΙΑ Α=2 ΚΑΙ Μ=1 ΘΑ ΕΧΟΥΜΕ:

1ος ΑΛΓΟΡΙΘΜΟΣ: ΘΑ ΕΜΦΑΝΙΣΕΙ 4
2ος ΑΛΓΟΡΙΘΜΟς: ΔΕΝ ΘΑ ΕΚΤΕΛΕΣΤΕΙ ΚΑΜΙΑ ΦΟΡΑ. ΔΕΝ ΘΑ ΕΜΦΑΝΙΣΕΙ ΤΙΠΟΤΑ.

ΥΠΑΡΧΕΙ ΚΑΠΟΙΑ ΑΛΛΗ ΛΥΣΗ? ΜΗΠΩΣ Η ΠΡΟΣΘΗΚΗ ΤΗΣ ΕΝΤΟΛΗΣ ΕΜΦΑΝΙΣΕ Χ ΜΕΤΑ ΤΟ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ?







koniordos

Τελείως με μπούσουλα και όχι διερευνητικά

1o βήμα, μετατροπή της ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ σε ΑΠΟΛΥΤΩΣ ισοδύναμη ΟΣΟ

Χ<--Α
Χ<-- Χ+2
ΕΜΦΑΝΙΣΕ Χ
ΟΣΟ Χ<Μ ΕΠΑΝΑΛΑΒΕ
Χ<-- Χ+2
ΕΜΦΑΝΙΣΕ Χ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ή καλύτερα

Χ<--Α+2
ΕΜΦΑΝΙΣΕ Χ
ΟΣΟ Χ<Μ ΕΠΑΝΑΛΑΒΕ
Χ<-- Χ+2
ΕΜΦΑΝΙΣΕ Χ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

2ο βήμα - μετατροπή του εσωτερικού και του εξωτερικού τμήματος της ΟΣΟ ώστε να μοιάζει με ΓΙΑ


ΕΜΦΑΝΙΣΕ Α+2
Χ<--Α+2
ΟΣΟ Χ<=Μ-1 ΕΠΑΝΑΛΑΒΕ
ΕΜΦΑΝΙΣΕ Χ+2
Χ<-- Χ+2
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

3ο βήμα
μετατροπή της ΟΣΟ σε ΓΙΑ

ΕΜΦΑΝΙΣΕ Α+2
ΓΙΑ Χ ΑΠΟ Α+2 ΜΕΧΡΙ Μ-1 ΜΕ ΒΗΜΑ 2
ΕΜΦΑΝΙΣΕ Χ+2
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Τσορώνης Τάκης
Ηλ.Μηχ. & Μηχ. Η/Υ ΕΜΠ

droopy

ευχαριστώ πολύ.

το θέμα αυτό είναι από πανελλήνιες του 2001 (επαναληπτικές) και τόσο σε κάποια site με λύσεις των θεμάτων όσο και σε βοηθήματα είχα βρει την λύσιε που περιγράφω στην αρχή και η οποία δεν είναι σωστή. καλό θα ήταν να το διορθώσουν.

εκτός και αν κάνω κάπου λάθος  :-\



P.Tsiotakis

Ευχαριστώ για την υπόδειξη, το έχω διορθώσει απο τη δεύτερη ανατύπωση
όπως και στη σελίδα http://users.kor.sch.gr/ptsiotakis/aepp/aepp_panel_epanen_2001.htm
ως εξής:

Εκτύπωσε X + 2
Για X από A + 4 μέχρι M + 1 με_βήμα 2
   Εκτύπωσε X
Τέλος_επανάληψης


afroditi

Καλημέρα!!!!
Παραμονή των Πανελληνίων και με το αγχος που με διακατέχει θα ήθελα να ρωτήσω το εξής:
Η παραπάνω μετατροπή μπορεί να γραφτεί με τη βοήθεια του ΑΝ;
Δηλαδή:

Χ<--Α
Αν χ>=Μ τότε
Χ<-- Χ+2
ΕΜΦΑΝΙΣΕ Χ
Αλλιώς
ΟΣΟ Χ<Μ ΕΠΑΝΑΛΑΒΕ
Χ<-- Χ+2
ΕΜΦΑΝΙΣΕ Χ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Τέλος_αν

mbathas

Καλημέρα,
οι εντολές που περιέχονται στην Αρχή_επανάληψης....μέχρις_ότου εκτελούνται τουλάχιστον μία φορά συνεπώς κατά την μετατροπή σε όσο..επανάλαβε δεν χρειάζεται έλεγχος με Αν... στο μπλοκ εντολών που βγαίνουν εκτός επανάληψης.
Άλλωστε γι'αυτό τις βγάζουμε έξω για να εκτελεστούν οπωσδήποτε μία φορά.
Stay cool,Καλή σου επιτυχία!
Μιχάλης Μπάθας
Μηχανικός Η/Υ Συστημάτων
Καθηγητής Πληροφορικής

afroditi

Aν το γράψω δηλαδή με Αν θα μου κόψουν;Γιατί έτσι το έχω μάθει...

evry

Όπα, δεν το κατάλαβα αυτό. Τι θα πει έτσι το έχεις μάθει?
Θα σε συμβούλευα να το ξε-μάθεις, εκτός αν καταλαβαίνεις τι κάνει
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

melina

Γεια σας,

εγώ θεωρώ ότι πρέπει οπωσδήποτε να χρησιμοποιηθεί η επιλογή Αν, για να αποκλειστεί η περίπτωση να είναι η αρχική τιμή μεγαλύτερη από την τελική τιμή στη δομή ΓΙΑ, εφόσον έχουμε θετικό βήμα. Μία λύση:


Αν Α>Μ-2 τότε  (χωρίς πρόβλημα μπορούμε να βάλουμε Α>Μ-1)
   Τύπωσε το Α+2
Αλλιώς
   Για Χ από Α μέχρι Μ-1 με_βήμα 2
         Τύπωσε το Χ+2
   Τέλος_επανάληψης
Τέλος_Αν

Καρκαμάνης Γεώργιος

Πρέπει για οποιοδήποτε συνδυασμό τιμών μεταξύ Α και Μ η Μέχρις_ότου να εκτελεστί οπωσδήποτε μια φορά. Το ίδιο πρέπει να συμβαίνει και στη ΓΙΑ. Αυτό γίνεται τοποθετώντας τις εντολές να εκτελεστούν μια φορά πριν από την ΓΙΑ

Βασίλης Παπαχρήστος

Παράθεση από: melina στις 16 Ιαν 2011, 02:54:57 ΜΜ
Γεια σας,

εγώ θεωρώ ότι πρέπει οπωσδήποτε να χρησιμοποιηθεί η επιλογή Αν, για να αποκλειστεί η περίπτωση να είναι η αρχική τιμή μεγαλύτερη από την τελική τιμή στη δομή ΓΙΑ, εφόσον έχουμε θετικό βήμα. Μία λύση:

Αν Α>Μ-2 τότε  (χωρίς πρόβλημα μπορούμε να βάλουμε Α>Μ-1)
   Τύπωσε το Α+2
Αλλιώς
   Για Χ από Α μέχρι Μ-1 με_βήμα 2
         Τύπωσε το Χ+2
   Τέλος_επανάληψης
Τέλος_Αν

Πρέπει να καταλάβεις ότι ακόμη κι αν η αρχική τιμή είναι μεγαλύτερη από την τελική δεν σε ενοχλεί καθόλου, καθώς η επανάληψη της Για (μιας και το βήμα είναι θετικό) δεν θα εκτελεστεί καμία φορά. Γι' αυτόν ακριβώς το λόγο δε χρειάζεται η ΑΝ.