Επαναληπτικές 2005, Θέμα 4

Ξεκίνησε από Michael, 08 Αυγ 2007, 12:13:42 ΜΜ

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

Michael

Καλημέρα σε όλους και συγχαρητήρια στους δημιουργούς του καταπληκτικού αυτού forum.
Ίσως είναι λίγο "μπαγιάτικο" το topic που ανοίγω, όμως μόλις πριν από λίγες ώρες "έπεσα" πάνω στο συγκεκριμένο Θέμα 4, ενώ έλυνα ασκήσεις από το (καταπληκτικό κατά τη γνώμη μου) βιβλίο του κυρίου Τσιωτάκη. Θυμίζω την εκφώνηση:

ΘΕΜΑ 4ο
Μια αεροπορική εταιρία ταξιδεύει σε 15 προορισμούς του εσωτερικού. Στα πλαίσια της οικονομικής πολιτικής που πρόκειται να εφαρμόσει, κατέγραψε το ποσοστό πληρότητας των πτήσεων για κάθε μήνα του προηγούμενου ημερολογιακού έτους. Η πολιτική έχει ως εξής:
- ∆εν θα γίνει καμία περικοπή σε προορισμούς, στους οποίους το μέσο ετήσιο ποσοστό πληρότητας των πτήσεων είναι μεγαλύτερο του 65.
- Θα γίνουν περικοπές πτήσεων σε προορισμούς, στους οποίους το μέσο ετήσιο ποσοστό πληρότητας των πτήσεων κυμαίνεται από 40 έως και 65. Οι περικοπές θα γίνουν μόνο σε εκείνους τους μήνες που το ποσοστό πληρότητάς τους είναι μικρότερο του 40.
- Θα καταργηθούν οι προορισμοί, στους οποίους το μέσο ετήσιο ποσοστό πληρότητας των πτήσεων είναι μικρότερο του 40.
Να γραφεί αλγόριθμος ο οποίος:
1. Να διαβάζει τα ονόματα των 15 προορισμών και να τα αποθηκεύει σε ένα μονοδιάστατο πίνακα. Μονάδες 2
2. Να διαβάζει τα ποσοστά πληρότητας των πτήσεων των 15 προορισμών για κάθε μήνα και να τα αποθηκεύει σε δισδιάστατο πίνακα κάνοντας έλεγχο στην καταχώριση των δεδομένων, ώστε να καταχωρούνται μόνο οι τιμές που είναι από 0 έως και 100. Μονάδες 4
3. Να βρίσκει και να τυπώνει τα ονόματα των προορισμών που δεν θα γίνει καμία περικοπή πτήσεων. Μονάδες 3
4. Να βρίσκει και να τυπώνει τα ονόματα των προορισμών που θα καταργηθούν. Μονάδες 3
5. Να βρίσκει και να τυπώνει τα ονόματα των προορισμών, στους οποίους θα γίνουν περικοπές πτήσεων, καθώς και τους μήνες (αύξοντα αριθμό μήνα) που θα γίνουν οι περικοπές. Μονάδες 8

Θα ασχοληθώ με το τρίτο και με το πέμπτο ερώτημα. Όλες οι λύσεις που κατάφερα να βρω είναι περίπου ως εξής (αντιγράφω από το site του κυρίου Τσιωτάκη):
(Σημείωση: Όπου ΜΟ, βλ. ΜΟ με δείκτη i μέσα σε αγκύλες. Στην προεπισκόπηση τουλάχιστον, δεν "βγαίνουν" οι δείκτες κάποιων πινάκων...)

Για i από 1 μέχρι 15 ! ερώτημα 3
    Αν (MO > 65) τότε
      Εκτύπωσε i
    Τέλος_αν
  Τέλος_επανάληψης

Για i από 1 μέχρι 15 ! ερώτημα 5
    Αν MO >= 40 και MO <= 65 τότε
      Εκτύπωσε i, "Περικοπές στους μήνες"
      Για j από 1 μέχρι 12
        Αν (ΠΟΣΟΣΤΟ[i, j] < 40) τότε
          Εκτύπωσε j
        Τέλος_αν
      Τέλος_επανάληψης
    Τέλος_αν
  Τέλος_επανάληψης

