Ερώτηση στην Μέχρις_ότου

Ξεκίνησε από Λαμπράκης Μανώλης, 30 Οκτ 2013, 08:48:18 ΠΜ

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

Λαμπράκης Μανώλης

Καλημέρα σε όλους

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

Όσο

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

Μέχρις_ότου

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

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

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


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

ευχαριστώ

petrosp13

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

κόστος<--0
διάβασε τιμή         
Αρχή_επανάληψης
         κόστος<--κόστος+τιμή
         Διάβασε τιμή   
μεχρις_ότου τιμή+κόστος > 1500
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

Λαμπράκης Μανώλης

ευχαριστώ, απλά στο συγκεκριμένο θέμα, δεν ήθελε να ξεπεραστεί η τιμή της συνθήκης, οπότε με την μέχρις_ότου, πρέπει να χρησιμοποιήσουμε λογική μεταβλητή που θα διακόπτει την συνθήκη, γιατί εξ'ορισμού της συνθήκης θα ξεπεραστεί η τιμή...αν δεν κάνω λάθος βέβαια

petrosp13

Στην λύση που σου έδωσα, θα σταματήσει όταν μια τιμή κάνει το κόστος να ξεπεράσει τα 1500 ευρώ, αλλά χωρίς να "συσσωρευτεί" η τελευταία τιμή στο άθροισμα
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

Λαμπράκης Μανώλης

Ναι, όμως αν δώσει αρχική τιμή 2000 ?? προστίθεται στο άθροισμα, δεν το αποφεύγεις αυτό... έχω την εντύπωση πως χρειαζόμαστε οπωσδήποτε χρήση λογικής μεταβλητής σοτ μέχρις_ότου....αν κάνω κάπου λάθος παρακαλώ περιμένω απόψεις...

petrosp13

Δεν μπορείς να βάλεις μια δομή Αν πριν την επανάληψη που να ελέγχει αν πρέπει να μπει στην επανάληψη;
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

Γιάννης Αναγνωστάκης

Παράθεση από: mkouv στις 30 Οκτ 2013, 12:40:50 ΜΜ
Ναι, όμως αν δώσει αρχική τιμή 2000 ?? προστίθεται στο άθροισμα, δεν το αποφεύγεις αυτό... έχω την εντύπωση πως χρειαζόμαστε οπωσδήποτε χρήση λογικής μεταβλητής σοτ μέχρις_ότου....αν κάνω κάπου λάθος παρακαλώ περιμένω απόψεις...

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


gpapargi

Ένα θέμα που είχε περάσει απαρατήρητο τότε (το 2007), κυρίως γιατί η goto μονοπώλησε το ενδιαφέρον, είναι το ότι στην περίπτωση που θα προστεθεί αριθμός που εξαντλεί ακριβώς το ποσό τότε ο αλγόριθμος κανονικά θα έπρεπε να τερματίζει (μετά την αγορά) καθώς δεν υπάρχει καμία θετική τιμή γραμματοσήμου που να μπορεί να αγοραστεί. Όλες οι λύσεις που κυκλοφόρησαν τότε (ακόμα και της επιτροπής) δεν τερμάτιζαν. Έπρεπε να εισαχθεί μια ακόμα τιμή για να γίνει η υπερχείλιση. Το απόλυτα σωστό θα ήταν στην περίπτωση που μηδενιστεί το υπόλοιπο να μη γίνεται νέα ανάγνωση.