ΠΡΟΓΡΑΜΜΑ Άσκηση_10_Παραρτήματος_Α_σελ_121 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Επιλογή, πλήθος ΧΑΡΑΚΤΗΡΕΣ: Συνδρομητές[5, 3] ΑΡΧΗ πλήθος <- 0 ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ '1. Εισαγωγή νέου συνδρομητή' ΓΡΑΨΕ '2. Διαγραφή συνδρομητή' ΓΡΑΨΕ '3. Διόρθωση δεδομένων συνδρομητή' ΓΡΑΨΕ '4. Αναζήτηση συνδρομητή' ΓΡΑΨΕ '5. Εμφάνιση τηλεφωνικού καταλόγου' ΓΡΑΨΕ '6. Έξοδος' ΔΙΑΒΑΣΕ Επιλογή ΕΠΙΛΕΞΕ Επιλογή ΠΕΡΙΠΤΩΣΗ 1 ΚΑΛΕΣΕ Εισαγωγή_νέου_συνδρομητή(Συνδρομητές, πλήθος) ΠΕΡΙΠΤΩΣΗ 2 ΚΑΛΕΣΕ Διαγραφή_συνδρομητή(Συνδρομητές, πλήθος) ΠΕΡΙΠΤΩΣΗ 3 ΚΑΛΕΣΕ Διόρθωση_δεδομένων_συνδρομητή(Συνδρομητές, πλήθος) ΠΕΡΙΠΤΩΣΗ 4 ΚΑΛΕΣΕ Αναζήτηση_συνδρομητή(Συνδρομητές, πλήθος) ΠΕΡΙΠΤΩΣΗ 5 ΚΑΛΕΣΕ Εμφάνιση_τηλεφωνικού_καταλόγου(Συνδρομητές, πλήθος) ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ ΜΕΧΡΙΣ_ΟΤΟΥ Επιλογή = 6 ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ !**************** Εισαγωγή ************** ΔΙΑΔΙΚΑΣΙΑ Εισαγωγή_νέου_συνδρομητή(Σ, π) ΜΕΤΑΒΛΗΤΕΣ ΧΑΡΑΚΤΗΡΕΣ: Σ[5, 3], Όνομα, Διεύθυνση, Τηλέφωνο ΑΚΕΡΑΙΕΣ: ι, κ, λ, π ΛΟΓΙΚΕΣ: flag ΑΡΧΗ ΑΝ π < 5 ΤΟΤΕ ΔΙΑΒΑΣΕ Όνομα, Διεύθυνση, Τηλέφωνο ι <- 1 flag <- ΑΛΗΘΗΣ ΟΣΟ π >= ι ΚΑΙ flag = ΑΛΗΘΗΣ ΕΠΑΝΑΛΑΒΕ ΑΝ Όνομα > Σ[ι, 1] ΤΟΤΕ ι <- ι + 1 ΑΛΛΙΩΣ flag <- ΨΕΥΔΗΣ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ π <- π + 1 ΑΝ flag = ΨΕΥΔΗΣ ΤΟΤΕ κ <- π ΟΣΟ κ > ι ΕΠΑΝΑΛΑΒΕ ΓΙΑ λ ΑΠΟ 1 ΜΕΧΡΙ 3 Σ[κ, λ] <- Σ[κ - 1, λ] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ κ <- κ - 1 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΑΝ Σ[ι, 1] <- Όνομα Σ[ι, 2] <- Διεύθυνση Σ[ι, 3] <- Τηλέφωνο ΑΛΛΙΩΣ ΓΡΑΨΕ 'Δεν υπάρχει χώρος για καταχώρηση άλλου συνδρομητή' ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ !******* Διαγραφή**************** ΔΙΑΔΙΚΑΣΙΑ Διαγραφή_συνδρομητή(Σ, πλήθος) ΜΕΤΑΒΛΗΤΕΣ ΧΑΡΑΚΤΗΡΕΣ: Σ[5, 3], όνομα ΑΚΕΡΑΙΕΣ: ι, κ, πλήθος, θέση ΑΡΧΗ ΔΙΑΒΑΣΕ όνομα θέση <- Θέση_συνδρομητή(Σ, πλήθος, όνομα) ΑΝ θέση = 0 ΤΟΤΕ ΓΡΑΨΕ ' δεν υπάρχει συνδρομητής με το όνομα αυτό' ΑΛΛΙΩΣ ΓΙΑ ι ΑΠΟ θέση ΜΕΧΡΙ πλήθος - 1 ΓΙΑ κ ΑΠΟ 1 ΜΕΧΡΙ 3 Σ[ι, κ] <- Σ[ι + 1, κ] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ πλήθος <- πλήθος - 1 ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ !******** Δυαδική Αναζήτηση *************** ΣΥΝΑΡΤΗΣΗ Θέση_συνδρομητή(Σ, πλήθος, στοιχείο): ΑΚΕΡΑΙΑ ΜΕΤΑΒΛΗΤΕΣ ΧΑΡΑΚΤΗΡΕΣ: Σ[5, 3], στοιχείο ΑΚΕΡΑΙΕΣ: πλήθος, αρχ, τέλος, μέση ΛΟΓΙΚΕΣ: δεικτης ΑΡΧΗ αρχ <- 1 τέλος <- πλήθος δεικτης <- ΨΕΥΔΗΣ ΟΣΟ αρχ <= τέλος ΚΑΙ δεικτης = ΨΕΥΔΗΣ ΕΠΑΝΑΛΑΒΕ μέση <- (αρχ + τέλος) div 2 ΑΝ μέση >= 1 ΚΑΙ μέση <= πλήθος ΤΟΤΕ ΑΝ στοιχείο < Σ[μέση, 1] ΤΟΤΕ τέλος <- μέση - 1 ΑΛΛΙΩΣ_ΑΝ στοιχείο > Σ[μέση, 1] ΤΟΤΕ αρχ <- μέση + 1 ΑΛΛΙΩΣ δεικτης <- ΑΛΗΘΗΣ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΑΝ δεικτης = ΑΛΗΘΗΣ ΤΟΤΕ Θέση_συνδρομητή <- μέση ΑΛΛΙΩΣ Θέση_συνδρομητή <- 0 ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ Θέση_συνδρομητή !******** Σειριακή Αναζήτηση *************** ΔΙΑΔΙΚΑΣΙΑ Σειριακή_αναζήτηση(Σ, πλήθος, στοιχείο, στήλη, pos) ΜΕΤΑΒΛΗΤΕΣ ΧΑΡΑΚΤΗΡΕΣ: Σ[5, 3], στοιχείο ΑΚΕΡΑΙΕΣ: ι, pos, πλήθος, στήλη ΛΟΓΙΚΕΣ: found ΑΡΧΗ pos <- 0 found <- ΨΕΥΔΗΣ ι <- 1 ΟΣΟ ι <= πλήθος ΚΑΙ found = ΨΕΥΔΗΣ ΕΠΑΝΑΛΑΒΕ ΑΝ στοιχείο = Σ[ι, στήλη] ΤΟΤΕ found <- ΑΛΗΘΗΣ pos <- ι ΑΛΛΙΩΣ ι <- ι + 1 ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ Σειριακή_αναζήτηση !************* ΔΙΑΔΙΚΑΣΙΑ Διόρθωση_δεδομένων_συνδρομητή(Σ, π) ΜΕΤΑΒΛΗΤΕΣ ΧΑΡΑΚΤΗΡΕΣ: Σ[5, 3] ΑΚΕΡΑΙΕΣ: ι, κ, π ΑΡΧΗ ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ !*****************ΑΝΑΖΗΤΗΣΗ**************** ΔΙΑΔΙΚΑΣΙΑ Αναζήτηση_συνδρομητή(Σ, πλήθος) ΜΕΤΑΒΛΗΤΕΣ ΧΑΡΑΚΤΗΡΕΣ: Σ[5, 3], όνομα, τηλ ΑΚΕΡΑΙΕΣ: ι, κ, πλήθος, επιλογή, Θέση ΛΟΓΙΚΕΣ: found ΑΡΧΗ ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ '1. Αναζήτηση με το όνομα' ΓΡΑΨΕ '2. Αναζήτηση με το τηλέφωνο' ΓΡΑΨΕ '3. Έξοδος' ΔΙΑΒΑΣΕ επιλογή ΑΝ επιλογή = 1 ΤΟΤΕ ΔΙΑΒΑΣΕ όνομα Θέση <- Θέση_συνδρομητή(Σ, πλήθος, όνομα) ΑΛΛΙΩΣ_ΑΝ επιλογή = 2 ΤΟΤΕ ΔΙΑΒΑΣΕ τηλ ΚΑΛΕΣΕ Σειριακή_αναζήτηση(Σ, πλήθος, τηλ, 3, Θέση) ΤΕΛΟΣ_ΑΝ ΑΝ Θέση = 0 ΤΟΤΕ ΓΡΑΨΕ 'δε βρέθηκε συνδρομητής με τα στοιχεία αυτά' ΑΛΛΙΩΣ ΓΙΑ κ ΑΠΟ 1 ΜΕΧΡΙ 3 ΓΡΑΨΕ Σ[Θέση, κ] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΑΝ ΜΕΧΡΙΣ_ΟΤΟΥ επιλογή = 3 ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ !*************************************************** ΔΙΑΔΙΚΑΣΙΑ Εμφάνιση_τηλεφωνικού_καταλόγου(Σ, π) ΜΕΤΑΒΛΗΤΕΣ ΧΑΡΑΚΤΗΡΕΣ: Σ[5, 3] ΑΚΕΡΑΙΕΣ: ι, κ, π ΑΡΧΗ ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ !ArxeioEisodou 1 Βασίλης Ιεράπετρα 2842028568 1 Δημήτρης Κριτσά 2841051228 1 Αναστάσης Άγιος Νικόλαος 2841055698 1 Γιάννης Κρούστας 2841051237