Υπάρχει κάτι που με προβληματίζει και θα ήθελα τη γνώμη σας. Η εκφώνηση λέει: "Θα γίνουν περικοπές πτήσεων σε προορισμούς, στους οποίους το μέσο ετήσιο ποσοστό πληρότητας των πτήσεων κυμαίνεται από 40 έως και 65". Από αυτό, εγώ καταλαβαίνω ότι δεν είναι υποχρεωτικό να γίνουν περικοπές σε όλους αυτούς τους προορισμούς, καθώς η εκφώνηση δεν λέει ούτε "... στους προορισμούς...", ούτε "... σε όλους τους προορισμούς...". Συνέχισα να διαβάζω την εκφώνηση: " Οι περικοπές θα γίνουν μόνο σε εκείνους τους μήνες που το ποσοστό πληρότητάς τους είναι μικρότερο του 40." Σκέφτηκα λοιπόν την εξής περίπτωση: Έστω ότι για κάποιον προορισμό, το ποσοστό πληρότητας για τους πρώτους έξι μήνες είναι 50%, ενώ για τους υπόλοιπους έξι είναι 60%. Το μέσο ετήσιο ποσοστό πληρότητας είναι λοιπόν 55%. Παρόλα αυτά, αν και ισχύει 40<55<65, σε κανένα μήνα το ποσοστό πληρότητας δεν είναι < 40, άρα σε κανένα μήνα δεν θα γίνουν περικοπές, άρα... δεν θα γίνουν καθόλου περικοπές στο συγκεκριμένο προορισμό! Αλλιώς δεν έβγαζε νόημα... πώς είναι δυνατόν και να γίνουν και να μη γίνουν? Έρχομαι τώρα στα ερωτήματα της εκφώνησης:

3. Να βρίσκει και να τυπώνει τα ονόματα των προορισμών που δεν θα γίνει καμία περικοπή πτήσεων. (κατάλαβα: αυτά και μόνο αυτά)
5. Να βρίσκει και να τυπώνει τα ονόματα των προορισμών (αυτά και μόνο αυτά), στους οποίους θα γίνουν περικοπές πτήσεων, καθώς και τους μήνες (αύξοντα αριθμό μήνα) που θα γίνουν οι περικοπές.

Η λύση λοιπόν που έδωσα για τα ερωτήματα ήταν η εξής:
Δημιούργησα πίνακα ΜΙΝ[15] με τα ελάχιστα κάθε γραμμής, και ανάλογα με το αν το εκάστοτε ελάχιστο ήταν <40 ή όχι, συμπεριελάμβανα τον αντίστοιχο προορισμό στην απάντηση του 3. ή του 5. (ελέγχοντας φυσικά και τις άλλες προυποθέσεις). Έκανα δηλαδή το εξής:
(Σημείωση: Όπου ΜΙΝ, βλ. ΜΙΝ με δείκτη i μέσα σε αγκύλες και όπου ΟΝΟΜΑ, βλ. ΟΝΟΜΑ με δείκτη i μέσα σε αγκύλες. Ομοίως και για το ΜΟ.)

! ερ. 3.
Για i από 1 μέχρι 15
  minimum <- Π[i,1]
  Για j από 2 μέχρι 12
    Αν Π[i,j] < minimum τότε
      minimum <- Π[i,j]
    Τέλος_αν
  Τέλος_επανάληψης
  ΜΙΝ <- minimum
Τέλος_επανάληψης
Για i από 1 μέχρι 15
  Αν MO > 65 τότε
      Εκτύπωσε ΟΝΟΜΑ
  Αλλιώς_αν (ΜΟ >= 40) και (ΜΙΝ >= 40) τότε
  Εκτύπωσε ΟΝΟΜΑ
  Τέλος_αν
Τέλος_επανάληψης

! ερ. 5.
  Για i από 1 μέχρι 15
    Αν (ΜΙΝ < 40) και (MO >= 40) και (MO <= 65) τότε
      Εκτύπωσε ΟΝΟΜΑ, "Περικοπές στους μήνες:"
      Για j από 1 μέχρι 12
        Αν Π[i, j] < 40 τότε   ! με τα παραπάνω ουσιαστικά εξασφαλίσαμε ότι το Αν... θα ικανοποιηθεί τουλάχιστον μία φορά
          Εκτύπωσε j
        Τέλος_αν
      Τέλος_επανάληψης
    Τέλος_αν
  Τέλος_επανάληψης

Για να μην πολυλογώ περισσότερο, αυτή ήταν η λύση που έδωσα, και μου έκανε εντύπωση που όσο κι αν έψαξα για πιο "επίσημες" λύσεις της άσκησης, δεν συνάντησα καμία παρόμοια προσέγγιση. Μήπως κατάλαβα κάτι λάθος? Όμως ακόμη και τώρα, η εκφώνηση μου φαίνεται ξεκάθαρη σ' αυτό που ζητάει...
Και η κυριότερη απορία μου (ή καλύτερα, ανησυχία μου...) είναι η εξής: Θα κόβονταν μονάδες κατά τη διόρθωση της συγκεκριμένης λύσης, και πόσες?

