Το Στέκι των Πληροφορικών

Γενικό Λύκειο => Γ΄ Λυκείου => Δομή επανάληψης => Μήνυμα ξεκίνησε από: Λαμπράκης Μανώλης στις 30 Οκτ 2013, 08:48:18 ΠΜ

Τίτλος: Ερώτηση στην Μέχρις_ότου
Αποστολή από: Λαμπράκης Μανώλης στις 30 Οκτ 2013, 08:48:18 ΠΜ
Καλημέρα σε όλους

ήθελα μία διευκρυνιστική ερώτηση στην χρήση της μέχρις_ότου. Έστω για παράδειγμα η άσκηση των πανελληνίων 2007, που κάποιος αγόραζε γραμματόσημα μέχρι να φτάσουν τα χρήματα του

Όσο

κόστος<--0
Διάβασε τιμή
Όσο κόστος+τιμή<=1500 επανάλαβε
     κόστος<-- κόστος +τιμή
     ενέργειες
      Διάβασε τιμή
Τέλος_επανάληψης

Μέχρις_ότου

κόστος<--0
έλεγχος <--ψευδής
Αρχή_επανάληψης
         Διάβασε τιμή   ! εισαγωγή τιμής πριν από τον έλεγχο
      Αν κόστος+τιμή<=1500 τότε
         κόστος<--κόστος+τιμή
         ενέργειες
     αλλιώς
           έλεγχος=Αληθής
     Τέλος_αν
μεχρις_ότου έλεγχος= Αληθής

Αν στο μέχρις_ότου έχουμε

κόστος<--0
έλεγχος <--ψευδής
διάβασε τιμή          ! εισαγωγή τιμής έξω από την επανάληψη
Αρχή_επανάληψης
      Αν κόστος+τιμή<=1500 τότε
         κόστος<--κόστος+τιμή
         ενέργειες
         Διάβασε τιμή    ! και αύξηση μέσα
     αλλιώς
           έλεγχος=Αληθής
     Τέλος_αν
μεχρις_ότου έλεγχος= Αληθής


δηλαδή εισαγωγή τιμής έξω από την επανάληψη και ξανά μέσα ( για να είναι σε "αντιστοιχία" με την Όσο) υπάρχει κάποιο πρόβλημα??  το ίδιο πρέπει να είναι, γενικά στην μέχρις ότου μπορούμε να αποφύγουμε μία εισαγωγή τιμής έξω από την επανάληψη, σε σχέση με την Όσο, σε περιπτώσεις όπως αυτήν εδώ ???

ευχαριστώ
Τίτλος: Απ: Ερώτηση στην Μέχρις_ότου
Αποστολή από: petrosp13 στις 30 Οκτ 2013, 10:29:26 ΠΜ
Δεν υπάρχει καμία διαφορά και νομίζω ότι είναι και καλύτερη λύση

κόστος<--0
διάβασε τιμή         
Αρχή_επανάληψης
         κόστος<--κόστος+τιμή
         Διάβασε τιμή   
μεχρις_ότου τιμή+κόστος > 1500
Τίτλος: Απ: Ερώτηση στην Μέχρις_ότου
Αποστολή από: Λαμπράκης Μανώλης στις 30 Οκτ 2013, 11:11:21 ΠΜ
ευχαριστώ, απλά στο συγκεκριμένο θέμα, δεν ήθελε να ξεπεραστεί η τιμή της συνθήκης, οπότε με την μέχρις_ότου, πρέπει να χρησιμοποιήσουμε λογική μεταβλητή που θα διακόπτει την συνθήκη, γιατί εξ'ορισμού της συνθήκης θα ξεπεραστεί η τιμή...αν δεν κάνω λάθος βέβαια
Τίτλος: Απ: Ερώτηση στην Μέχρις_ότου
Αποστολή από: petrosp13 στις 30 Οκτ 2013, 12:26:57 ΜΜ
Στην λύση που σου έδωσα, θα σταματήσει όταν μια τιμή κάνει το κόστος να ξεπεράσει τα 1500 ευρώ, αλλά χωρίς να "συσσωρευτεί" η τελευταία τιμή στο άθροισμα
Τίτλος: Απ: Ερώτηση στην Μέχρις_ότου
Αποστολή από: Λαμπράκης Μανώλης στις 30 Οκτ 2013, 12:40:50 ΜΜ
Ναι, όμως αν δώσει αρχική τιμή 2000 ?? προστίθεται στο άθροισμα, δεν το αποφεύγεις αυτό... έχω την εντύπωση πως χρειαζόμαστε οπωσδήποτε χρήση λογικής μεταβλητής σοτ μέχρις_ότου....αν κάνω κάπου λάθος παρακαλώ περιμένω απόψεις...
Τίτλος: Απ: Ερώτηση στην Μέχρις_ότου
Αποστολή από: petrosp13 στις 30 Οκτ 2013, 12:48:59 ΜΜ
Δεν μπορείς να βάλεις μια δομή Αν πριν την επανάληψη που να ελέγχει αν πρέπει να μπει στην επανάληψη;
Τίτλος: Απ: Ερώτηση στην Μέχρις_ότου
Αποστολή από: Γιάννης Αναγνωστάκης στις 30 Οκτ 2013, 12:59:54 ΜΜ
Παράθεση από: mkouv στις 30 Οκτ 2013, 12:40:50 ΜΜ
Ναι, όμως αν δώσει αρχική τιμή 2000 ?? προστίθεται στο άθροισμα, δεν το αποφεύγεις αυτό... έχω την εντύπωση πως χρειαζόμαστε οπωσδήποτε χρήση λογικής μεταβλητής σοτ μέχρις_ότου....αν κάνω κάπου λάθος παρακαλώ περιμένω απόψεις...

Απο τις λύσεις με την Μέχρις_ότου προτείνω την πρώτη..Όπως το λέει ο Πέτρος, χρειάζεται ένα εξωτερικό αν...

Τίτλος: Απ: Ερώτηση στην Μέχρις_ότου
Αποστολή από: gpapargi στις 30 Οκτ 2013, 02:17:42 ΜΜ
Ένα θέμα που είχε περάσει απαρατήρητο τότε (το 2007), κυρίως γιατί η goto μονοπώλησε το ενδιαφέρον, είναι το ότι στην περίπτωση που θα προστεθεί αριθμός που εξαντλεί ακριβώς το ποσό τότε ο αλγόριθμος κανονικά θα έπρεπε να τερματίζει (μετά την αγορά) καθώς δεν υπάρχει καμία θετική τιμή γραμματοσήμου που να μπορεί να αγοραστεί. Όλες οι λύσεις που κυκλοφόρησαν τότε (ακόμα και της επιτροπής) δεν τερμάτιζαν. Έπρεπε να εισαχθεί μια ακόμα τιμή για να γίνει η υπερχείλιση. Το απόλυτα σωστό θα ήταν στην περίπτωση που μηδενιστεί το υπόλοιπο να μη γίνεται νέα ανάγνωση.