Μια εταιρεία Πληροφορικής καταγράφει, για δέκα ιστότοπους, τον αριθμό των επισκέψεων που δέχεται ο καθένας, κάθε μέρα, για τέσσερις εβδομάδες.
Να αναπτύξετε αλγόριθμο, ο οποίος:
Δ1. Για καθένα από τους ιστότοπους να διαβάζει το όνομά του και τον αριθμό των επισκέψεων που δέχθηκε ο ιστότοπος για καθεμιά ημέρα. Δεν απαιτείται έλεγχος εγκυρότητας τιμών.
Μονάδες 2
Δ2. Να εμφανίζει το όνομα κάθε ιστοτόπου και τον συνολικό αριθμό των επισκέψεων που δέχθηκε αυτός στο διάστημα των τεσσάρων εβδομάδων.
Μονάδες 3
Δ3. Να εμφανίζει τα ονόματα των ιστοτόπων που κάθε μέρα στο διάστημα των τεσσάρων εβδομάδων δέχθηκαν περισσότερες από 500 επισκέψεις. Αν δεν υπάρχουν τέτοιοι ιστότοποι, να εμφανίζει κατάλληλο μήνυμα.
Μονάδες 6
Δ4. Να διαβάζει το όνομα ενός ιστοτόπου. Αν το όνομα αυτό δεν είναι ένα από τα δέκα ονόματα που έχουν δοθεί, να το ξαναζητά, μέχρι να δοθεί ένα από αυτά τα ονόματα. Να εμφανίζει τους αριθμούς των εβδομάδων (1-4) κατά τη διάρκεια των οποίων ο συνολικός (εβδομαδιαίος) αριθμός επισκέψεων στον ιστότοπο αυτό είχε τη μέγιστη τιμή.
Μονάδες 9
Τα θέματα σε pdf, 2014, Μαΐου-Ιουνίου, Ημερήσια
ΛΥΣΗ
ΘΕΜΑ_Δ_2014_ΙΟΥΝ_ΗΜΕΡ [DEMO δεδομένα] ΠΡΟΓΡΑΜΜΑ ΘΕΜΑ_Δ_2014_ΙΟΥΝ_ΗΜΕΡ ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: ΕΠΙΣΚ[10,28], ΣΕΠΙΣΚ[10], ΣΕΠΙΣΚ_ΑΝΑ7[4], Μέγιστο, position, i, j, k ΧΑΡΑΚΤΗΡΕΣ: ΟΝ[10], ΟΝΟΜΑ ΛΟΓΙΚΕΣ: βρέθηκε_τουλάχιστον_1, βρέθηκε_κάτω_500, βρέθηκε ΑΡΧΗ ! Δ1 ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 10 ΓΡΑΨΕ 'ΔΩΣΤΕ ΟΝΟΜΑ ΙΣΤΟΤΟΠΟΥ ', i ΔΙΑΒΑΣΕ ΟΝ[i] ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 28 ΓΡΑΨΕ 'ΔΩΣΤΕ ΑΡΙΘΜΟ ΕΠΙΣΚΕΨΕΩΝ ΓΙΑ ΤΗ ΜΕΡΑ ', j ΔΙΑΒΑΣΕ ΕΠΙΣΚ[i, j] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ! αρχικοποίηση πίνακα μετρητών επισκεψιμότητας 28 ημερών ! (Παράλληλος Πίνακας, όπως και ο ΟΝ) ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 10 ΣΕΠΙΣΚ[i] <-- 0 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ! Δ2 Υπολογισμός αθροίσματος κατά γραμμή ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 10 ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 28 ΣΕΠΙΣΚ[i] <-- ΣΕΠΙΣΚ[i] + ΕΠΙΣΚ[i, j] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ! Έξοδος στη οθόνη ΓΡΑΨΕ 'ΙΣΤΟΧΩΡΟΙ ΚΑΙ ΕΠΙΣΚΕΨΙΜΟΤΗΤΑ ΜΗΝΑ' ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 10 ΓΡΑΨΕ ΟΝ[i],' ΕΠΙΣΚΕΨΕΙΣ ΜΗΝΑ: ', ΣΕΠΙΣΚ[i] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ! Δ3 Μπορεί να επιλυθεί και με τη χρήση πίνακα ΓΡΑΨΕ 'ΙΣΤΟΧΩΡΟΙ ΜΕ ΕΠΙΣΚΕΨΙΜΟΤΗΤΑ > 500 ΚΑΘΕ ΗΜΕΡΑ ΓΙΑ 4 ΕΒΔΟΜΑΔΕΣ' βρέθηκε_τουλάχιστον_1 <-- ΨΕΥΔΗΣ ! με επισκέψιμότητα > 500 κάθε ημέρα ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 10 j <-- 1 βρέθηκε_κάτω_500 <-- ΨΕΥΔΗΣ ! μέρα με επισκεμότητα < 500 ΟΣΟ j<=28 ΚΑΙ βρέθηκε_κάτω_500 = ΨΕΥΔΗΣ ΕΠΑΝΑΛΑΒΕ ΑΝ ΕΠΙΣΚ[i, j]>500 ΤΟΤΕ j <-- j + 1 ΑΝ βρέθηκε_τουλάχιστον_1 = ΨΕΥΔΗΣ ΤΟΤΕ !το flag θα σηκωθεί μόνο τη 1η φορά βρέθηκε_τουλάχιστον_1 <-- ΑΛΗΘΗΣ ΤΕΛΟΣ_ΑΝ ΑΛΛΙΩΣ βρέθηκε_κάτω_500 <-- ΑΛΗΘΗΣ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΑΝ βρέθηκε_κάτω_500 = ΨΕΥΔΗΣ ΤΟΤΕ ΓΡΑΨΕ ΟΝ[i] ΤΕΛΟΣ_ΑΝ i <-- i + 1 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ! Δ4 !Αναζήτηση ύπαρξης και θέσης στοιχείου και έλεγχος εγκυρότητας ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'ΔΩΣΤΕ ΟΝΟΜΑ ΙΣΤΟΤΟΠΟΥ:' ΔΙΑΒΑΣΕ ΟΝΟΜΑ βρέθηκε <-- ΨΕΥΔΗΣ i <-- 1 ΟΣΟ i <= 10 και βρέθηκε=ΨΕΥΔΗΣ ΕΠΑΝΑΛΑΒΕ ΑΝ ΟΝΟΜΑ = ΟΝ[i] ΤΟΤΕ position <-- i βρέθηκε <-- ΑΛΗΘΗΣ ΑΛΛΙΩΣ i <-- i + 1 ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΜΕΧΡΙΣ_ΟΤΟΥ βρέθηκε = ΑΛΗΘΗΣ ! Αρχικοποίηση πίνακα μετρητή επισκέψεων ιστοτόπου ανά εβδομάδα ΓΙΑ k ΑΠΟ 1 ΜΕΧΡΙ 4 ΣΕΠΙΣΚ_ΑΝΑ7[k] <-- 0 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ! άθροιση επισκέψεων ανά εβδομάδα α τρόπος ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 28 ΑΝ j<=7 ΤΟΤΕ ΣΕΠΙΣΚ_ΑΝΑ7[1] <-- ΣΕΠΙΣΚ_ΑΝΑ7[1] + ΕΠΙΣΚ[position, j] ΑΛΛΙΩΣ_ΑΝ j<=14 ΤΟΤΕ ΣΕΠΙΣΚ_ΑΝΑ7[2] <-- ΣΕΠΙΣΚ_ΑΝΑ7[2] + ΕΠΙΣΚ[position, j] ΑΛΛΙΩΣ_ΑΝ j<=21 ΤΟΤΕ ΣΕΠΙΣΚ_ΑΝΑ7[3] <-- ΣΕΠΙΣΚ_ΑΝΑ7[3] + ΕΠΙΣΚ[position, j] ΑΛΛΙΩΣ ΣΕΠΙΣΚ_ΑΝΑ7[4] <-- ΣΕΠΙΣΚ_ΑΝΑ7[4] + ΕΠΙΣΚ[position, j] ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ !* άθροιση επισκέψεων ανά εβδομάδα, β τρόπος !* ΓΙΑ k ΑΠΟ 1 ΜΕΧΡΙ 4 !* ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 7 !* ΣΕΠΙΣΚ_ΑΝΑ7[k] <-- ΣΕΠΙΣΚ_ΑΝΑ7[k] + ΕΠΙΣΚ[position, (k-1)*7 + j] !* ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ !* ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ! Έυρεση Μεγίστου επισκέψεων στον ΣΕΠΙΣΚ_ΑΝΑ7 Μέγιστο <-- ΣΕΠΙΣΚ_ΑΝΑ7[1] ΓΙΑ k ΑΠΟ 2 ΜΕΧΡΙ 4 ΑΝ ΣΕΠΙΣΚ_ΑΝΑ7[k] > Μέγιστο ΤΟΤΕ Μέγιστο <-- ΣΕΠΙΣΚ_ΑΝΑ7[k] ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'ΜΕΓΙΣΤΟ ΕΒΔΟΜΑΔΙΑΙΩΝ ΕΠΙΣΚΕΨΕΩΝ: ', Μέγιστο ΓΙΑ k ΑΠΟ 1 ΜΕΧΡΙ 4 ΑΝ ΣΕΠΙΣΚ_ΑΝΑ7[k] = Μέγιστο ΤΟΤΕ ΓΡΑΨΕ 'ΤΗΝ ΕΒΔΟΜΑΔΑ ', k ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Πρόσφατα σχόλια