Τώρα είναι Πέμ 28 Μαρ 2024 11:55 pm

Όλοι οι χρόνοι είναι UTC + 2 ώρες [ DST ]




Δημιουργία νέου θέματος Απαντήστε στο θέμα  [ 3 Δημοσιεύσεις ] 
Συγγραφέας Μήνυμα
 Θέμα δημοσίευσης: Ημερήσιο - Θέμα 4
ΔημοσίευσηΔημοσιεύτηκε: Τρί 01 Ιουν 2004 05:33 pm 
Χωρίς σύνδεση
Διαχειριστής

Εγγραφή: Παρ 28 Φεβ 2003 06:10 pm
Δημοσιεύσεις: 84
Όπως συμβαίνει (σχεδόν) πάντα, υπάρχουν πολλοί τρόποι για να λυθεί το 4ο Θέμα. Παρακάτω παραθέτω τις δύο ακραίες μεθόδους, δηλαδή τη μεγάλη-αλλά-εύκολη και τη μικρή-αλλά-δύσκολη.

1η ΜΕΘΟΔΟΣ : "Μεγάλη-αλλά-εύκολη"

Για να απαντηθεί το (πιο δύσκολο απ' όλα) ερώτημα δ' αρκεί, πριν από τη φθίνουσα ταξινόμηση με κριτήριο τους μέσους όρους, να γίνει αύξουσα (=αλφαβητική) ταξινόμηση με κριτήριο τα ονόματα. Δηλαδή θα πραγματοποιηθούν δύο διαδοχικές ταξινομήσεις φυσσαλίδας.
Για την εύρεση της τιμής και του πλήθους των μεγίστων μέσων όρων, δε λαμβάνεται υπόψη το γεγονός ότι ο πίνακας ΜΟ είναι ήδη ταξινομημένος, αλλά ακολουθούνται οι τυπικές και χιλιοειπωμένες τεχνικές...

Syntax: [ Download ] [ Hide ]
ΠΡΟΓΡΑΜΜΑ Πανελλήνιες_2004__Θέμα_4ο

ΜΕΤΑΒΛΗΤΕΣ
  ΧΑΡΑΚΤΗΡΕΣ: ονόματα[500], temp_ονομ
  ΑΚΕΡΑΙΕΣ: βαθμοί[500,3], i, j, πλήθος
  ΠΡΑΓΜΑΤΙΚΕΣ: ΜΟ[500], temp_MO, max

ΑΡΧΗ

  ! Ερώτημα (α)

  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 500
    ΔΙΑΒΑΣΕ ονόματα[i]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  ! Ερώτημα (β)

  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 500
    ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 3
      ΔΙΑΒΑΣΕ βαθμοί[i,j]
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  ! Ερώτημα (γ)

  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 500
    ΜΟ[i] <-- 0
    ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 3
      ΜΟ[i] <-- ΜΟ[i]+βαθμοί[i,j]
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
    ΜΟ[i] <-- ΜΟ[i]/3
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  ! Ερώτημα (δ)

  ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 500
    ΓΙΑ j ΑΠΟ 500 ΜΕΧΡΙ i ΜΕ ΒΗΜΑ -1
      ΑΝ ονόματα[j-1]>ονόματα[j] ΤΟΤΕ
        temp_ονομ <-- ονόματα[j-1]
        ονόματα[j-1] <-- ονόματα[j]
        ονόματα[j] <-- temp_ονομ
        temp_MO <-- ΜΟ[j-1]
        ΜΟ[j-1] <-- ΜΟ[j]
        ΜΟ[j] <-- temp_MO
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 500
    ΓΙΑ j ΑΠΟ 500 ΜΕΧΡΙ i ΜΕ ΒΗΜΑ -1
      ΑΝ ΜΟ[j-1]<ΜΟ[j] ΤΟΤΕ
        temp_MO <-- ΜΟ[j-1]
        ΜΟ[j-1] <-- ΜΟ[j]
        ΜΟ[j] <-- temp_MO
        temp_ονομ <-- ονόματα[j-1]
        ονόματα[j-1] <-- ονόματα[j]
        ονόματα[j] <-- temp_ονομ
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 500
    ΓΡΑΨΕ ονόματα[i], ΜΟ[i]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  ! Ερώτημα (ε)

  max <-- ΜΟ[1]
  ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 500
    ΑΝ ΜΟ[i]>max ΤΟΤΕ
      max <-- ΜΟ[i]
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  πλήθος <-- 0
  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 500
    ΑΝ ΜΟ[i]=max ΤΟΤΕ
      πλήθος <-- πλήθος+1
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΓΡΑΨΕ πλήθος

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Πανελλήνιες_2004__Θέμα_4ο

 


2η ΜΕΘΟΔΟΣ : "Μικρή-αλλά-δύσκολη"

Εδώ το ερώτημα δ' θα απαντηθεί με τροποποίηση του τυπικού κώδικα φυσσαλίδας. Τροποποίηση που είναι πάρα πολύ δύσκολο να σκεφτεί κάποιος μαθητής που δεν έχει διδαχθεί κάτι τέτοιο.
Για την εύρεση της τιμής και του πλήθους των μεγίστων μέσων όρων, λαμβάνεται υπόψη ότι ο πίνακας ΜΟ είναι ήδη ταξινομημένος σε φθίνουσα σειρά, οπότε οι μέγιστες τιμές βρίσκονται στις πρώτες θέσεις του...

Syntax: [ Download ] [ Hide ]
ΠΡΟΓΡΑΜΜΑ Πανελλήνιες_2004__Θέμα_4ο

ΜΕΤΑΒΛΗΤΕΣ
  ΧΑΡΑΚΤΗΡΕΣ: ονόματα[500], temp_ονομ
  ΑΚΕΡΑΙΕΣ: βαθμοί[500,3], i, j, πλήθος
  ΠΡΑΓΜΑΤΙΚΕΣ: ΜΟ[500], temp_MO, max

ΑΡΧΗ

  ! Ερώτημα (α)

  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 500
    ΔΙΑΒΑΣΕ ονόματα[i]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  ! Ερώτημα (β)

  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 500
    ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 3
      ΔΙΑΒΑΣΕ βαθμοί[i,j]
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  ! Ερώτημα (γ)

  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 500
    ΜΟ[i] <-- 0
    ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 3
      ΜΟ[i] <-- ΜΟ[i]+βαθμοί[i,j]
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
    ΜΟ[i] <-- ΜΟ[i]/3
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  ! Ερώτημα (δ)

  ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 500
    ΓΙΑ j ΑΠΟ 500 ΜΕΧΡΙ i ΜΕ ΒΗΜΑ -1
      ΑΝ ΜΟ[j-1]<ΜΟ[j] ΤΟΤΕ
        temp_MO <-- ΜΟ[j-1]
        ΜΟ[j-1] <-- ΜΟ[j]
        ΜΟ[j] <-- temp_MO
        temp_ονομ <-- ονόματα[j-1]
        ονόματα[j-1] <-- ονόματα[j]
        ονόματα[j] <-- temp_ονομ
      ΑΛΛΙΩΣ_ΑΝ (ΜΟ[j-1]=ΜΟ[j]) ΚΑΙ (ονόματα[j-1]>ονόματα[j]) ΤΟΤΕ
        temp_ονομ <-- ονόματα[j-1]
        ονόματα[j-1] <-- ονόματα[j]
        ονόματα[j] <-- temp_ονομ
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 500
    ΓΡΑΨΕ ονόματα[i], ΜΟ[i]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  ! Ερώτημα (ε)

  max <-- ΜΟ[1]

  i <-- 1
  πλήθος <-- 0
  ΟΣΟ (i<=500) ΚΑΙ (ΜΟ[i]=max) ΕΠΑΝΑΛΑΒΕ
    πλήθος <-- πλήθος+1
    i <-- i+1
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΓΡΑΨΕ πλήθος

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Πανελλήνιες_2004__Θέμα_4ο
 


Οι παραπάνω απαντήσεις είναι σε μορφή ΠΡΟΓΡΑΜΜΑΤΩΝ ώστε να είναι εκτελέσιμες στη ΓλωσσοΜάθεια. Για να μετατραπούν σε ΑΛΓΟΡΙΘΜΟΥΣ αρκούν οι αντικαταστάσεις:
    1) ΠΡΟΓΡΑΜΜΑ -----> Αλγόριθμος
    2) ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ -----> Τέλος
    3) Δε χρειάζονται οι δηλώσεις μεταβλητών και η εντολή ΑΡΧΗ
    4) Οι 3άδες εκχωρήσεων που αντιμεταθέτουν τιμές μπορούν εναλλακτικά να αντικατασταθούν από εντολές "Αντιμετάθεσε ..."