Ευχαριστώ για το χρόνο σας και συγνώμη αν μακρυγόρησα.
Μιχάλης

fragile

Μιχάλη,

Βλέπεις η καλοκαιρινή ραστώνη δεν μας επιτρέπει να σου απαντήσουμε, αλλά με την επάνοδο σιγά σιγά θα έχεις αρκετές απαντήσεις πιστεύω.

Από το site του συναδέλφου του Νικολακάκη του Γιώργου (συγνώμη Γιώργο που "δανείστηκα" την λύση του θέματος αλλά δεν προλάβαινα να την γράψω-καλοκαίρι βλέπεις) - http://users.otenet.gr/~genic/ - σου παραθέτω την λύση του θέματος.

Αν θές μπορείς να πείς τις απορίες σου ώστε να συζητηθούν περαιτέρω στο στέκι

Φιλικά

fragile  ;)


ΘΕΜΑ 4ο

Αλγόριθμος Αεροπορική_Εταιρεία
(1)   Για i από 1 μέχρι 15
Διάβασε Όνομα
Τέλος_επανάληψης
Για i από 1 μέχρι 15
Για j από 1 μέχρι 12
      Αρχή_επανάληψης
      Εμφάνισε ‘Δώσε το ποσοστό πληρότητας της’,j, ‘πτήσης’
(2)            Διάβασε Ποσοστό[i,j]
         Μέχρις_ότου Ποσοστό[i,j] >=0 και Ποσοστό[i,j] <=100
Τέλος_επανάληψης
   Τέλος_επανάληψης
Για i από 1 μέχρι 15
   Sum  0
      Για j από 1 μέχρι 12
         Sum  Sum + Ποσοστό[i,j]
Τέλος_επανάληψης
ΜΟ  Sum/12
   Τέλος_επανάληψης
   Για i από 1 μέχρι 15
(3)      Αν ΜΟ > 65 τότε
      Εμφάνισε ‘Δε θα γίνει περικοπή στους προορισμούς ’,Όνομα
   Τέλος_αν
Τέλος_επανάληψης
Για i από 1 μέχρι 15
(4)      Αν ΜΟ < 40 τότε
      Εμφάνισε ‘Θα γίνει κατάργηση στους προορισμούς :’,Όνομα
   Τέλος_αν
Τέλος_επανάληψης
   Για i από 1 μέχρι 15
(5)      Αν ΜΟ >40 και  ΜΟ <=65 τότε
      Εμφάνισε ‘Θα γίνει περικοπή στους προορισμούς ’,Όνομα
      Για j από 1 μέχρι 12
         Αν Ποσοστό[i,j] < 40 τότε
            Εμφάνισε ‘Η περικοπή θα γίνει τους μήνες’, j
         Τέλος_αν
Τέλος_επανάληψης
   Τέλος_αν
Τέλος_επανάληψης
Τέλος Αεροπορική_Εταιρεία
fragile..........

Michael

Ευχαριστώ fragile για την απάντηση. Το θέμα όπως το βλέπω εγώ είναι:
Έστω ότι έχουμε έναν προορισμό στον οποίο σε κανένα μήνα δεν θα γίνουν περικοπές πτήσεων. Είναι σωστό να τον συμπεριλάβουμε στους προορισμούς στους οποίους θα γίνουν περικοπές πτήσεων? Νομίζω πως όχι, και με αυτό το σκεπτικό έλυσα το θέμα. Αλλιώς, ο αλγόριθμος θα μπορούσε να δίνει ένα τέτοιο αποτέλεσμα:

Θα γίνει περικοπή πτήσεων στους προορισμούς:
Ρόδος. Η περικοπή θα γίνει τους μήνες: 3, 7, 10
Κως. Η περικοπή θα γίνει τους μήνες: 2, 7
Θεσ/νίκη. Η περικοπή θα γίνει τους μήνες:        (κενό)

Η λύση που έδωσα συμπεριλαμβάνει τη Θεσ/νίκη στους προορισμούς στους οποίους δεν θα γίνει καμία περικοπή. Δεν πρόκειται δηλαδή απλώς για διαφορετικό τρόπο λύσης που οδηγεί στο ίδιο αποτέλεσμα, και αυτό ήταν που με ανησύχησε. Θα υπήρχε περίπτωση κάποιος διορθωτής να "κόψει" τις απαντήσεις μου για τα ερωτήματα 3 και 5?

