Πέμπτη, 14 Δεκεμβρίου 2017

Ραδιοφωνικός Σταθμός

Βαθμός Δυσκολίας:
5/5
Εκφώνηση Ασκησης: 

 

Ένας γνωστός ραδιοφωνικός σταθμός κάνει μια έρευνα για τον πιο δημοφιλή καλλιτέχνη. Παίρνει τηλέφωνο ακροατές και τους ρωτά το όνομα του καλλιτέχνη που προτιμούν. Το πλήθος των ακροατών που θα τηλεφωνήσει είναι 2000. Σας ζητά να γράψετε αλγόριθμο ο οποίος θα αποθηκεύσει σε έναν πίνακα ΨΗΦ[2000] τις προτιμήσεις των ακροατών και θα υπολογίζει και θα εμφανίζει 

Α) τον καλλιτέχνη με τις περισσότερες ψήφους. (θεωρήστε οτι είναι μοναδικός) 

Β) τους 10 καλλιτέχνες με τις λιγότερες ψήφους.

Επιμέλεια: mstamos.gr

Λύση Άσκησης: 
 
Αλγόριθμος Ραδιοφωνικός_Σταθμός
 
Για ι από 1 μέχρι 2000
  Εμφάνισε "Πληκτρολόγησε το όνομα του καλλιτέχνη που σου αρέσει"
  Διάβασε ΚΑΛ[ι] 
Τέλος_επανάληψης
 
!Ταξινομούμε τον πίνακα κατά αύξουσα σειρά
 
Για ι από 2 μέχρι 2000
  Για j από 2000 μέχρι ι με_βήμα -1
    Αν ΚΑΛ[j] < ΚΑΛ[j - 1] τότε
      temp ← ΚΑΛ[j] 
      ΚΑΛ[j] ← ΚΑΛ[j - 1] 
      ΚΑΛ[j - 1] ← temp
    Τέλος_αν
  Τέλος_επανάληψης
Τέλος_επανάληψης
 
!Υπολογίζουμε για κάθε καλλιτέχνη το πλήθος των ψήφων που έχει πάρει
 
ζ ← 1
πλ ← 1
Για ι από 1 μέχρι 1999
  Αν ΚΑΛ[ι] ≠ ΚΑΛ[ι + 1] τότε
 
    ΚΑΛΛΙΤΕΧΝ[ζ] ← ΚΑΛ[ι] 
    ΠΛ_ΨΗΦΩΝ[ζ] ← πλ
    πλ ← 1
    ζ ← ζ + 1
  αλλιώς
    πλ ← πλ + 1
  Τέλος_αν
Τέλος_επανάληψης
 
!Αποθηκεύουμε μόνοι μας τον τελευταίο καλλιτέχνη γιατί η πιο πάνω επανάληψη δεν έχει πρόσβαση στο τελευταίο στοιχείο του πίνακα.
ΚΑΛΛΙΤΕΧΝ[ζ] ← ΚΑΛ[2000] 
ΠΛ_ΨΗΦΩΝ[ζ] ← πλ
 
!Ταξινομούμε τον πίνακα ΚΑΛΛΙΤΕΧΝ με βάση τον πίνακα ΠΛ_ΨΗΦΩΝ κατά φθίνουσα σειρά ώστε οι καλλιτέχνες με τις περισσότερες ψήφους να βρεθούν στην αρχή του πίνακα για να μπορέσουμε να εμφανίσουμε τα αποτελέσματα που θέλουμε. Η μεταβλητή ζ μας δείχνει το πλήθος των στοιχείων στους πίνακες ΚΑΛΛΙΤΕΧΝ και ΠΛ_ΨΗΦΩΝ.
 
Για ι από 1 μέχρι ζ
  Για j από ζ μέχρι ι με_βήμα -1
    Αν ΠΛ_ΨΗΦΩΝ[j] > ΠΛ_ΨΗΦΩΝ[j - 1] τότε
      tmp ← ΠΛ_ΨΗΦΩΝ[j] 
      ΠΛ_ΨΗΦΩΝ[j] ← ΠΛ_ΨΗΦΩΝ[j - 1] 
      ΠΛ_ΨΗΦΩΝ[j - 1] ← tmp
      tmp1 ← ΚΑΛΛΙΤΕΧΝ[j] 
      ΚΑΛΛΙΤΕΧΝ[j] ← ΚΑΛΛΙΤΕΧΝ[j - 1] 
      ΚΑΛΛΙΤΕΧΝ[j - 1] ← tmp1
    Τέλος_αν
  Τέλος_επανάληψης
Τέλος_επανάληψης
 
Εμφάνισε "Ο καλλιτέχνης με τις περισσότερες ψήφους είναι ο/η ", ΚΑΛΛΙΤΕΧΝ[1] 
Εμφάνισε "Οι 10 καλλιτέχνες με τις λίγοτερες ψήφους είναι οι: "
Για ι από 1991 μέχρι 2000
  Εμφάνισε ΚΑΛΛΙΤΕΧΝ[ι] 
Τέλος_επανάληψης
 
Τέλος Ραδιοφωνικός_Σταθμός