Τελευταία επεξεργασία από SpiN και Δευτ 09 Απρ 2007 09:05 pm, έχει επεξεργασθεί 4 φορά/ες συνολικά

Κορυφή
 Προφίλ  
Απάντηση με παράθεση  
 Θέμα δημοσίευσης:
ΔημοσίευσηΔημοσιεύτηκε: Τρί 01 Ιουν 2004 06:29 pm 
Χωρίς σύνδεση

Εγγραφή: Πέμ 22 Απρ 2004 11:16 am
Δημοσιεύσεις: 60
Τοποθεσία: Θεσσαλονίκη
Φίλε Σπύρο, ας παραθέσω και τη δική μου άποψη για το δ΄ ερώτημα.

Syntax: [ Download ] [ Hide ]
  ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 500
    ΓΙΑ j ΑΠΟ 500 ΜΕΧΡΙ i ΜΕ ΒΗΜΑ -1
      ΑΝ (ΜΟ[j-1]<ΜΟ[j]) H ((ΜΟ[j-1]=ΜΟ[j]) ΚΑΙ (ονόματα[j-1]>ονόματα[j])) ΤΟΤΕ
        temp_ΜΟ <-- ΜΟ[j-1]
        ΜΟ[j-1] <-- ΜΟ[j]
        ΜΟ[j] <-- temp_ΜΟ
        temp_ονομ <-- ονόματα[j-1]
        ονόματα[j-1] <-- ονόματα[j]
        ονόματα[j] <-- temp_ονομ
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
 


