Η Ρυθμική Γυμναστική είναι ένα όμορφο αλλά και απαιτητικό άθλημα. Επιπλέον, στην κατηγορία των κοριτσιών τα όρια από το χορό είναι δυσδιάκριτα. Οι Ελληνικές Ολυμπιακές ομάδες συγκροτούνται από τη Γυμνασιακή βαθμίδα και συνεχίζουν και μετά το Λύκειο. Στη ρυθμική γυμναστική υπάρχουν Ν κριτές που βαθμολογούν την επίδοση κάθε αθλήτριας. Η τελική βαθμολογία είναι ο μέσος όρος των βαθμολογιών των Ν κριτών. Οι βαθμολογίες είναι πραγματικοί αριθμοί μεταξύ 0 και 10 (με ένα δεκαδικό ψηφίο).

Για παράδειγμα για Ν=10 κριτές που έδωσαν τις παρακάτω βαθμολογίες: 9.1, 6.2, 7.8, 8.2, 8.4, 5.6, 9.2, 9.3, 8.5, 6.4 η μέση βαθμολογία της αθλήτριας είναι: 7.87 (πάντα στρογγυλεύεται σε 2 δεκαδικά ψηφία). Όμως επειδή αυτός ο τρόπος βαθμολογίας θεωρείται άδικος, γιατί μπορεί να επηρεασθεί αρνητικά ή θετικά από πολύ χαμηλές ή πολύ υψηλές βαθμολογίες, έχουν προταθεί δύο άλλες βαθμολογίες. Α) Απόρριψη Κ υψηλών και χαμηλών βαθμολογιών και υπολογισμός της μέσης τιμής από τις υπόλοιπες βαθμολογίες. Στο παραπάνω παράδειγμα αν Κ=2 κόβουμε τις δυο χαμηλότερες (5,6 και 6,2) και τις δυο υψηλότερες (9,2 και 9,3) βαθμολογίες και η βαθμολογία είναι η μέση τιμή  των  υπολοίπων.  Δηλαδή  στο παράδειγμα  μας  η  βαθμολογία  της αθλήτριας είναι: 8.07. Β) Αντικατάσταση για τις Κ χαμηλότερες και τις Κ υψηλότερες με την πλησιέστερη βαθμολογία και υπολογισμός στη συνέχεια του μέσου των βαθμολογιών που προκύπτουν. Δηλαδή για Κ=2 το 5.6 και το 6.2 θα αντικατασταθούν από το 6.4 και τα 9.2 και 9.3 από το 9.1. Οπότε η βαθμολογία θα υπολογισθεί με βαθμολογίες: 9.1, 6.4, 7.8, 8.2, 8.4, 6.4, 9.1, 9.1, 8.5, 6.4 και είναι: 7.94.

Πρόβλημα

Να αναπτύξετε ένα  πρόγραμμα σε Γλώσσα,  το οποίο θα διαβάζει τη βαθμολογία των 20 κριτών, και θα επιστρέφει τη υπολογισμένη βαθμολογία με βάση τις δύο παραπάνω μεθόδους.

Σημείωση:

Τα αναφερόμενα στο πρόβλημα πλήθη δεκαδικών ψηφίων να μη ληφθούν υπόψη στο περιβάλλον της «Γλώσσας» ΕΠΥ, 26ος ΠΔΠ (2014)Β’ Φάση (Θέμα Λυκείου)

ΛΥΣΗ

! Η παραμετροποίηση του Κ αυξάνει αρκετά το βαθμό δυσκολίας της άσκησης
! παρά το ότι η λύση λύνεται με k που αλλάζει ως σταθερά
! Στο αρχικό πρόβλημα, η τιμή k είναι μεταβλητή εισόδου. 
! Προτείνεται η επίλυση του για τιμή k=2.
! Προτείνεται να αποσαφηνιστεί στην εκφώνηση της άσκησης.
! Επίσης, βαθμό πολυπλοκότητας εισάγει τη ταυτόχρονη επίλυση
! και των 2 μεθόδων.

