e-ΜΑΘΗΜΑΤΑ
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό περιβάλλον

Ταξινόμηση και δυαδική αναζήτηση


ΠΡΟΓΡΑΜΜΑ δυαδική_αναζήτηση
! α) Να γραφτεί πρόγραμμα το οποίο να διαβάζει 10 ονόματα
!    και τηλέφωνα
! β) Να ενφανίζει τα ονόματα και τα τηλέφωνα αλφαβητικά
! γ) Να διαβάζει ένα όνομα για αναζήτηση του τηλεφώνου του.
! δ) Να αναζητά το όνομα σειριακά.  Αν βρεθεί να εμφανίζει
!    το τηλέφωνό του διαφορετικά μήνυμα ότι δεν βρέθηκε.
!    Να εμφανίζει επίσης το πλήθος των αναζητήσεων που έκανε.
!    (Επειδή ο πίνακας είναι ταξινομημένος να σταματά όταν ξεπεράσει
!    το ζητούμενο όνομα)
! ε) Να αναζητά το όνομα δυαδικά.  Αν βρεθεί να εμφανίζει
!    το τηλέφωνό του διαφορετικά μήνυμα ότι δεν βρέθηκε.
!    Να εμφανίζει επίσης το πλήθος των αναζητήσεων που έκανε.


ΣΤΑΘΕΡΕΣ
  Ν = 10

ΜΕΤΑΒΛΗΤΕΣ
  ΧΑΡΑΚΤΗΡΕΣ: Ον[Ν], Τηλ[Ν], temp, ζητούμενο
  ΑΚΕΡΑΙΕΣ: i, j, αρχικό, τελικό, μεσαίο, θέση, βήματα
  ΛΟΓΙΚΕΣ: τελείωσε, βρέθηκε


ΑΡΧΗ
! α. διάβασμα πινάκων
  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
    ΓΡΑΨΕ i, " Δώστε όνομα και τηλέφωνο : "
    ΔΙΑΒΑΣΕ Ον[i], Τηλ[i] 
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

! β. ταξινόμηση πινάκων
  ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ Ν
    ΓΙΑ j ΑΠΟ Ν ΜΕΧΡΙ i ΜΕ ΒΗΜΑ -1
      ΑΝ Ον[j - 1] > Ον[j] ΤΟΤΕ
        temp <- Ον[j - 1] 
        Ον[j - 1] <- Ον[j] 
        Ον[j] <- temp

        temp <- Τηλ[j - 1] 
        Τηλ[j - 1] <- Τηλ[j] 
        Τηλ[j] <- temp
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

! εμφάνιση πίνακα
  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
    ΓΡΑΨΕ Ον[i], Τηλ[i] 
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

! γ.
  ΓΡΑΨΕ "Δώστε όνομα για αναζήτηση"
  ΔΙΑΒΑΣΕ ζητούμενο

!δ. σειριακή αναζήτηση
  i <- 1
  τελείωσε <- ΨΕΥΔΗΣ
  βρέθηκε <- ΨΕΥΔΗΣ
  βήματα <- 0

  ΟΣΟ τελείωσε = ΨΕΥΔΗΣ ΚΑΙ i <= Ν ΕΠΑΝΑΛΑΒΕ
    βήματα <- βήματα + 1
    ΑΝ Ον[i] = ζητούμενο ΤΟΤΕ
      τελείωσε <- ΑΛΗΘΗΣ
      βρέθηκε <- ΑΛΗΘΗΣ
      θέση <- i
    ΑΛΛΙΩΣ
      ΑΝ Ον[i] > ζητούμενο ΤΟΤΕ
        τελείωσε <- ΑΛΗΘΗΣ
      ΑΛΛΙΩΣ
        i <- i + 1
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ


  ΓΡΑΨΕ βήματα, "αναζητήσεις"
  ΑΝ βρέθηκε = ΑΛΗΘΗΣ ΤΟΤΕ
    ΓΡΑΨΕ Ον[θέση], Τηλ[θέση] 
  ΑΛΛΙΩΣ
    ΓΡΑΨΕ "Δεν βρέθηκε"
  ΤΕΛΟΣ_ΑΝ


! ε. δυαδική αναζήτηση
  αρχικό <- 1
  τελικό <- Ν
  τελείωσε <- ΨΕΥΔΗΣ
  βρέθηκε <- ΨΕΥΔΗΣ
  βήματα <- 0

  ΟΣΟ τελείωσε = ΨΕΥΔΗΣ ΚΑΙ αρχικό <= τελικό ΕΠΑΝΑΛΑΒΕ
    βήματα <- βήματα + 1
    μεσαίο <- (αρχικό + τελικό) div 2

    ΑΝ Ον[μεσαίο] = ζητούμενο ΤΟΤΕ
      τελείωσε <- ΑΛΗΘΗΣ
      βρέθηκε <- ΑΛΗΘΗΣ
      θέση <- μεσαίο
    ΑΛΛΙΩΣ
      ΑΝ Ον[μεσαίο] > ζητούμενο ΤΟΤΕ
        τελικό <- μεσαίο - 1
      ΑΛΛΙΩΣ
        αρχικό <- μεσαίο + 1
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΑΝ

  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  ΓΡΑΨΕ βήματα, "αναζητήσεις"
  ΑΝ βρέθηκε = ΑΛΗΘΗΣ ΤΟΤΕ
    ΓΡΑΨΕ Ον[θέση], Τηλ[θέση] 
  ΑΛΛΙΩΣ
    ΓΡΑΨΕ "Δεν βρέθηκε"
  ΤΕΛΟΣ_ΑΝ

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

 

Κεντρική Σελίδα Αλλα e-μαθήματα ΑΕΠΠ Αλλη άσκησηΕπιστροφή στην κορυφή της σελίδας
© 2016 - 2ο Γενικό Λύκειο Γέρακα - Βασίλειος Αναστόπουλος