Στατιστικά εκτελεί μερικές αντιμεταθέσεις παραπάνω στον πίνακα ΜΟ, αλλα συντομεύεται λιγουλάκι ο κώδικας.

Ενώ το ε΄ ερώτημα υλοποιείται και όπως παρακάτω, εφόσον δεχθούμε ότι για το ζητούμενο πλήθος ισχύει σταστικά: πλήθος <Ν με Ν=500.

Syntax: [ Download ] [ Hide ]
  πλήθος <-- 1
  ΟΣΟ MO[πλήθος+1]=MO[1] ΕΠΑΝΑΛΑΒΕ
    πλήθος <-- πλήθος+1
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΓΡΑΨΕ πλήθος
 


Συντόμευση του κώδικα χωρίς μεγάλη διαδάκτική αξία..... το ομολογώ ! :(

Επιτέλους είδαμε και ένα "έξυπνο υποερώτημα" στο 4ο Θέμα (το δ' εννοώ) . Το οποίο φυσικά αξιολογείται με 7 μονάδες, όταν το γ΄ υποερώτημα του 3ου Θέματος συγκέντρωνε 11 μονάδες !!!!! Μάλον ήταν πιο δύσκολο και δε το καταλάβαμε εμείς...... :evil: "Keep Walking" αγαπητή επιτροπή θεμάτων

Φρειδερίκος Κώστας


Κορυφή
 Προφίλ  
Απάντηση με παράθεση  
 Θέμα δημοσίευσης:
ΔημοσίευσηΔημοσιεύτηκε: Τρί 01 Ιουν 2004 07:50 pm 
Χωρίς σύνδεση
Διαχειριστής

Εγγραφή: Παρ 28 Φεβ 2003 06:10 pm
Δημοσιεύσεις: 84
Η αλήθεια είναι πως το 4δ άξιζε (σε δυσκολία) όσο όλα τα υπόλοιπα θέματα μαζί.
Συμφωνώ απόλυτα ότι στο μέλλον θα πρέπει τα προβλήματα να διαθέτουν περισσότερη φαντασία και επινοητικότητα.
Το 4δ λόγω δυσκολίας προσεγγίζει τα όρια του προβληματικού. Γιατί είναι μετρημένοι αυτοί που μπόρεσαν να το σκεφτούν χωρίς να το έχουν διδαχθεί αυτούσιο.
Παρ' όλα αυτά, τάραξε τα λιμνάζοντα νερά που είχαν δημιουργηθεί λόγω των συνεχών ανιαρών και τυποποιημένων θεμάτων.
Οπότε πιστεύω ότι έκανε περισσότερο καλό παρά κακό...


Κορυφή
 Προφίλ  
Απάντηση με παράθεση  
Τελευταίες δημοσιεύσεις:  Ταξινόμηση ανά  
Δημιουργία νέου θέματος Απαντήστε στο θέμα  [ 3 Δημοσιεύσεις ] 

Όλοι οι χρόνοι είναι UTC + 2 ώρες [ DST ]


Μέλη σε σύνδεση

Μέλη σε αυτή την Δ. Συζήτηση : Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης


Δεν μπορείτε να δημοσιεύετε νέα θέματα σε αυτή τη Δ. Συζήτηση
Δεν μπορείτε να απαντάτε σε θέματα σε αυτή τη Δ. Συζήτηση
Δεν μπορείτε να επεξεργάζεστε τις δημοσιεύσεις σας σε αυτή τη Δ. Συζήτηση
Δεν μπορείτε να διαγράφετε τις δημοσιεύσεις σας σε αυτή τη Δ. Συζήτηση
Δεν μπορείτε να επισυνάπτετε αρχεία σε αυτή τη Δ. Συζήτηση

Αναζήτηση για:
Μετάβαση σε:  
cron
Προβολές: