Κυριακή 9 Μαρτίου 2014

ΛΥΣΕΙΣ ΣΤΟ 2ο ΣΕΤ ΑΣΚΗΣΕΩΝ

Αλγόριθμος ασκ1σετ2
Δεδομένα // ΕΠ //
ΜΑΧ  ΕΠ[1]
ΧΡ_Δ_ΜΑΧ  1
ΜΙΝ  ΕΠ[1]
ΧΡ_Δ_ΜΙΝ  1
Για i από 2 μέχρι 6
    Αν ΕΠ[i] > ΜΑΧ τότε
        ΜΑΧ  ΕΠ[i]
        ΧΡ_Δ_ΜΑΧ  i
    Τέλος_αν
    Αν ΕΠ[i] < ΜΙΝ τότε
        ΜΙΝ  ΕΠ[i]
        ΧΡ_Δ_ΜΙΝ  i
    Τέλος_αν
Τέλος_επανάληψης
Εμφάνισε 'μεγαλύτερη επισκεψιμότητα: ', ΧΡ_Δ_ΜΑΧ + 7, ':31-', ΧΡ_Δ_ΜΑΧ + 8, ':30'
Εμφάνισε 'μικρότερη επισκεψιμότητα: ', ΧΡ_Δ_ΜΙΝ + 7, ':31-', ΧΡ_Δ_ΜΙΝ + 8, ':30'
ΠΟΣ  ΜΑΧ - ΜΙΝ
Εμφάνισε ΠΟΣ, '%'
Τέλος ασκ1σετ2 


Αλγόριθμος ασκ2σετ2
Δεδομένα //AUTO , ΑΞΙΟΛ//
Αρχή_επανάληψης
       Διάβασε αρ1
Μέχρις_ότου αρ1  1 και αρ1  8
Αρχή_επανάληψης
       Διάβασε αρ2
Μέχρις_ότου αρ2  1 και αρ2  8
Αρχή_επανάληψης
       Διάβασε αρ3
Μέχρις_ότου αρ3  1 και αρ3  8
max1  ΑΞΙΟΛ[αρ1,1]
μοντ1  AUTO[1]
Για j από 2 μέχρι 50
      Αν ΑΞΙΟΛ[αρ1,j] > max1 τότε
          max1  ΑΞΙΟΛ[αρ1,j]
          μοντ1  j
      Τέλος_αν
Τέλος_επανάληψης
Εμφάνισε μοντ1
max2  ΑΞΙΟΛ[αρ2,1]
μοντ2  AUTO[1]
Για j από 2 μέχρι 50
      Αν ΑΞΙΟΛ[αρ2,j] > max2 τότε
          max2  ΑΞΙΟΛ[αρ2,j]
          μοντ2  j
      Τέλος_αν
Τέλος_επανάληψης
Εμφάνισε μοντ2
max3  ΑΞΙΟΛ[αρ3,1]
μοντ3  AUTO[1]
Για j από 2 μέχρι 50
      Αν ΑΞΙΟΛ[αρ3,j] > max3 τότε
          max3  ΑΞΙΟΛ[αρ3,j]
          μοντ3  j
      Τέλος_αν
Τέλος_επανάληψης
Εμφάνισε μοντ3
Τέλος ασκ2σετ2


Αλγόριθμος ασκ3σετ2
Για i από 1 μέχρι 8
     Διάβασε ΟΝ[i]
     Για j από 1 μέχρι 10
          Διάβασε ΧΡ[i,j]
     Τέλος_επανάληψης
Τέλος_επανάληψης
min  10^20
max  -1
Για i από 1 μέχρι 8
      time  0
      Για j από 1 μέχρι 10
           time  time + ΧΡ[i,j]
      Τέλος_επανάληψης
      Αν time > max τότε
          max  time
          τελευταίος  i
      Τέλος_αν
      Αν time < min τότε
          min  time
          νικητής  i
      Τέλος_αν
Τέλος_επανάληψης
Εμφάνισε ΟΝ[νικητής]
Εμφάνισε ΟΝ[τελευταίος]
Τέλος ασκ3σετ2



...αν στην παραπάνω άσκηση (3) δε γνωρίζει ο μαθητής πώς να αποφύγει τη δημιουργία περιττού πίνακα, τότε για να βρει τα δύο ονόματα μπορεί να δημιουργήσει νέο πίνακα time[8] ο οποίος περιέχει τους συνολικούς χρόνους των 8 αθλητών από τους 10 γύρους που έτρεξαν....η ιστορία με τους περιττούς πίνακες είναι μεγάλη...εδώ μπορεί κάλλιστα κάποιος να ισχυριστεί ότι δεν πειράζει η δημιουργία πίνακα μιας και τρέχουμε αλγόριθμο ή κάποιος άλλος να θεωρήσει (ορθώς κατά την άποψή μου στη συγκεκριμένη περίπτωση) ότι είναι μικρών διαστάσεων ο πίνακας. Έτσι, θα έχουμε:
.
.
Για i από 1 μέχρι 8
      time[i]  0
      Για j από 1 μέχρι 10
           time[i]  time[i] + ΧΡ[i,j]
      Τέλος_επανάληψης
Τέλος_επανάληψης

min ← time[1]
posmin  ← 1
max  time[1]
posmax ← time[1]
Για i από 2 μέχρι 8
      Αν time > max τότε
          max  time
          posmax  i
      Τέλος_αν
      Αν time < min τότε
          min  time
          posmin  i
      
      Τέλος_αν
 Τέλος_επανάληψης
