ΑΣΚΗΣΗ ΜΕ ΕΛΕΓΧΟ ΚΩΔΙΚΟΥ PASSWORD

Ξεκίνησε από landreou, 29 Μαΐου 2013, 10:18:33 ΠΜ

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

landreou

Γειά σας φίλοι του ΣτΠ
μία άσκηση να παραθέσω θα ήθελα να μου πέιτε τις απόψεις σας

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

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

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

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

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

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

landreou

Καμια ιδέα για την άσκηση ;

( Σιγη Ιχθύος στο ΣτΠ...... )

CyberMove

Καλησπέρα από εμένα.

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

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

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

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

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


Συγνώμη αν είπα κάτι λάθος ή είχα λάθος συνειρμό.
:)
If Grandma_Had_Rolls = TRUE Then
        MsgBox.Style ("Grandma = TROLLEY")
End_If

landreou

Δεν κατάλαβα τι είπες.
Δώσε πιο δομημένα τη σκέψη σου να καταλάβω μήπως και βρω άκρη.

Αποστολάτος Άκης

Καλημέρα...
1. Από όσο ξέρω στη γλώσσα δεν υπάρχει η δυνατότητα να "κόψουμε" συμβολοσειρές , παρα μόνο να τις συγκρίνουμε αλφαβητικά. Άρα εκ των πραγμάτων για να υλοποιηθεί η άσκηση πρέπει να πάς χαρακτήρα - χαρακτήρα.
2. Το πως θα τερματίσεις εξαρτάται από το πως θα θέσεις την εκφώνηση.
πχ. Να σταματά όταν ολοκληρώσει την εισαγωγή του κωδικού(ανεξάρτητα απο το αν είναι λάθος ή σωστό)........
Να σταμάτα όταν ο χρήστης δώσει έγκυρο κωδικό....
Να σταματά όταν δοθεί σωστός κωδικός ή δώσει 3 φορές λάθος.....
Στο δικό μου το μυαλό δε μπορείς να την υλοποιήσεις χωρίς χαρακτήρα ελέγχου για τον τερματισμό(πχ "*")

CyberMove

#5
Λέω:

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

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

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


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

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

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

If Grandma_Had_Rolls = TRUE Then
        MsgBox.Style ("Grandma = TROLLEY")
End_If

itt

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

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

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

Ναι.

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

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

Γενικά μπορείς να έχεις τους πίνακες και μέσα στις wrapped συναρτήσεις,απλά έγραψα αυτό που μου ήρθε εκείνη τη στιγμή.

chzisi

Συγνώμη αν κατάλαβα σωστα, ψαχνουμε έναν αλγόριθμο στα πλαίσια του μαθήματος, έτσι?
Αν είναι έτσι, έχω μια πρόταση, δεδομένης της παραμέτρου που έθεσες ότι όταν τελειώνει την πληκτρολόγηση, δίνει το "-" που δεν θεωρείται στοιχείο του κωδικού αλλά χαρακτήρας τερματισμού.

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