Ευχαριστώ και πάλι.

P.Tsiotakis

Φίλε Μιχάλη, με έστειλες.

Πάντως οι πτήσεις με ΜΟ <= 65 και >= 40 πρέπει να είναι σε μαύρη λίστα για υποψήφιες περικοπες. Αν όμως δε γίνει καμία περικοπή, τότε πρέπει να εκτυπωθούν στην πρώτη λίστα; Μάλλον ναι. Απο την κατανομή των μονάδων της άσκησης, φαίνεται οτι αυτό δεν ήταν στις προθέσεις της επιτροπής εξετάσεων, αλλά έχεις δίκιο.
Απο την εκτύπωση του αλγορίθμου θα δει ο χρήστης το αποτέλεσμα, οτι αφού δεν υπάρχει περικοπή κάποιο μήνα, δεν αλλάζει κάτι!!

Μπορεί όντως μια 12άδα αριθμών να έχουν μέσο όρο στο διάστημα [40, 65] και να μην υπάρχει κανείς < 40 !

Σε μια τέτοια λύση, δε θα κοβόταν μόρια, αρκεί ο βαθμολογητής να καταλάβαινε τη λύση  ;)

Michael

Αγαπητέ Παναγιώτη, η αλήθεια είναι ότι όταν έφτασα στο ερώτημα 3 προβληματίστηκα λίγο. Μου φαινόταν παράξενο να ζητούν όντως κάτι τέτοιο (αν και είναι καταφανέστατα εντός ύλης). Εξέτασα λοιπόν ακόμη και την πιθανότητα να τους "ξέφυγε" και επειδή στο βιβλίο σου δεν φαινόταν η κατανομή των μονάδων στα ερωτήματα του θέματος, είδα τις "επίσημες" εκφωνήσεις. Και πάλι όμως... Το ερώτημα 3 "έπιανε" τρεις μονάδες, ενώ το 5 "έπιανε" οκτώ. Μήπως "περίμεναν" να φτιάξουμε τον πίνακα ΜΙΝ[ 15 ] στο 3, ώστε να τον έχουμε έτοιμο και για τις οκτώ μονάδες του ερωτήματος 5? Εξάλλου, το 5 ήταν έτσι κι αλλιώς πιο σύνθετο απ' το 3. Από την άλλη, η διαφορά των 8-3=5 μονάδων φαινόταν μεγάλη... και αν ήμουν εξεταζόμενος τότε, δεν θα είχα άπειρο χρόνο στη διάθεσή μου για να το φιλοσοφήσω περισσότερο. Θα είχα δύο επιλογές:

1) Να δώσω την λύση που θεωρώ σωστή, ρισκάροντας να είναι διαφορετική από τις λύσεις της επιτροπής εξετάσεων.
2) Να δώσω τη λύση που θεωρώ λανθασμένη, ελπίζοντας ότι το ίδιο ακριβώς λάθος θα έχει κάνει και η επιτροπή εξετάσεων, οπότε ακόμη κι αν ο διορθωτής διαφωνεί με τη λύση μου να έχει τα χέρια του δεμένα.

Εγώ λοιπόν, θα επέλεγα το πρώτο (και γράφοντας πολλά σχόλια). Καλύτερα αυτό, παρά να βλέπω μετά τις επίσημες λύσεις και να τραβάω τα μαλλιά μου...

Και κάτι τελευταίο (και άσχετο): Παναγιώτη, τα βιβλία σου μου χάρισαν πολλές ενδιαφέρουσες ώρες αυτό το καλοκαίρι και σ' ευχαριστώ γι' αυτό.

Μιχάλης

P.Tsiotakis

Υπάρχει και άλλη σκέψη για τη λύση:  μετρητής ανά γραμμή των <40 τιμών και έλεγχος αν η τιμή του είναι 0 ή όχι (αντί να βρούμε το ελάχιστο)

Σαφώς, θα πρότεινα και γω περιγραφή της σκέψης με ταυτόχρονη παράθεση σχολίων στη λύση εφόσον ο μαθητής είναι σίγουρος για αυτό που κάνει.

ΥΓ: σε λίγο καιρό θα δεις νέες ενδιαφέρουσες ασκήσεις στο site, σ' ευχαριστώ για τα καλά σου λόγια..