Εμφάνισε ΟΝ[posmin]
Εμφάνισε ΟΝ[posmax]

.
.

ΠΡΟΓΡΑΜΜΑ ασκ4σετ2
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: i, parking
  ΠΡΑΓΜΑΤΙΚΕΣ: απ[22], τ[22], minprice
ΑΡΧΗ
    ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 22
       ΔΙΑΒΑΣΕ απ[i], τ[i]
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
    parking 
← 0
    minprice 
 10^60
    ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 22
         ΑΝ απ[i] >= 600 ΚΑΙ απ[i] <= 1400 ΤΟΤΕ
              ΑΝ τ[i] < minprice ΤΟΤΕ
                   minprice 
 τ[i]
                   parking 
 i
              ΤΕΛΟΣ_ΑΝ
          ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
    ΑΝ parking = 0 ΤΟΤΕ
         ΓΡΑΨΕ 'κανένα parking'
    ΑΛΛΙΩΣ
         ΓΡΑΨΕ τ[parking]
    ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ



Αλγόριθμος ασκ5σετ2
Για i από 1 μέχρι 22
     Διάβασε ονεπ[i], λ[i], θ[i]
Τέλος_επανάληψης
maxεπ  -1
maxαμ  -1
maxκ  -1
maxτ  -1
Για i από 1 μέχρι 22
     Αν θ[i] = 'Ε' τότε
          Αν λ[i] > maxεπ τότε
              maxεπ  λ[i]
         Τέλος_αν
     αλλιώς_αν θ[i] = 'Α' τότε
         Αν λ[i] > maxαμ τότε
             maxαμ  λ[i]
         Τέλος_αν
     αλλιώς_αν θ[i] = 'Κ' τότε
         Αν λ[i] > maxκ τότε
             maxκ  λ[i]
         Τέλος_αν
     αλλιώς
         Αν λ[i] > maxτ τότε
             maxτ  λ[i]
         Τέλος_αν
     Τέλος_αν
Τέλος_επανάληψης
Εμφάνισε 'περισσότερα λεπτά επιθετικών:'
Για i από 1 μέχρι 22
     Αν θ[i] = 'Ε' τότε
         Αν λ[i] = maxεπ τότε
             Εμφάνισε ονεπ[i]
         Τέλος_αν
     Τέλος_αν
Τέλος_επανάληψης
Εμφάνισε 'περισσότερα λεπτά αμυντικών:'
Για i από 1 μέχρι 22
     Αν θ[i] = 'Α' τότε
         Αν λ[i] = maxαμ τότε
             Εμφάνισε ονεπ[i]
         Τέλος_αν
     Τέλος_αν
Τέλος_επανάληψης
Εμφάνισε 'περισσότερα λεπτά μέσων:'
Για i από 1 μέχρι 22
     Αν θ[i] = 'Κ' τότε
         Αν λ[i] = maxκ τότε
             Εμφάνισε ονεπ[i]
        Τέλος_αν
     Τέλος_αν
Τέλος_επανάληψης
Εμφάνισε 'περισσότερα λεπτά τερματοφυλάκων:'
Για i από 1 μέχρι 22
     Αν θ[i] = 'τ' τότε
         Αν λ[i] = maxτ τότε
             Εμφάνισε ονεπ[i]
         Τέλος_αν
     Τέλος_αν
Τέλος_επανάληψης
Τέλος ασκ5σετ2




ΠΡΟΓΡΑΜΜΑ elections
ΜΕΤΑΒΛΗΤΕΣ
  ΠΡΑΓΜΑΤΙΚΕΣ: ποσ
  ΑΚΕΡΑΙΕΣ: i, j, max, posmax, ψηφ[25, 36], s[25], s_all
  ΧΑΡΑΚΤΗΡΕΣ: κομ[25]
ΑΡΧΗ
  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 25
       ΔΙΑΒΑΣΕ κομ[i]
       ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 36
            ΔΙΑΒΑΣΕ ψηφ[i, j]
       ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  max 
 -1
  s_all 
 0   ! αθροιστής ψήφων όλων των κομμάτων
  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 25
       s[i] 
 0  ! αθροιστής ψήφων κόμματος, θα χρειαστεί πιο κάτω για τα ποσοστά
       ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 36
            s[i] 
 s[i] + ψηφ[i, j]
       ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
       ΑΝ s[i] > max ΤΟΤΕ
            max 
 s[i]
            posmax 
 i
       ΤΕΛΟΣ_ΑΝ
       s_all 
 s_all + s[i]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΓΡΑΨΕ 'νικητής εκλογών:', κομ[posmax]
  ΓΡΑΨΕ 'τα παρακάτω κόμματα έχουν >3%:'
  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 25
       ποσ 
 s[i]/36*100
       ΑΝ ποσ > 3 ΤΟΤΕ
            ΓΡΑΨΕ κομ[i]
       ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 36
       max 
 -1
       ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 25
            ΑΝ ψηφ[i, j] > max ΤΟΤΕ
                 max 
 ψηφ[i, j]
                 posmax 
 i
           ΤΕΛΟΣ_ΑΝ
       ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
       ΓΡΑΨΕ 'την εκλογική περιφέρεια, ', j, 'την κέρδισε το κόμμα: ', κομ[posmax]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου