Γειά σε όλους.
Δεν γνωρίζω την πατρότητα της παρακάτω άσκησης απλά προσπαθώ να βρώ καμία καλή λύση για αυτή.
Αν υπάρχουν ιδέες (λύση με τις λιγότερες επαναλήψεις) θα ήθελα να τις δώ.
Ένα αρχείο που περιέχει χρήσιμες πληροφορίες είναι «κλειδωμένο» με κωδικό. Ο κωδικός είναι τριψήφιος αριθμός από 111 μέχρι 999 και ισχύει ότι x < y < z, καθώς και ότι ο x είναι άρτιος και ο z περιττός. Να γραφεί πρόγραμμα το οποίο θα εμφανίζει όλους τους πιθανούς κωδικούς.
Επίσης παίζει ρόλο και η σειρά των ψηφίων, δηλαδή θα πρέπει να βρούμε συνδυασμούς ή όχι;
Χωρίς έλεγχο, οπότε μπορεί να μου ξέφυγε κάτι:
ΓΙΑ x ΑΠΟ 2 ΜΕΧΡΙ 8 ΜΕ_ΒΗΜΑ 2
ΓΙΑ y ΑΠΟ x+1 ΜΕΧΡΙ 9
ΓΙΑ z ΑΠΟ y + y mod 2 + 1 ΜΕΧΡΙ 9 ΜΕ_ΒΗΜΑ 2
ΓΡΑΨΕ 100*x + 10*y + z
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Σίγουρα έχει λάθος!
Διότι αν x=8 τότε y=9 οπότε ο z δεν μπορεί να είναι μεγαλύτερος του y, αφού μπορεί να είναι μέχρι 9 άρα το y<z δεν θα ισχύει
άρα η διόρθωση είναι στο ΓΙΑ x ΑΠΟ 2 ΜΕΧΡΙ 6 ΜΕ_ΒΗΜΑ 2
Αυτό μάλλον βελτίωση είναι, όχι λάθος...
Εγώ προτείνω ο Άλκης ν' αρχίσει να δίνει μικρές επιταγές για κάθε λάθος που εντοπίζεται στον κώδικά του, όπως ο Knuth. ;)
Ώπα τότε θα πρέπει να σταματήσω να γράφω κώδικα ενόσω κάνω ταυτόχρονα remote support σε σχολεία, γιατί θα ξεφραγκιαστώ!!! :D
Στη ΓΛΩΣΣΑ δεν θα βγει λάθος το πρόγραμμα του aliksg, γιατί δεν θα τρέξει η γραμμή 4 όταν το Ζ θα είναι από 10 μέχρι 9. Επειδή όμως μπορούμε να αποκλείσουμε άσκοπες κλήσεις, με ορθότερο προσδιορισμό ορίων, μπορούμε να πούμε την "σπουδή" του alkisg "λάθος", έχει παραπάνω πράγματα που δεν ζητούνται!
Και η δεύτερη γραμμή θέλει αλλαγή, σε
ΓΙΑ y ΑΠΟ x+1 ΜΕΧΡΙ 7
Παράθεση από: bugman στις 09 Οκτ 2017, 12:20:12 ΠΜ
Στη ΓΛΩΣΣΑ δεν θα βγει λάθος το πρόγραμμα του aliksg, γιατί δεν θα τρέξει η γραμμή 4 όταν το Ζ θα είναι από 10 μέχρι 9. Επειδή όμως μπορούμε να αποκλείσουμε άσκοπες κλήσεις, με ορθότερο προσδιορισμό ορίων, μπορούμε να πούμε την "σπουδή" του alkisg "λάθος", έχει παραπάνω πράγματα που δεν ζητούνται!
Λάθος είναι κάτι που λογικά θα πρέπει να κοπούν μονάδες αν το εφαρμόσει μαθητής
Σε αυτή την λύση θα κόβαμε μονάδες;;
Μια λύση σε C στο
http://www.teilar.gr/dbData/ProfAnn/profann-872ffe63.pdf
σελ 83
Ο κώδικας είναι εδώ και πατάμε το Run (αν θέλουμε έχουμε επιλογή Text και όχι Console, για να αντιγράψουμε την εξαγωγή).
https://onlinegdb.com/S1VoJwT3W
Code=235
Code=237
Code=239
Code=245
Code=247
Code=249
Code=257
Code=259
Code=267
Code=269
Code=279
Code=289
Code=457
Code=459
Code=467
Code=469
Code=479
Code=489
Code=679
Code=689
(άρα η δεύτερη γραμμή που πρότεινε ο Άλκης με όριο το 7 είναι λάθος).
Indeed, δεν είχα ξαναδιαβάσει πρόσφατα την εκφώνηση και νόμιζα ότι ζήταγε y περιττός αντί για z περιττός.