Παρασκευή, 15 Δεκεμβρίου 2017

Ψάχνοντας για αριθμό κινητού

Βαθμός Δυσκολίας:
2/5
Εκφώνηση Ασκησης: 

Η εταιρεία κινητής τηλεφωνίας speechless Α.Ε. καταγράφει τα ονόματα και τα κινητά των πελατών της και θέλει να δημιουργήσετε γι' αυτήν έναν αλγόριθμο σειριακής αναζήτησης, ώστε να βρίσκει εύκολα το όνομα του κατόχου ενός αριθμού κινητού. 

Α) Ποια απο τις 3 μεθοδολογίες σειριακής αναζήτησης (πρώτης εμφάνισης, τελευταίας ή κάθε φορά που το βρίσκουμε) που ξέρετε θα χρησιμοποιήσετε και γιατί;

Β) Να δημιουργήσετε αλγόριθμο που:

1) να διαβάζει και να αποθηκεύει σε δυο μονοδιάστατους πίνακες το όνομα και το κινητό κάθε πελάτη. Οι πελάτες της εταιρείας είναι 200.

2) να διαβάζει έναν αριθμό κινητού και να εμφανίζει τον κάτοχο αυτού του αριθμού. Σε περίπτωση που δεν βρεθεί να εμφανίζει κατάλληλο μήνυμα.

Επιμέλεια: mstamos.gr

Λύση Άσκησης: 
Ερώτημα Α

Θα χρησιμοποιήσουμε τη σειριακή αναζήτηση πρώτης εμφάνισης γιατί ο αριθμός ενός κινητού είναι μοναδικός για κάθε κάτοχο. Συνεπώς, την πρώτη φορά που βρεθεί ο κάτοχος του αριθμού, ο αλγόριθμος πρέπει να σταματήσει.

 
ΠΡΟΓΡΑΜΜΑ Speechless_κάτοχος_κινητού
ΜΕΤΑΒΛΗΤΕΣ
  ΧΑΡΑΚΤΗΡΕΣ: ΟΝ[200] 
  ΑΚΕΡΑΙΕΣ: ι, θέση, ΚΙΝ[200], κιν_αναζ
 
ΑΡΧΗ
!Ερώτημα Β
  ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 200
    ΓΡΑΨΕ "Δώσε το όνομα του πελάτη"
    ΔΙΑΒΑΣΕ ΟΝ[ι] 
    ΓΡΑΨΕ "Δώσε το κινητό του πελάτη"
    ΔΙΑΒΑΣΕ ΚΙΝ[ι] 
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
 
!Ερώτημα Γ
  ΓΡΑΨΕ "Δώσε τον αριθμό του κινητού που ψάχνεις."
  ΔΙΑΒΑΣΕ κιν_αναζ
 
  ι <- 1
  θέση <- 0
  ΟΣΟ ι <= 200 ΚΑΙ θέση = 0 ΕΠΑΝΑΛΑΒΕ
    ΑΝ ΚΙΝ[ι] = κιν_αναζ ΤΟΤΕ
      θέση <- ι
    ΤΕΛΟΣ_ΑΝ
    ι <- ι + 1
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΑΝ θέση = 0 ΤΟΤΕ
    ΓΡΑΨΕ "Κανείς πελατης δεν υπάρχει με τον αριθμό ", κιν_αναζ
  ΑΛΛΙΩΣ
    ΓΡΑΨΕ "Ο πελάτης με τον αριθμό κινητού ", κιν_αναζ, " είναι ο/η ", ΟΝ[θέση] 
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