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

Γενικό Λύκειο => Δομή επανάληψης => Γ΄ Λυκείου => Εντολή ΓΙΑ...ΑΠΟ...ΜΕΧΡΙ => Μήνυμα ξεκίνησε από: nikolasmer στις 07 Οκτ 2017, 04:56:00 ΜΜ

Τίτλος: Σπάσιμο Τριψήφιου Κωδικού
Αποστολή από: nikolasmer στις 07 Οκτ 2017, 04:56:00 ΜΜ
Γειά σε όλους.

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

Ένα αρχείο που περιέχει χρήσιμες πληροφορίες είναι «κλειδωμένο» με κωδικό. Ο κωδικός είναι τριψήφιος αριθμός από 111 μέχρι 999 και ισχύει ότι x < y < z, καθώς και ότι ο x είναι άρτιος και ο z περιττός. Να γραφεί πρόγραμμα το οποίο θα εμφανίζει όλους τους πιθανούς κωδικούς.

Επίσης παίζει ρόλο και η σειρά των ψηφίων, δηλαδή θα πρέπει να βρούμε συνδυασμούς ή όχι;
Τίτλος: Απ: Σπάσιμο Τριψήφιου Κωδικού
Αποστολή από: alkisg στις 07 Οκτ 2017, 08:13:20 ΜΜ
Χωρίς έλεγχο, οπότε μπορεί να μου ξέφυγε κάτι:
Κώδικας (ΓΛΩΣΣΑ) [Επιλογή]

ΓΙΑ x ΑΠΟ 2 ΜΕΧΡΙ 8 ΜΕ_ΒΗΜΑ 2
  ΓΙΑ y ΑΠΟ x+1 ΜΕΧΡΙ 9
    ΓΙΑ z ΑΠΟ y + y mod 2 + 1 ΜΕΧΡΙ 9 ΜΕ_ΒΗΜΑ 2
      ΓΡΑΨΕ 100*x + 10*y + z
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Τίτλος: Απ: Σπάσιμο Τριψήφιου Κωδικού
Αποστολή από: bugman στις 08 Οκτ 2017, 12:56:33 ΠΜ
Σίγουρα έχει λάθος!
Διότι αν x=8 τότε y=9 οπότε ο z δεν μπορεί να είναι μεγαλύτερος του y, αφού μπορεί να είναι μέχρι 9 άρα το y<z δεν θα ισχύει
άρα η διόρθωση είναι στο ΓΙΑ x ΑΠΟ 2 ΜΕΧΡΙ 6 ΜΕ_ΒΗΜΑ 2
Τίτλος: Απ: Σπάσιμο Τριψήφιου Κωδικού
Αποστολή από: petrosp13 στις 08 Οκτ 2017, 12:39:13 ΜΜ
Αυτό μάλλον βελτίωση είναι, όχι λάθος...
Τίτλος: Απ: Σπάσιμο Τριψήφιου Κωδικού
Αποστολή από: odysseas στις 08 Οκτ 2017, 03:15:22 ΜΜ
Εγώ προτείνω ο Άλκης ν' αρχίσει να δίνει μικρές επιταγές για κάθε λάθος που εντοπίζεται στον κώδικά του, όπως ο Knuth.  ;)
Τίτλος: Απ: Σπάσιμο Τριψήφιου Κωδικού
Αποστολή από: alkisg στις 08 Οκτ 2017, 03:38:39 ΜΜ
Ώπα τότε θα πρέπει να σταματήσω να γράφω κώδικα ενόσω κάνω ταυτόχρονα remote support σε σχολεία, γιατί θα ξεφραγκιαστώ!!! :D
Τίτλος: Απ: Σπάσιμο Τριψήφιου Κωδικού
Αποστολή από: bugman στις 09 Οκτ 2017, 12:20:12 ΠΜ
Στη ΓΛΩΣΣΑ δεν θα βγει λάθος το πρόγραμμα του aliksg, γιατί δεν θα τρέξει η γραμμή 4 όταν το Ζ θα είναι από 10 μέχρι 9. Επειδή όμως μπορούμε να αποκλείσουμε άσκοπες κλήσεις, με ορθότερο προσδιορισμό ορίων, μπορούμε να πούμε την "σπουδή" του alkisg "λάθος", έχει παραπάνω πράγματα που δεν ζητούνται!
Τίτλος: Απ: Σπάσιμο Τριψήφιου Κωδικού
Αποστολή από: alkisg στις 09 Οκτ 2017, 09:23:23 ΠΜ
Και η δεύτερη γραμμή θέλει αλλαγή, σε
  ΓΙΑ y ΑΠΟ x+1 ΜΕΧΡΙ 7
Τίτλος: Απ: Σπάσιμο Τριψήφιου Κωδικού
Αποστολή από: petrosp13 στις 09 Οκτ 2017, 01:28:39 ΜΜ
Παράθεση από: bugman στις 09 Οκτ 2017, 12:20:12 ΠΜ
Στη ΓΛΩΣΣΑ δεν θα βγει λάθος το πρόγραμμα του aliksg, γιατί δεν θα τρέξει η γραμμή 4 όταν το Ζ θα είναι από 10 μέχρι 9. Επειδή όμως μπορούμε να αποκλείσουμε άσκοπες κλήσεις, με ορθότερο προσδιορισμό ορίων, μπορούμε να πούμε την "σπουδή" του alkisg "λάθος", έχει παραπάνω πράγματα που δεν ζητούνται!


Λάθος είναι κάτι που λογικά θα πρέπει να κοπούν μονάδες αν το εφαρμόσει μαθητής
Σε αυτή την λύση θα κόβαμε μονάδες;;
Τίτλος: Απ: Σπάσιμο Τριψήφιου Κωδικού
Αποστολή από: dpa2006 στις 12 Οκτ 2017, 05:46:02 ΜΜ
Μια λύση σε C στο
http://www.teilar.gr/dbData/ProfAnn/profann-872ffe63.pdf
σελ 83
Τίτλος: Απ: Σπάσιμο Τριψήφιου Κωδικού
Αποστολή από: bugman στις 13 Οκτ 2017, 12:33:42 ΠΜ
Ο κώδικας είναι εδώ και πατάμε το 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 είναι λάθος).
Τίτλος: Απ: Σπάσιμο Τριψήφιου Κωδικού
Αποστολή από: alkisg στις 13 Οκτ 2017, 08:42:19 ΠΜ
Indeed, δεν είχα ξαναδιαβάσει πρόσφατα την εκφώνηση και νόμιζα ότι ζήταγε y περιττός αντί για z περιττός.