ΠΡΟΓΡΑΜΜΑ ΑΣΚ13_ΠΑΡ_Β_ΠΙΝΑΚΕΣ_ΒΑΘΜΟΛΟΓΙΑ_ΚΡΙΤΩΝ_ΡΥΘΜΙΚΗΣ
ΣΤΑΘΕΡΕΣ
  Ν=10
  k=2 
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: i, j ,θέση
  ΠΡΑΓΜΑΤΙΚΕΣ:  ΒΑΘ[Ν], μέγιστος, ελάχιστος, telikos_A,  telikos_B, s, temp 
ΑΡΧΗ
  ΓΡΑΨΕ 'Δώστε Βαθμούς'
  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
    ΔΙΑΒΑΣΕ ΒΑΘ[i]  
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

! τα σχόλια εξηγούν τη περίπτωση k=2 
! Μέθοδος Α
  ! στις θέσεις 1, 2 και 3 μεταφέρω τους 3 μεγαλύτερους
  ! σε φθίνουσα σειρά
  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ k+1

    μέγιστος <-- ΒΑΘ[i]
    ΓΙΑ j ΑΠΟ i ΜΕΧΡΙ Ν
      ΑΝ ΒΑΘ[j] > μέγιστος ΤΟΤΕ
        μέγιστος <-- ΒΑΘ[j]
        θέση <-- j
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

    ΑΝ μέγιστος <> ΒΑΘ[i] ΤΟΤΕ
      temp <-- ΒΑΘ[i]  
      ΒΑΘ[i] <-- ΒΑΘ[θέση]
      ΒΑΘ[θέση] <-- temp
    ΤΕΛΟΣ_ΑΝ                    

  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

 ! στις θέσεις 4,5 και 6 μεταφέρω τους 3 μικρότερους
 ! σε αύξουσα σειρά
  ΓΙΑ i ΑΠΟ k+2 ΜΕΧΡΙ k+4      

    ελάχιστος <-- ΒΑΘ[i]
    ΓΙΑ j ΑΠΟ i ΜΕΧΡΙ Ν
      ΑΝ ΒΑΘ[j] < ελάχιστος ΤΟΤΕ
        ελάχιστος <-- ΒΑΘ[j]
        θέση <-- j
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ     

    ΑΝ ελάχιστος <> ΒΑΘ[i] ΤΟΤΕ
      temp <-- ΒΑΘ[i]  
      ΒΑΘ[i] <-- ΒΑΘ[θέση]
      ΒΑΘ[θέση] <-- temp
    ΤΕΛΟΣ_ΑΝ        

  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  ! υπολογίζω το μέσο όρο από τη θέση 6 και μετά
  ! αποκλείοντας τις θέσεις 1,2,4,5
  s <-- ΒΑΘ[k+1]     ! προσθέτω τον όρο 3                
  ΓΙΑ i ΑΠΟ k+4 ΜΕΧΡΙ Ν            
    s <-- s+ ΒΑΘ[i]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  telikos_A <-- s / (Ν-4)
  ΓΡΑΨΕ telikos_A 

  !Μέθοδος Β
  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ k
    ΒΑΘ[i] <-- ΒΑΘ[k+1]
    ΒΑΘ[k+1+i] <-- ΒΑΘ[2*k+2]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

 ! για k=2 γίνονται οι παρακάτω αντικαταστάσεις:
 ! ΒΑΘ[1] <-- ΒΑΘ[3]
 ! ΒΑΘ[2] <-- ΒΑΘ[3]
 ! ΒΑΘ[4] <-- ΒΑΘ[6]
 ! ΒΑΘ[5] <-- ΒΑΘ[6]

  ! υπολογίζω το μέσο όρο
  s <-- 0
  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
    s <-- s+ ΒΑΘ[i]     
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  telikos_B <-- s / Ν
  ΓΡΑΨΕ telikos_B

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