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
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ βήματα, "αναζητήσεις"
ΑΝ βρέθηκε = ΑΛΗΘΗΣ ΤΟΤΕ
ΓΡΑΨΕ Ον[θέση], Τηλ[θέση]
ΑΛΛΙΩΣ
ΓΡΑΨΕ "Δεν βρέθηκε"
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
|