Δομή επιλογής - Μεθοδολογική προσέγγιση
Δύο πρώτα Τρίτο Εταιρεία που διαχειρίζεται 4 City U 5 CityTel telephony 9 TEVERLAS 0 Τηλεπικοινωνίες Τενεούπολης 1 Vodo City Να αναπτυχθεί αλγόριθμος που θα διαβάζει έναν δεκαψήφιο αριθμό και θα εκτυπώνει το όνομα της εταιρείας που τον διαχειρίζεται
Άσκηση 1. Στο κρατίδιο της Τενεούπολης η ανεξάρτητη Αρχή Τηλεπικοινωνιών σε συνεργασία με τις εταιρείες τηλεφωνίας αποφάσισε πως όλοι οι τηλεφωνικοί αριθμοί θα είναι δεκαψήφιοι και θα υπακούουν στους παρακάτω κανόνες:
ψηφία αριθμού
ψηφία αριθμού
τους αριθμούς
69
κινητή τηλεφωνία
21
σταθερή τηλεφωνία
| Λύση | ||||
Αφού διαβάσουμε και κατανοήσουμε το πρόβλημα, η αρχική σκέψη πρέπει να είναι: "Πώς θα αντιμετώπιζα το πρόβλημα ως αριθμητικό;" Ας υποθέσουμε ότι μας δίνεται ο αριθμός 6941111111, παρατηρούμε ότι τα πρώτα δυο ψηφία του αριθμού είναι 69, επομένως ο αριθμός αντιστοιχεί σε κινητό τηλέφωνο. Στη συνέχεια παρατηρούμε το τρίτο ψηφίο του αριθμού που είναι ο αριθμός 4, επομένως ο αριθμός αυτός αντιστοιχεί σε συνδρομητή της εταιρείας City U. Το δεύτερο βήμα είναι η αποτύπωση της παραπάνω διαδικασίας σε βήματα αλγορίθμου. Όλα αυτά τα ερωτήματα πρέπει να απαντηθούν με βάση την μεθοδολογία και τα εργαλεία που έχουμε για την επίλυση των ασκήσεων και την παρόμοια εμπειρία μας σε παρόμοιες ασκήσεις.
Για την διερεύνηση των παραπάνω περιπτώσεων θα χρησιμοποιήσουμε δομές πολλαπλής επιλογής και θα έχουμε τρία επίπεδα ελέγχου με εμφωλευμένες δομές. Αρχικά, αν ο αριθμός είναι κινητό ή σταθερό τηλέφωνο ή έχει εισαχθεί λάθος αριθμός. Το τρίτο επίπεδο ελέγχου ελέγχει σε ποια εταιρεία αντιστοιχεί ο αριθμός τηλεφωνίας. Μια άλλη προσέγγιση είναι να χρησιμοποιεί μια δομή επιλογής με σύνθετες συνθήκες
π.χ. Αφού διατυπωθεί ο αλγόριθμος πρέπει πάντα να "εκτελείται" με κατάλληλα αριθμητικά δεδομένα διερευνώντας όλες τις δομές επιλογής, ώστε να διαπιστωθεί ότι ανταποκρίνεται σωστά σε όλες τις περιπτώσεις Ακολουθεί ο αλγόριθμος : |
||||
Αλγόριθμος Τηλεπικοινωνίες
Διάβασε τηλέφωνο
Αν (τηλέφωνο >= 1000000000) και (τηλέφωνο <= 9999999999) τότε
πρώτα_ψηφία ← τηλέφωνο div 10^8 ! απομονώνουμε τα 2 πρώτα ψηφία του αριθμού
υπόλοιπο ← τηλέφωνο mod 10^8 ! απομονώνουμε τα υπόλοιπα ψηφία του αριθμού
τρίτο_ψηφίο ← υπόλοιπο div 10^7 ! απομονώνουμε το 3ο ψηφίο του αριθμού
Αν πρώτα_ψηφία = 69 τότε
Αν τρίτο_ψηφίο = 4 τότε
Εκτύπωσε "City U"
Αλλιώς_αν τρίτο_ψηφίο = 5 τότε
Εκτύπωσε "CityTel telephony"
Αλλιώς_αν τρίτο_ψηφίο = 9 τότε
Εκτύπωσε "TEVERLAS"
Αλλιώς
Εκτύπωσε "Ο αριθμός που δόθηκε δεν αντιστοιχεί σε κινητό τηλέφωνο"
Τέλος_Αν
Αλλιώς_αν πρώτα_ψηφία = 21 τότε
Αν τρίτο_ψηφίο = 0 τότε
Εκτύπωσε "Τηλεπικοινωνίες Τενεούπολης"
Αλλιώς_αν τρίτο_ψηφίο = 5 τότε
Εκτύπωσε "Vodo City"
Αλλιώς
Εκτύπωσε "Ο αριθμός που δόθηκε δεν αντιστοιχεί σε σταθερό τηλέφωνο"
Τέλος_Αν
Αλλιώς
Εκτύπωσε "Ο αριθμός που δόθηκε δεν αντιστοιχεί σε τηλέφωνο"
Τέλος_Αν
Αλλιώς
Εκτύπωσε "Δεν δώσατε 10ψήφιο αριθμό"
Τέλος_Αν
Τέλος Τηλεπικοινωνίες |
||||