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

Γενικό Λύκειο => Γ΄ Λυκείου => Θεωρία => Μήνυμα ξεκίνησε από: landreou στις 29 Μαΐου 2013, 10:18:33 ΠΜ

Τίτλος: ΑΣΚΗΣΗ ΜΕ ΕΛΕΓΧΟ ΚΩΔΙΚΟΥ PASSWORD
Αποστολή από: landreou στις 29 Μαΐου 2013, 10:18:33 ΠΜ
Γειά σας φίλοι του ΣτΠ
μία άσκηση να παραθέσω θα ήθελα να μου πέιτε τις απόψεις σας

ΕΚΦΩΝΗΣΗ
Ένας κωδικός χρήστη αποτελείται το πολύ από 10 χαρακτήρες και το ελάχιστο από 6.
Ο κωδικός αυτός μπορεί να περιέχει οποιοδήποτε χαρακτήρα αλλά
[α] τουλάχιστον ένα σύμβολο ("$', "#', "@', "!', "%', "*') και
[β] δύο αριθμούς (0-9).
[γ] Επιπλέον απαγορεύεται η εισαγωγή του κενού.

Να γίνει αλγόριθμος που θα ελέγχει την εγκυρότητα ενός κωδικού.

έχουμε τους περιορισμούς
-> 6 με 10 χαρακτήρες
-> ενα τουλαχιστο σύμβολο ("$', "#', "@', "!', "%', "*')
-> όχι κενα

[1] Πότε θα καταλαβαίνουμε ότι ο χρήστης σταματάει την πληκτρολόγηση ;

[2] Θα ελέγχουμε χαρακτήρα προς χαρακτήρα τον κωδικό που δίνει ο χρήστης ;

[3] Με εμφωλευμένες σίγουρα επαναλήψεις αλλα ποιά μέσα στην άλλη
Τίτλος: Απ: ΑΣΚΗΣΗ ΜΕ ΕΛΕΓΧΟ ΚΩΔΙΚΟΥ PASSWORD
Αποστολή από: landreou στις 03 Ιουν 2013, 02:40:15 ΜΜ
Καμια ιδέα για την άσκηση ;

( Σιγη Ιχθύος στο ΣτΠ...... )
Τίτλος: Απ: ΑΣΚΗΣΗ ΜΕ ΕΛΕΓΧΟ ΚΩΔΙΚΟΥ PASSWORD
Αποστολή από: CyberMove στις 17 Ιουν 2013, 02:33:37 ΠΜ
Καλησπέρα από εμένα.

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

Στην άσκηση τώρα:

[1] Όταν ικανοποιηθούν τα κριτήρια που έχεις δώσει (Το αναλύω στο [3] αυτό).

[2] Μπορούμε και με την τεχνική χαρακτήρα προς χαρακτήρα ή λογικά να κάνουμε έναν πίνακα με max 10 στοιχεία και όσα στοιχεία δεν χρησιμοποιεί να τα γεμίζει με "-" και ύστερα να κάνει έλεγχο για τις προϋποθέσεις? (θα ήταν ανούσιο).

[3] Με ΌΣΟ και οι εξωτερική θα είναι για το Μήκος του Κωδικού και η ενδιάμεση και η εσωτερική να είναι όποια να'ναι αφού αν δεν ικανοποιηθεί κάποιο κριτήριο δεν θα ισχύει ο κωδικός.


Συγνώμη αν είπα κάτι λάθος ή είχα λάθος συνειρμό.
:)
Τίτλος: ΑΣΚΗΣΗ ΜΕ ΕΛΕΓΧΟ ΚΩΔΙΚΟΥ PASSWORD
Αποστολή από: landreou στις 17 Ιουν 2013, 07:52:42 ΠΜ
Δεν κατάλαβα τι είπες.
Δώσε πιο δομημένα τη σκέψη σου να καταλάβω μήπως και βρω άκρη.
Τίτλος: Απ: ΑΣΚΗΣΗ ΜΕ ΕΛΕΓΧΟ ΚΩΔΙΚΟΥ PASSWORD
Αποστολή από: Αποστολάτος Άκης στις 17 Ιουν 2013, 12:41:48 ΜΜ
Καλημέρα...
1. Από όσο ξέρω στη γλώσσα δεν υπάρχει η δυνατότητα να "κόψουμε" συμβολοσειρές , παρα μόνο να τις συγκρίνουμε αλφαβητικά. Άρα εκ των πραγμάτων για να υλοποιηθεί η άσκηση πρέπει να πάς χαρακτήρα - χαρακτήρα.
2. Το πως θα τερματίσεις εξαρτάται από το πως θα θέσεις την εκφώνηση.
πχ. Να σταματά όταν ολοκληρώσει την εισαγωγή του κωδικού(ανεξάρτητα απο το αν είναι λάθος ή σωστό)........
Να σταμάτα όταν ο χρήστης δώσει έγκυρο κωδικό....
Να σταματά όταν δοθεί σωστός κωδικός ή δώσει 3 φορές λάθος.....
Στο δικό μου το μυαλό δε μπορείς να την υλοποιήσεις χωρίς χαρακτήρα ελέγχου για τον τερματισμό(πχ "*")
Τίτλος: Απ: ΑΣΚΗΣΗ ΜΕ ΕΛΕΓΧΟ ΚΩΔΙΚΟΥ PASSWORD
Αποστολή από: CyberMove στις 17 Ιουν 2013, 12:50:22 ΜΜ
Λέω:

[1] Όταν ικανοποιηθούν τα κριτήρια που έχεις δώσει.
      -> 6 με 10 χαρακτήρες.
      -> ενα τουλαχιστο σύμβολο ("$', "#', "@', "!', "%', "*').
      -> όχι κενα.

[2] Όπως το σκέφτηκα,καλύτερα χαρακτήρα προς χαρακτήρα.
O πίνακας  ΚΩΔΙΚΟΣ[10] θα είναι κάπως έτσι:
|P|4|S|$|W|O|R|D|1|-|

(Το "-" δηλώνει ότι ο χρήστης έχει τελειώσει με την εισαγωγή ψηφίων.).


[3] Οι βρόχοι είναι λίγο μεγάλοι και πολύπλοκοι (όπως το είδα εγώ) γιατί θα πρέπει να ελέγχει και αν υπάρχουν τα γράμματα,εκτός από τα ειδικά σύμβολα και την μη χρήση κενού χαρακτήρα.

Δεν ξέρω αν επιτρέπεται να κάνεις αυτό:
ΚΩΔΙΚΟΣ>="A" και ΚΩΔΙΚΟΣ<="Ω". (Δηλαδή να ελέγχεις αν το στοιχείο είναι κάποιο γράμμα από το αλφάβητο.)

Αν επιτρέπεται (που κατά 99% νομίζω ότι επιτρέπεται),τότε είναι κάπως πιο εύκολο.

Τίτλος: Απ: ΑΣΚΗΣΗ ΜΕ ΕΛΕΓΧΟ ΚΩΔΙΚΟΥ PASSWORD
Αποστολή από: itt στις 17 Ιουν 2013, 02:23:33 ΜΜ
Παράθεση[1] Πότε θα καταλαβαίνουμε ότι ο χρήστης σταματάει την πληκτρολόγηση ;

Όπως είναι γραμμένη η εκφώνηση,αυτό δεν θα έπρεπε να σε απαχολήσει.Είναι θέμα της συνάρτησης που τραβάει το inpout.Ἀμα διαβάζει γραμμή,τότε θα σταματάει με το enter.

Παράθεση[2] Θα ελέγχουμε χαρακτήρα προς χαρακτήρα τον κωδικό που δίνει ο χρήστης ;

Ναι.

Παράθεση[3] Με εμφωλευμένες σίγουρα επαναλήψεις αλλα ποιά μέσα στην άλλη

Γιατί εμφωλευμένες;Θα φτιάξεις μια βασική συνάρτηση check_password(ο_κωδικός_εδώ) ,που θα περιέχει 2 πίνακες,έναν με τους χαρακτήρες,έναν με τους αριθμούς και θα είναι wrapper πάνω σε δύο άλλες συναρτήσεις.Οι δύο αυτές θα ελέγχουν τους περιορισμούς σου,με αναζητήσεις στου πίνακες και μπορείς να κάνεις και ακόμα μία για το κενό,ή να το συμπεριλάβεις σαν έλεγχο σε αυτήν που θα ελέγχει για τους ειδικούς χαρακτήρες.Μετα θα επιστρέφεις το λογικό ΑΝD όλων των wrapped συναρτήσεων.

Γενικά μπορείς να έχεις τους πίνακες και μέσα στις wrapped συναρτήσεις,απλά έγραψα αυτό που μου ήρθε εκείνη τη στιγμή.
Τίτλος: Απ: ΑΣΚΗΣΗ ΜΕ ΕΛΕΓΧΟ ΚΩΔΙΚΟΥ PASSWORD
Αποστολή από: chzisi στις 26 Ιουν 2013, 10:39:47 ΜΜ
Συγνώμη αν κατάλαβα σωστα, ψαχνουμε έναν αλγόριθμο στα πλαίσια του μαθήματος, έτσι?
Αν είναι έτσι, έχω μια πρόταση, δεδομένης της παραμέτρου που έθεσες ότι όταν τελειώνει την πληκτρολόγηση, δίνει το "-" που δεν θεωρείται στοιχείο του κωδικού αλλά χαρακτήρας τερματισμού.

Αλγόριθμος Κωδικός
Κωδικός_δεκτός ← Ψευδής
Αρχή_επανάληψης
  ι ← 1
  Αρχή_επανάληψης
    Διάβασε χαρ[ι]
    ι ← ι + 1
  Μέχρις_ότου ι > 11 ή χαρ[ι - 1] = "-"
  πλ ← ι - 1
  Αν χαρ[πλ] = "-" και πλ ≥ 6 τότε
    πλ ← ι - 1
    πλήθος_αριθμών ← 0
    Βρέθηκε_σύμβολο ← Ψευδής
    Βρέθηκε_κενό ← Ψευδής
    Για ι από 1 μέχρι πλ
      Αν χαρ[ι] ≥ "0" και χαρ[ι] ≤ "9" τότε
        πλήθος_αριθμών ← πλήθος_αριθμών + 1
      Τέλος_αν
      Αν χαρ[ι] = "$" ή χαρ[ι] = "#" ή χαρ[ι] = "@" ή χαρ[ι] = "!" ή χαρ[ι] = "%" ή χαρ[ι] = "*" τότε
        Βρέθηκε_σύμβολο ← Αληθής
      Τέλος_αν
      Αν χαρ[ι] = " " τότε
        Βρέθηκε_κενό ← Αληθής
      Τέλος_αν
    Τέλος_επανάληψης
    Αν πλήθος_αριθμών ≥ 2 και Βρέθηκε_σύμβολο = Αληθής και Βρέθηκε_κενό = Ψευδής τότε
      Εμφάνισε "Κωδικός δεκτός"
      Κωδικός_δεκτός ← Αληθής
    αλλιώς
      Εμφάνισε "Ελέγξτε τις παραμέτρους"
    Τέλος_αν
  αλλιώς
    Εμφάνισε "Ο Κωδικός πρέπει να έχει μήκος 6 με 10 χαρακτήρες"
  Τέλος_αν
Μέχρις_ότου Κωδικός_δεκτός = Αληθής
Τέλος Κωδικός