Λάθη στις ενδεικτικές λύσεις του βιβλίου 5 στις ουρές

Ξεκίνησε από annastasios, 08 Ιαν 2021, 06:15:30 ΜΜ

« προηγούμενο - επόμενο »

annastasios

Χρόνια πολλά και καλή χρονιά σε όλους,
Άσκηση Ε4, σελ 33, Βιβλίο2, υλοποίηση τράπεζας μέσω ουράς
Λογικά Λάθη στην λύση του βιβλίου 5, σελ 12, αλλά και στην ενδεικτική λύση των φετινών οδηγιών, ΟΥΡΑ ΠΡΟΓΡΑΜΜΑ ΤΡΑΠΕΖΑ ΣΕΛ 22.

Αν έχει ξανα συζητηθεί το θέμα συγχωρέστε με!

1ο λογικό λάθος. στην γραμμή 34 ΓΡΑΨΕ 'ΝΟΥΜΕΡΟ: ', πελατες[τελος]
θα έπρεπε η εντολή ΓΡΑΨΕ να είναι μέσα στο πολλαπλό ΑΝ στις περιπτώσεις που η ουρά δεν είναι γεμάτη και όχι έξω από το ΑΝ,
επειδή, αν η τράπεζα είναι γεμάτη θα εμφανίσει ΓΡΑΨΕ 'Δεν μπορείτε να εξυπηρετηθείτε' αλλά και το νούμερο 1000, που είναι η θέση του τελευταίου πελάτη που μπήκε στην ουρά και όχι αυτού που επιχείρησε να μπει και δεν τα κατάφερε!

2ο λογικό λάθος. στην εκφώνηση ζητάει "Κατά την είσοδό του, ο κάθε
πελάτης πατάει το πλήκτρο «Π» και εκτυπώνεται ένα χαρτί, στο οποίο αναγράφεται το
νούμερο που έχει στην ουρά από την αρχή της ημέρας"
όταν η ουρά μείνει με έναν πελάτη και φύγει και αυτός, οι δείκτες αρχ, τέλος ξανα αρχικοποιούνται
επομένως ο δείκτης τέλος δεν μας δείχνει τους πελάτες από την αρχή της ημέρας, αλλά από την τελευταία αρχικοποίηση.
Θα έπρεπε να υπάρχει ένας άλλος μετρητής που να αυξάνεται κατα ένα, κάθε φορά που εισάγεται νέος πελάτης γραμμές 27 και 32 του προγράμματος, και να εμφανίζεται αυτός όταν ζητηθεί.

3ο Άσκοπες εντολές ... ΠΕΡΙΠΤΩΣΗ 1,2,3,4
θα μπορούσε στην γραμμή 57 να γράφει ταμεια[τ] <- ταμεια[τ] + 1 !(εφόσον έχει γίνει έλεγχος εγκυρότητας στο τ)

4ο Επίσης στην άσκηση Ε7 σελ 35, υλοποίηση εκτυπωτή μέσω ουράς, δεν ζητάει να υπάρχει επιλογή ΓΡΑΨΕ ' Τ(έλος) για έξοδο από το πρόγραμμα', όπως προτείνει στην ενδεικτική λύση, στο βιβλίο 5

Οποιεσδήποτε παρατηρήσεις δεκτές, ευχαριστώ!

lalibi

Δυστυχώς οι "ενδεικτικές" λύσεις των ασκήσεων στο 1.2.2 είναι πολύ πρόχειρες, ελπίζω μελλοντικά να διορθωθούν. Ειδικά από φέτος που τυπώθηκαν και μοιράστηκαν ως βιβλία και στα παιδιά.

Όλα οι παρατηρήσεις σου είναι σωστές, ειδικά το σημείο 3 βγάζει μάτι.

Να προσθέσω και εγώ τα δικά μου.


  • Ε.5 Ο έλεγχος αρχ <= τελος στη γραμμή 42 είναι άσκοπος, αν ισχύει το αρχ > τελος θα το "πιάσει" η γραμμή 36.
  • Ε.5 Ο υπολογισμός στη γραμμή 48 δεν υπολογίζει "το μέγιστο πλήθος των ατόμων που περίμεναν στην ουρά αναμονής", κατά την εκφώνηση, αλλά το πλήθος αυτών που "πέρασαν" από την ουρά, δηλαδή αυτούς που εξυπηρετήθηκαν + αυτούς που ξέμειναν στην ουρά όταν σταμάτησε η επαναληπτική διαδικασία.
  • E.6 Η εκφώνηση δεν αναφέρει πουθενά την επιλογή "Έξοδος" αλλά ζητά "η παραπάνω διαδικασία να επαναλαμβάνεται μέχρι να εξυπηρετηθούν όλοι οι πελάτες". Αν επιλεγεί το "Εξοδος" ενώ υπάρχουν ακόμα άτομα στην ουρά, η διαδικασία θα τερματίσει.
  • Ε.6 Για να λυθεί το παραπάνω "μέχρι να εξυπηρετηθούν όλοι οι πελάτες" γίνεται ένας αυθαίρετος υπολογισμός μεγ_πληθος <- (ώρες* 60) div 3 και η επαναληπτική διαδικασία τερματίζει βάσει αυτού. Αυθαίρετος ως προς το "ώρες" (λειτουργίας) αφού δεν προκύπτει από την εκφώνηση.
  • Ε.7 Ομοίως με την Ε.6 η λύση δε συμφωνεί με το "Η επαναληπτική διαδικασία ολοκληρώνεται, όταν εκτυπωθούν όλα τα αρχεία που έχουν τοποθετηθεί στην ουρά."

gergerman

Στην άσκηση Ε5 τελικά τι ζητάμε;

Α) Το μέγιστο πλήθος ατόμων που κάποια στιγμή περίμεναν στην ουρά;
ή
Β) Το συνολικό αριθμό ατόμων που πέρασαν από  την ουρά;

Πάντως αν θέλουμε το 2ο, η λύση που προτείνεται από το ΙΕΠ είναι λάθος γιατί αν κάνουμε εισαγωγές συνεχώς και πατήσουμε το ΤΕΛΟΣ τότε  σύμφωνα με τη γραμμή 51  πλ = 0 οπότε τα άτομα που πέρασαν από την ουρά είναι 0. Αυτό όμως είναι λάθος γιατί δε μετράμε τα άτομα που είναι εκείνη τη στιγμή στη ουρά.

Τι να πω....