Ένας διαγωνισμός τραγουδιού διεξάγεται σε δύο φάσεις.

Στην πρώτη φάση γίνεται ακρόαση των 45 τραγουδιών που διαγωνίζονται και κάθε μέλος της επταμελούς κριτικής επιτροπής βαθμολογεί το κάθε τραγούδι με βαθμό από 1 έως 10.

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

Να γραφεί αλγόριθμος, ο οποίος:

Δ1.        Για κάθε τραγούδι να διαβάζει τον τίτλο του και τον βαθμό που έδωσε κάθε κριτής. Δεν απαιτείται έλεγχος εγκυρότητας.

Μονάδες 3

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

Μονάδες 2

Δ3. Να βρίσκει και να εμφανίζει τους τίτλους των τραγουδιών που προκρίνονται στη δεύτερη φάση του διαγωνισμού. Αν κανένα τραγούδι δεν προκρίνεται στη δεύτερη φάση, να εμφανίζει κατάλληλο μήνυμα.

Μονάδες 6

Δ4.  Να βρίσκει και να εμφανίζει το πλήθος των κριτών που έδωσαν τον μέγιστο βαθμό τους σε ένα μόνο τραγούδι.

Μονάδες 9

Τα θέματα σε pdf, 2015, Μαΐου-Ιουνίου, Ημερήσια

ΛΥΣΗ

Thema_d_2015_maiou_imer_demo_data

ΠΡΟΓΡΑΜΜΑ θΕΜΑΔ_ΜΑΙΟΥ_ΗΜΕΡ_2015
ΜΕΤΑΒΛΗΤΕΣ
 ΑΚΕΡΑΙΕΣ:i,j, ΒΑΘ[45,7], ΣΒ[45], ΜέγιστοΚριτή[7], count, κριτές1μεγ
 ΛΟΓΙΚΕΣ: Άνω5, ΕπόμενηΦάση
 ΧΑΡΑΚΤΗΡΕΣ: ΟΝ[45]
ΑΡΧΗ
! Δ1. Εισαγωγή δεδομένων
 ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 45
     ΔΙΑΒΑΣΕ ΟΝ[i]
     ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 7
         ΔΙΑΒΑΣΕ ΒΑΘ[i,j]
     ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

! Δ2. Αρχικοποίηση πίνακα μετρητή
 ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 45
     ΣΒ[i] <-- 0
 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

! Υπολογισμός συνολικής βαθμολογίας κάθε τραγουδιού
 ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 45
     ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 7
         ΣΒ[i] <-- ΣΒ[i] + ΒΑΘ[i,j]
     ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

! Εμφάνιση στη οθόνη της συνολικής βαθμολογίας
 ΓΡΑΨΕ 'ΣΥΝΟΛΙΚΗ ΒΑΘΜΟΛΟΓΙΑ'
 ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 45 
     ΓΡΑΨΕ i, '. ', ΣΒ[i]
 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

! Δ3
 ΕπομενηΦάση <-- ΨΕΥΔΗΣ
 ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 45
     Άνω5 <-- ΑΛΗΘΗΣ
     ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 7
         ΑΝ (ΒΑΘ[i,j]) < 5 ΤΟΤΕ
             Άνω5 <-- ΨΕΥΔΗΣ
         ΤΕΛΟΣ_ΑΝ
     ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
     ΑΝ Άνω5= ΑΛΗΘΗΣ ΚΑΙ ΣΒ[i]>50 ΤΟΤΕ
        ΓΡΑΨΕ 'ΠΡΟΚΡΙΝΟΝΤΑΙ ΣΤΗΝ ΕΠΟΜΕΝΗ ΦΑΣΗ: ', ΟΝ[i]
        ΑΝ ΕπόμενηΦάση = ΨΕΥΔΗΣ ΤΟΤΕ 
           ΕπομενηΦάση <-- ΑΛΗΘΗΣ
        ΤΕΛΟΣ_ΑΝ
      ΤΕΛΟΣ_ΑΝ
 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

 ΑΝ ΕπόμενηΦάση = ΨΕΥΔΗΣ τότε
    ΓΡΑΨΕ 'ΔΕΝ ΠΡΟΚΡΙΘΗΚΕ ΤΡΑΓΟΥΔΙ ΣΤΗΝ ΕΠΟΜΕΝΗ ΦΑΣΗ'
 ΤΕΛΟΣ_ΑΝ

! Δ4
 ! Πίνακας Μεγίστων Βαθμολογίας ανά Κριτή
 ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 7
     ΜέγιστοΚριτή[j] <-- ΒΑΘ[1,j] !Έστω αρχικό max η πρώτη στήλη
     ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 45
         ΑΝ ΒΑΘ[i,j] > ΜέγιστοΚριτή[j] ΤΟΤΕ
            ΜέγιστοΚριτή[j] <-- ΒΑΘ[i,j]
         ΤΕΛΟΣ_ΑΝ
     ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

! αφού έχουμε βρει τα μέγιστα σε παράλληλο πίνακα,
! αναζητούμε σε ποιες στήλες (κριτές) υπάρχουν μόνο μια φορά

 κριτές1μεγ <-- 0 ! που έχουν βαθμολογίσει μόνο 1 τραγούδι με τον μέγιστο βαθμό
 ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 7
     count <-- 0
     i <-- 1
    ΌΣΟ i < 45 ΚΑΙ count<=1 ΕΠΑΝΑΛΑΒΕ
        ΑΝ ΒΑΘ[i,j] > ΜέγιστοΚριτή[j] ΤΟΤΕ
           count <-- count+1
        ΤΕΛΟΣ_ΑΝ
    i <-- i + 1
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
    ! Αν η προηγούμενη επανάληψη δε βρήκε διπλό μέγιστο, προσμετρώ τον κριτή
    ΑΝ count <=1 ΤΟΤΕ
       κριτές1μεγ <-- κριτές1μεγ + 1
    ΤΕΛΟΣ_ΑΝ
 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
 ΓΡΑΨΕ 'Κριτές που που έχουν βαθμολογίσει μόνο 1 τραγούδι με τον μέγιστο βαθμό: ', κριτές1μεγ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