Γενικό Λύκειο > Εντολή ΜΕΧΡΙΣ_ΟΤΟΥ

Έλεγχος εγκυρότητας κωδικού

(1/1)

nikolasmer:
Με προβληματίζει μια άσκηση που κάποιος συνάδελφος εδωσε σε μαθητές.
Θα αναρτήσω την εκφώνησή της και αν υπάρχει πρόβλημα διακαιωμάτων ευχαρίστως να την αποσύρω.
Λοιπόν..
"Ένας κωδικός χρήστη αποτελείται από το πολύ 10 χαρακτήρες και το ελάχιστο από 6. Ο κωδικός αυτός μπορεί να περιέχει οποιοδήποτε χαρακτήρα αλλά τουλάχιστον ένα σύμβολο (@,#,$,%,&,*) και δυο αριθμούς (0-9). Επιπλέον απαγορέυεται η εισαγωγή του κενού. Να γίνει αλγόριθμος που θα ελέγχει την εγκυρότητα ενός κωδικού."
και με βάση μια παρατήρηση του συναδέλφου η άσκηση θα πρέπει να γίνει χωρίς τη χρήση πίνακα.

Δυο ερωτήσεις επί της εκφώνησης:
1. Όταν λέει "..και δυο αριθμούς " εννοεί μόνο 2 ; Δεν μπορώ από τα συμφραζόμενα να το καταλάβω. Μπορεί να μην περιέχει και κανένα άλλο χαρακτήρα εκτός από τους 2 αριθμούς και τους ειδικούς χαρακτήρες που αναφέρονται παραπάνω; Δηλαδή είναι αποδεκτός ο "$%&17@*" ή οχι;
2. Οι αριθμοί, πώς θα εισαχθούν σε μια αλφαριθμητική μεταβλητή; Η συνθήκη χ >= "0" και χ <= "10" ελέγχει το επιθυμητό;
3. Γίνεται έλεγχος χωρίς τιμή φρουρό ή το κενό θεωρείται με βάση την εκφώνηση, η τιμή φρουρός;

Μια δική μου λύση είναι η παρακάτω

--- Κώδικας: ---μ ← 0
ι ← 0
flag1 ← Ψευδής
flag2 ← Ψευδής
Αρχή_επανάληψης
  Διάβασε χ
  Αν χ = "@" ή χ = "#" ή χ = "$" ή χ = "%" ή χ = "^" ή χ = "&" ή χ = "*" τότε
    flag1 ← Αληθής
  Τέλος_αν
  Αν χ = " " και ι < 6 ή ι > 10 τότε
    Εμφάνισε "Λάθος κωδικός"
    ι ← 0
    μ ← 0
    flag1 ← Ψευδής
    flag2 ← Ψευδής
  Τέλος_αν
  Αν χ ≥ "0" και χ ≤ "9" τότε
    μ ← μ + 1
    Αν μ = 2 τότε
      flag2 ← Αληθής
    αλλιώς_αν μ > 2 τότε
      flag2 ← Ψευδής
      ι ← 0
      μ ← 0
    Τέλος_αν
  Τέλος_αν
  ι ← ι + 1
Μέχρις_ότου ι ≥ 6 και ι ≤ 10 και flag1 = Αληθής και flag2 = Αληθής και χ = ""

--- Τέλος κώδικα ---
:D
Αν υπάρχει κάποια καλύτερη λύση με πιο σφιχτό κώδικα θα ήθελα να τη δώ.

apoldem:
Σαρώνεις τον κωδικό και μετράς το συνολικό μήκος, τους περίεργους χαρακτήρες, τους αριθμούς και τα κενά. Στο τέλος ελέγχεις αν αυτά που μέτρησες είναι συμβατά με τον σωστό κωδικό. Υποθέτω το τέλος της εισαγωγής του κωδικού γίνεται με απλό enter.


--- Κώδικας: ---μήκος <- 0
περίεργα <- 0
αριθμοί <- 0
κενά <- 0
Αρχή_επανάληψης
  Διάβασε χ
  μήκος <- μήκος + 1
  Αν χ = "@" ή χ = "#" ή χ = "$" ή χ = "%" ή χ = "^" ή χ = "&" ή χ = "*" τότε
    περίεργα <- περίεργα +1
  Αλλιώς_αν χ >= '0' και χ <= '9' τότε
    αριθμοί <- αριθμοί + 1
  Αλλιώς_αν χ = ' ' τότε ! space
    κενά <- κενά +1
  Τέλος_Αν
Μέχρις_ότου χ = ""

αποδεκτός_κωδικός <- μήκος > 5 και μήκος < 11 και κενά = 0 και περίεργα > 1

--- Τέλος κώδικα ---

nikolasmer:

--- Παράθεση από: apoldem στις 02 Μαρ 2014, 01:44:59 πμ ---Σαρώνεις τον κωδικό και μετράς το συνολικό μήκος, τους περίεργους χαρακτήρες, τους αριθμούς και τα κενά. Στο τέλος ελέγχεις αν αυτά που μέτρησες είναι συμβατά με τον σωστό κωδικό. Υποθέτω το τέλος της εισαγωγής του κωδικού γίνεται με απλό enter.


--- Κώδικας: ---μήκος <- 0
περίεργα <- 0
αριθμοί <- 0
κενά <- 0
Αρχή_επανάληψης
  Διάβασε χ
  μήκος <- μήκος + 1
  Αν χ = "@" ή χ = "#" ή χ = "$" ή χ = "%" ή χ = "^" ή χ = "&" ή χ = "*" τότε
    περίεργα <- περίεργα +1
  Αλλιώς_αν χ >= '0' και χ <= '9' τότε
    αριθμοί <- αριθμοί + 1
  Αλλιώς_αν χ = ' ' τότε ! space
    κενά <- κενά +1
  Τέλος_Αν
Μέχρις_ότου χ = ""

αποδεκτός_κωδικός <- μήκος > 5 και μήκος < 11 και κενά = 0 και περίεργα > 1

--- Τέλος κώδικα ---

--- Τέλος παράθεσης ---
Ναι ναι !! Αυτό ήθελα. Πολύ καλό. Ευχαριστώ πάρα πολύ.

Πλοήγηση

[0] Λίστα μηνυμάτων

Μετάβαση στην πλήρη έκδοση