Δευτέρα, 31 Μαΐου 2010

Άσκηση : Πίνακας συχνοτήτων+Απάντηση σε ερώτηση

Γράψτε πρόγραμμα σε ΓΛΩΣΣΑ το οποίο:
α) διαβάζει μια ακολουθία θετικών ακεραίων
    (η είσοδος δεδομένων τερματίζεται μόλις
     δοθεί η απάντηση 'Ν' στην υποβαλλόμενη
     προς το χρήστη ερώτηση 'Τελειώσατε;'),
β) υπολογίζει και εμφανίζει τη συχνότητα
    των αριθμών 19, 20, 21, ..., 33 μέσα στην
    ακολουθία εισόδου.
Παρατήρηση : Το πρόγραμμα πρέπει να
διασφαλίζει την εγκυρότητα των εισερχό-
μενων δεδομένων.

Λύση

     ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ
     ΜΕΤΑΒΛΗΤΕΣ
          ΑΚΕΡΑΙΕΣ: λ, μ, Φ[15]
          ΧΑΡΑΚΤΗΡΕΣ: Επ
     ΑΡΧΗ
         ΓΙΑ λ ΑΠΟ 1 ΜΕΧΡΙ 15
              Φ[λ] <-- 0
         ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
         ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
              ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
                    ΔΙΑΒΑΣΕ μ
              ΜΕΧΡΙΣ_ΟΤΟΥ μ > 0
              ΑΝ (μ >= 19) ΚΑΙ (μ <= 33) ΤΟΤΕ
                    Φ[μ-18] <-- Φ[μ-18]+1
              ΤΕΛΟΣ_ΑΝ
              ΓΡΑΨΕ 'Τελειώσατε;'
              ΔΙΑΒΑΣΕ Επ
         ΜΕΧΡΙΣ_ΟΤΟΥ Επ = 'Ν'
         ΓΙΑ λ ΑΠΟ 1 ΜΕΧΡΙ 15
              ΓΡΑΨΕ Φ[λ]
         ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
     ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Άσκηση : Γέμισμα πίνακα με δοσμένες τιμές

Ας θεωρήσουμε τον πίνακα Α[30]. Γράψτε εντολές στη
ΓΛΩΣΣΑ οι  οποίες θα γεμίσουν τον πίνακα με τις
τιμές 1, 2, 3, ..., 30.
Παρατήρηση : Δώστε όσες περισσότερες λύσεις
μπορείτε.

Λύση

    α' τρόπος

        ΓΙΑ λ ΑΠΟ 1 ΜΕΧΡΙ 30
              Α[λ] <-- λ
        ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

    β' τρόπος

        ΓΙΑ λ ΑΠΟ 1 ΜΕΧΡΙ 30
              Α[λ] <-- λ mod 31
        ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

    γ' τρόπος

        Α[1] <-- 1
        ΓΙΑ λ ΑΠΟ 2 ΜΕΧΡΙ 30
              Α[λ] <-- Α[λ-1]+1
        ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

    δ' τρόπος

       μ <-- 1
       ΓΙΑ λ ΑΠΟ 1 ΜΕΧΡΙ 30
              Α[λ] <-- μ
              μ <-- μ+1
      ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

   



      

Άσκηση : Βήμα-βήμα εκτέλεση εντολών (Μέχρις_ότου+Αν..τότε..αλλιώς_αν)

Τι εμφανίζει το παρακάτω σύνολο εντολών
    Α <-- 99
    Β <-- 21
    Γ <--  13
    Αρχή_επανάληψης
          Αν Α+Β > 100 τότε
                 Α <-- Α-20
                 Β <-- Β-10
          αλλιώς_αν Α > 75 τότε
                 Α <-- Α-9
                 Β <-- Β-7
          αλλιώς_αν  Α > 65 τότε
                 Α <-- Α-30
                 Β <-- 3*Β
           αλλιώς
                 Α <-- Α+2
                 Β <-- Β-1
           Τέλος_αν
           Γ <-- Γ+3
           Εμφάνισε Α, Β, Γ
    Μέχρις_ότου  Γ > 23
    Εμφάνισε Α+Β+Γ

Λύση

    Α = 99
    Β = 21
    Γ = 13
    1η επανάληψη
         Επειδή Α+Β > 100 = 99+21 > 100 = 120 > 100 = Αληθής
                Α = Α-20 = 99-20 = 79             
                Β = Β-10 = 21-10 = 11
         Γ = Γ+3 = 13+3 = 16
         Η Εμφάνισε τυπώνει:
              79       11       16
    2η επανάληψη
         Επειδή Α+Β > 100 = 79+11 > 100 = 90 > 100 = Ψευδής
         και  Α > 75 = 79 > 75 = Αληθής
                Α = Α-9 = 79-9 = 70
                Β = Β-7 = 11-7 = 4
         Γ = Γ+3 = 16+3 = 19
         Η Εμφάνισε τυπώνει:
              70       4        19
    3η επανάληψη
         Επειδή Α+Β > 100 = 70+4 > 100 = 74 > 100 = Ψευδής,
         Α > 75 = 70 > 75 = Ψευδής και
         Α > 65 = 70 > 65 = Αληθής
                Α = Α-30 = 70-30 = 40
                Β = 3*Β = 3*4 = 12
         Γ = Γ+3 = 19+3 = 22
         Η Εμφάνισε τυπώνει:
              40       12       22
    4η επανάληψη
         Επειδή Α+Β > 100 = 40+12 > 100 = 52 > 100 = Ψευδής,
         Α > 75 = 40 > 75 = Ψευδής και
         Α > 65 = 40 > 65 = Ψευδής
               Α = Α+2 = 40+2 = 42
               Β = Β-1 = 12-1 = 11
         Γ = Γ+3 = 22+3 = 25
         Η Εμφάνισε τυπώνει:
              42       11       25
    Η Μέχρις_ότου τερματίζεται, αφού Γ > 23 =25 > 23 = Αληθής.
    Επειδή Α+Β+Γ = 42+11+25 = 78, η Εμφάνισε τυπώνει : 78
  

Κυριακή, 30 Μαΐου 2010

Άσκηση : Βήμα-βήμα εκτέλεση εντολών (Οσο+Αν..τότε..αλλιώς)

Τι θα εμφανίσει το παρακάτω σύνολο εντολών;
      κ <-- 9
      λ <-- 4
      'Οσο κ > 0 επανάλαβε
            Αν κ > 4 τότε
                 Εμφάνισε κ+1, 'τεστ', λ mod 4 = 0
            αλλιώς
                 Εμφάνισε λ-1, 'αβγ', κ div 10 = 0
            Τέλος_αν
            κ <-- κ-4
            λ <-- λ+3
       Τέλος_επανάληψης
       Εμφάνισε κ, λ

Λύση

       κ = 9
       λ = 4
       1η επανάληψη 
            Επειδή κ > 4 = 9 > 4 = Αληθής και κ+1 = 9+1 = 10,
            mod 4 = 0) = (4 mod 4 = 0) = (0 = 0) = Αληθής,
            η Εμφάνισε τυπώνει:
                   10   τεστ    Αληθής
            κ = κ-4 = 9-4 = 5
            λ = λ+3 = 4+3 = 7
       2η επανάληψη 
            Επειδή κ > 4 = 5 > 4 = Αληθής και κ+1 = 5+1 = 6,
            mod 4 = 0) = (7 mod 4 = 0) = (3 = 0) = Ψευδής,
            η Εμφάνισε τυπώνει:
                   6     τεστ    Ψευδής
            κ = κ-4 = 5-4 = 1
            λ = λ+3 = 7+3 = 10
        3η επανάληψη 
            Επειδή κ > 4 = 1 > 4 = Ψευδής και λ-1 = 10-1 = 9,
            div 10 = 0) = (1 div 10 = 0) = (0 = 0) = Αληθής,
            η Εμφάνισε τυπώνει:
                   9     αβγ    Αληθής
            κ = κ-4 = 1-4 = -3
            λ = λ+3 = 10+3 = 13
         Η Όσο τερματίζεται αφού κ > 0 = -3 > 0 = Ψευδής.
         Η Εμφάνισε τυπώνει:
                -3      13

Άσκηση : Βήμα-βήμα εκτέλεση εντολών (Για+Επιλεξε)

Τι εμφανίζει το παρακάτω σύνολο εντολών στη μονάδα
εξόδου;
     Α <-- 21
     Για λ από 3 μέχρι 8 με_βήμα 4
         Για μ από 17 μέχρι 9 με_βήμα -6
               Επίλεξε λ+μ
                    Περίπτωση 20
                          Α <-- Α-μ+λ
                          Εμφάνισε (μ-10)^2, λ > 10
                    Περίπτωση 24
                          Α <-- Α+μ-λ
                          Εμφάνισε (μ-12)*3, λ < 20
                    Περίπτωση 14
                          Α <-- Α+μ*λ
                          Εμφάνισε μ div 2, λ mod 2010
                    Περίπτωση αλλιώς
                          A <-- A+100
                          Εμφάνισε Α_Τ(λ-μ), Α_Μ(11.3-μ)+λ
               Τέλος_επιλογών
         Τέλος_επανάληψης
     Τέλος_επανάληψης
     Εμφάνισε Α, μ, λ

Λύση

     Α = 21
     1η επανάληψη εξωτερικής Για (λ = 3)
            1η επανάληψη εσωτερικής Για (μ = 17)
                   Επειδή λ+μ = 3+17 = 20 έχουμε:
                         Α = Α-μ+λ = 21-17+3 = 7
                         Αφού (μ-10)^2 = (17-10)^2 = 7^2 = 49,
                                    λ > 10 = 3 > 10 = Ψευδής,
                         η Εμφάνισε τυπώνει:
                                   49        Ψευδής
           2η επανάληψη εσωτερικής Για (μ = 11)
                   Επειδή λ+μ = 3+11= 14 έχουμε:
                         Α = Α+μ*λ = 7+11*3 = 7+33 = 40
                         Αφού μ div 2 = 11 div 2 = 5 και
                                   λ mod 2010 = 3 mod 2010 = 3
                         η Εμφάνισε τυπώνει:
                                  5        3
           Η εσωτερική Για τερματίζεται με μ = 5.
   2η επανάληψη εξωτερικής Για (λ = 7)
            1η επανάληψη εσωτερικής Για (μ = 17)
                   Επειδή λ+μ = 7+17 = 24 έχουμε:
                         Α = Α+μ-λ = 40+17-7 = 50
                         Αφού (μ-12)*3 = (17-12)*3 = 5*3 = 15 και
                                    λ < 20 = 7 < 20 = Αληθής,
                         η Εμφάνισε τυπώνει:
                                   15      Αληθής
           2η επανάληψη εσωτερικής Για (μ = 11)
                   Επειδή λ+μ = 7+11= 18 έχουμε:
                         A = A+100 = 50+100 = 150
                         Αφού Α_Τ(λ-μ) = Α_Τ(7-11) = Α_Τ(-4) = 4
                             και Α_Μ(11.3-μ)+λ = Α_Μ(11.3-11)+7 =
                                   Α_Μ(0.3)+7 = 0+7 = 7
                         η Εμφάνισε τυπώνει:
                                  4        7
           Η εσωτερική Για τερματίζεται με μ = 5.
    Η εξωτερική Για τερματίζεται με λ = 11.
    Η Εμφάνισε τυπώνει:
          150      5       11

Σάββατο, 29 Μαΐου 2010

Σχολιασμός των θεμάτων για τις Απολυτήριες εξετάσεις Εσπερινού Γενικού Λυκείου 2010

Τα θέματα είναι πραγματικά πολύ εύκολα. Δεν υπάρχουν
δυσνόητα σημεία ούτε "παγίδες". Ιδιαίτερο ενδιαφέρον
παρουσιάζει το γεγονός ότι στο ΘΕΜΑ Α:
α) απουσιάζουν οι ερωτήσεις ανάπτυξης,
β) υπάρχουν συνολικά 10 (!) ερωτήσεις σωστού-λάθους
γ) αγνοήθηκαν παντελώς τα κεφάλαια 6 και 10.

Λύσεις Απολυτήριων εξετάσεων Δ' τάξης Εσπερινού Γενικού Λυκείου 2010

ΘΕΜΑ Α

Α1.
     1. Λ
     2. Σ
     3. Λ
     4. Σ
     5. Σ

Α2. 
     1. Λ
     2. Σ
     3. Σ
     4. Σ
     5. Σ

Α3.
     1. (x > -1) KAI (x <= 10)
     2. (x = 1) Ή (x = 5) Ή (x = -40)
     3. (x > 50) KAI (x < > 100)
     4. (x > 0) KAI (x MOD 3 = 0)
     5. (x MOD 4 = 0) KAI (x MOD 100 < > 0)

A4. 
     Σ <-- 0
     Για Α από 2 μέχρι 15 με_βήμα 3
            Σ <-- Σ+Α
     Τέλος_επανάληψης
     Εμφάνισε Σ

ΘΕΜΑ Β

Β1.
Αρ. Γραμμής                    Χ           Υ                        Ε
                1               17
                2                              5
                5                8
                9                                              40
                5                4
                9                                              20
                7                              2
                9                                               8
                5                2             
                9                                               4
                7                              1
                9                                               2

ΘΕΜΑ Γ

     ΠΡΟΓΡΑΜΜΑ ΘΓ
     ΜΕΤΑΒΛΗΤΕΣ
          ΑΚΕΡΑΙΕΣ: Ετ, Φ, Ποσό, MIN
          ΧΑΡΑΚΤΗΡΕΣ: Κ, Τυπ, KMIN
          ΠΡΑΓΜΑΤΙΚΕΣ: ΣΠ
     ΑΡΧΗ
          Φ <-- 0
          ΜΙΝ <-- 3000
          ΣΠ <-- 0
          ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
               ΔΙΑΒΑΣΕ Κ
               ΑΝ Κ < > 'Τ' ΤΟΤΕ
                     ΔΙΑΒΑΣΕ Ετ
                     ΔΙΑΒΑΣΕ Τυπ
                     ΑΝ Κ = 'ΦΟΡΤΗΓΟ' ΤΟΤΕ
                           Φ <-- Φ+1
                           Ποσό <-- 60
                     ΑΛΛΙΩΣ_ΑΝ Κ = 'ΕΠΙΒΑΤΗΓΟ' ΤΟΤΕ
                           Ποσό <-- 40
                     ΑΛΛΙΩΣ
                           Ποσό <-- 20
                     ΤΕΛΟΣ_ΑΝ
                     ΑΝ Τυπ = 'ΕΚΠΡΟΘΕΣΜΟ' ΤΟΤΕ
                           Ποσό <-- Ποσό+15.8
                           ΣΠ <-- ΣΠ+15.8
                     ΤΕΛΟΣ_ΑΝ
                     ΓΡΑΨΕ Ποσό

                     ΑΝ Ετ < ΜΙΝ ΤΟΤΕ
                          ΜΙΝ <-- Ετ
                          ΚΜΙΝ <-- Κ
                     ΤΕΛΟΣ_ΑΝ
                ΤΕΛΟΣ_ΑΝ
          ΜΕΧΡΙΣ_ΟΤΟΥ (Κ = 'Τ')
          ΑΝ  ΜΙΝ < > 3000 ΤΟΤΕ
               ΓΡΑΨΕ Φ, ΚΜΙΝ, ΣΠ
          ΑΛΛΙΩΣ
               ΓΡΑΨΕ 'Δε δόθηκαν δεδομένα'
          ΤΕΛΟΣ_ΑΝ
     ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ 

ΘΕΜΑ Δ
     
     Αλγόριθμος ΘΔ
     Για λ από 1 μέχρι 158
          Διάβασε ΜΕΛΗ[λ]
          Αρχή_επανάληψης
               Διάβασε ΦΥΛΟ[λ]
          Μέχρις_ότου (ΦΥΛΟ]λ] = 'Α') Ή (ΦΥΛΟ[λ] = 'Γ')
     Τέλος_επανάληψης
     Για κ από 1 μέχρι 158
          Για λ από 1 μέχρι 12
               Διάβασε ΒΙΒΛΙΑ[κ, λ]
          Τέλος_επανάληψης
     Τέλος_επανάληψης
     Για κ από 1 μέχρι 158
          SUM[κ] <-- 0
          Για λ από 1 μέχρι 12
               SUM[κ] <-- SUM[κ]+ΒΙΒΛΙΑ[κ, λ]
          Τέλος_επανάληψης
     Τέλος_επανάληψης
     ΒΑ <-- 0
     ΒΓ <-- 0
     Για λ από 1 μέχρι 158
          Αν ΦΥΛΟ[λ] = 'Α' τότε
                ΒΑ <-- ΒΑ+SUM[λ]
          αλλιώς
                ΒΓ <-- ΒΑ+SUM[λ]
          Τέλος_αν
     Τέλος_επανάληψης
     Αν ΒΑ > ΒΓ τότε
          Εμφάνισε 'Περισσότερα βιβλία δανείστηκαν οι άνδρες'
     αλλιώς_αν ΒΑ < ΒΓ τότε
          Εμφάνισε 'Περισσότερα βιβλία δανείστηκαν οι γυναίκες'
     αλλιώς
          Εμφάνισε 'ΙΣΟΣ ΑΡΙΘΜΟΣ ΒΙΒΛΙΩΝ'
     Τέλος_αν
     Διάβασε Επων
     done <-- Ψευδής
     position <-- 0
     λ <-- 1
     Όσο (λ <= 158) ΚΑΙ (done = Ψευδής) επανάλαβε
          Αν ΜΕΛΗ[λ] = Επων τότε
                done <-- Αληθής
                position <-- λ
          αλλιώς
                λ <-- λ+1
          Τέλος_αν
     Τέλος_επανάληψης
     Αν done = Αληθής τότε
           Εμφάνισε SUM[position]
     αλλιώς
           Εμφάνισε 'ΤΟ ΕΠΩΝΥΜΟ ΑΥΤΟ ΔΕΝ ΥΠΑΡΧΕΙ'
     Τέλος_αν
     Τέλος ΘΔ 

Παρασκευή, 28 Μαΐου 2010

Εναλλακτική λύση του ΘΕΜΑΤΟΣ Γ των Απολυτήριων εξετάσεων Ημερήσιου Γενικού Λυκείου 2010

Επειδή έχει ξεκινήσει ήδη μια μεγάλη συζήτηση για το ΘΕΜΑ Γ
και για το αν μπορούσε ο υποψήφιος να χρησιμοποιήσει ή όχι
πίνακα, παραθέτω μια λύση με πίνακες, που υπό προϋποθέσεις
μπορεί να γίνει αποδεκτή στο σύνολό της.




! Υποθέτουμε ότι το ανώτατο πλήθος αθλητών που δήλωσαν
! συμμετοχή είναι 5000
Αλγόριθμος ΘΓ_2οςΤΡΟΠΟΣ
! Ον[5000] : τα ονοματεπώνυμα των αθλητών
! Μέτρα[5000] : οι επιδόσεις τους
Αρχή_επανάληψης
      Διάβασε ρεκόρ
Μέχρις_ότου (ρεκόρ > 0) ΚΑΙ (ρεκόρ < 10)
Διάβασε Πλήθος
Για λ από 1 μέχρι Πλήθος
      Διάβασε Ον[λ]
      Διάβασε Μέτρα[λ]
Τέλος_επανάληψης
ΟνΠΕΡΣ <-- Ον[1]
ΜΙΝ <-- Μέτρα[1]
ΑΑΜΙΝ <-- 1
Για λ από 2 μέχρι Πλήθος
      Αν Μέτρα[λ] < ΜΙΝ τότε
            ΜΙΝ <-- Μέτρα[λ]
            ΑΑΜΙΝ <-- λ
      Τέλος_αν
Τέλος_επανάληψης
Εμφάνισε Ον[ΑΑΜΙΝ]
Κατ <-- 0
Φ <-- 0
Για λ από 1 μέχρι Πλήθος
      Αν Μέτρα[λ] > ρεκόρ τότε
           Εμφάνισε 'Κατέρριψε το ρεκόρ ο :', Ον[λ]
           Κατ <-- Κατ+1
      αλλιώς
            Αν (ρεκόρ-Μέτρα[λ]) <= 0.5 τότε
                 Φ <-- Φ+1
            Τέλος_αν
      Τέλος_αν
Τέλος_επανάληψης
Αν Κατ = 0 τότε
      Εμφάνισε Φ
Τέλος_αν
Για κ από 2 μέχρι Πλήθος
     Για λ από Πλήθος μέχρι κ με_βήμα -1
          Αν Μέτρα[Λ-1] < Μέτρα[Λ] τότε
               Βοηθ <-- Μέτρα[Λ-1]
               Μέτρα[Λ-1] <-- Μέτρα[Λ]
               Μέτρα[Λ] <-- Βοηθ
               ΤΕΜΡ <--- Ον[λ-1]
               Ον[λ-1] <-- Ον[λ]
               Ον[λ] <-- ΤΕΜΡ
          Τέλος_αν
     Τέλος_επανάληψης
Τέλος_επανάληψης
done <-- Ψευδής
position <-- 0
λ <-- 1
Όσο (λ <= Πλήθος) ΚΑΙ (done = Ψευδής) επανάλαβε
      Αν Ον[λ] = ΟνΠΕΡΣ τότε
            done <-- Αληθής
            position <-- λ
      αλλιώς
            λ <-- λ+1
      Τέλος_αν
Τέλος_επανάληψης
Εμφάνισε 'Θέση περσινού πρωταθλητή :', position
Τέλος ΘΓ_2οςΤΡΟΠΟΣ

Παρατήρηση : Η μέθοδος έχει ως μοναδικό αδύναμο σημείο της
την αρχική υπόθεση για το μέγιστο δυνατό πλήθος των στοιχείων
του πίνακα που όπως είναι προφανές είναι αυθαίρετο και δε
συνάγεται από πουθενά. Ωστόχο επειδή ο σχεδιασμός των
αλγορίθμων δεν έχει τις δεσμευτικές δεικλίδες των προγραμ-
μάτων (στα οποία πρέπει να προσδιορίσεις επακριβώς το σύνολο
της μνήμης που θα χρειαστείς για την ανάπτυξη της εφαρμογής
σου) θεωρώ ότι και η λύση αυτή είναι επιστημονικά τεκμηριω-
μένη και σωστή.

Σχολιασμός των θεμάτων για τις Απολυτήριες εξετάσεις Ημερήσιου Γενικού Λυκείου 2010

Τα θέματα απευθύνονται σε καλά προετοιμασμένους
μαθητές που έχουν εμβαθύνει στις έννοιες και έχουν
άριστη γνώση της μεθοδολογίας. Θα' θελα ωστόσο να
επισημάνω ορισμένα σημεία στη διάρθρωση των
θεμάτων.

ΘΕΜΑ Α
Ιδιαίτερη εντύπωση προκαλεί το γεγονός της
απουσίας :
α) ερωτήσεων σωστού-λάθους,
β) ερωτήσεων ανάπτυξης.
Αξιοσημείωτο είναι το γεγονός ότι:
* το ζήτημα Α1 είναι αυτούσια άλυτη άσκηση από το
   τετράδιο του  μαθητή (κεφάλαιο 8)
* το ζήτημα Α4 είναι αυτούσια λυμένη άσκηση από
   το σχολικό βιβλίο (σελ. 58)
Τέλος στο ερώτημα Α5, ο μαθητής έπρεπε να έχει
κατανοήσει απόλυτα και σε μεγάλο βάθος τη μέθοδο
της φυσσαλίδας προκειμένου να το επιλύσει.

ΘΕΜΑ Β
Πάρα πολύ απλό θέμα (ίσως το ευκολότερο των τελευταίων
5 ετών!!!

ΘΕΜΑ Γ
Το ζητούμενο Γ5 θέλει προσοχή και μπορεί να μπερδέψει
λίγο τον μαθητή. Θα΄θελα επίσης να σημειώσω ότι μπορεί
να δοθεί (υπό προϋποθέσεις) και λύση με τη βοήθεια
μονοδιάστατων πινάκων.

ΘΕΜΑ Δ
Βατό σχετικά θέμα με δυσκολούτσικο το ζητούμενο Δ4.
Το ζητούμενο αυτό μπορεί να λυθεί και χωρίς τη χρήση
των βοηθητικών πινάκων OC1, OC2, OC3 (βλέπε λύσεις
προηγούμενου άρθρου). Για να βρούμε π.χ τα 3 πρώτα
σκάφη στην κατηγορία C1 θα μπορούσαμε να κάνουμε τα
ακόλουθα:
         κ <-- 1
         λ <-- 0
         Όσο λ < 3 επανάλαβε
              Αν Κατ[κ] = 'C1' τότε
                    Εμφάνισε Ον[κ]
                    λ <-- λ+1
              Τέλος_αν
               κ <-- κ+1
         Τέλος_επανάληψης

Γενικότερη παρατήρηση:  Δε ζητήθηκε τίποτα από τα κεφάλαια
1, 6 και 10 (πολύ μεγάλη έκπληξη θα'λεγα).

Λύσεις Απολυτήριων εξετάσεων Γ' τάξης Ημερήσιου Γενικού Λυκείου 2010

ΘΕΜΑ Α

Α1.
   1.   
    ΑΝ ΒΑΘΜΟΣ > ΜΟ ΤΟΤΕ
          ΓΡΑΨΕ 'Πολύ καλά'
    ΑΛΛΙΩΣ
          ΑΝ ΒΑΘΜΟΣ <= ΜΟ-2 ΤΟΤΕ
                ΓΡΑΨΕ 'Καλά'
          ΑΛΛΙΩΣ
                ΓΡΑΨΕ 'Μέτρια'
          ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΑΝ

  2.
    ΑΝ (ΤΜΗΜΑ = 'Γ1') ΚΑΙ (ΒΑΘΜΟΣ > 15) ΤΟΤΕ
         ΓΡΑΨΕ ΕΠΩΝΥΜΟ
    ΤΕΛΟΣ_ΑΝ

 3.
    ΑΝ (ΑΠΑΝΤΗΣΗ < > 'Ν') ΚΑΙ (ΑΠΑΝΤΗΣΗ < > 'ν') ΚΑΙ  
           (ΑΠΑΝΤΗΣΗ < > 'Ο') ΚΑΙ (ΑΠΑΝΤΗΣΗ < > 'ο') ΤΟΤΕ
          ΓΡΑΨΕ 'Λάθος απάντηση'
    ΤΕΛΟΣ_ΑΝ

 4.
    ΑΝ (Χ < 0) Ή (ΗΜ(Χ) = 0) ΤΟΤΕ
        ΓΡΑΨΕ 'Λάθος δεδομένα'
    ΑΛΛΙΩΣ
        Υ <-- (Χ^2+5*Χ+1)/(Τ_Ρ(Χ)*ΗΜ(Χ))
         ΓΡΑΨΕ Υ
    ΤΕΛΟΣ_ΑΝ

Α2.
    Τύποι : ΑΚΕΡΑΙΕΣ, ΧΑΡΑΚΤΗΡΕΣ, ΠΡΑΓΜΑΤΙΚΕΣ, ΛΟΓΙΚΕΣ
    Παραδείγματα εντολών εκχώρησης
           Ας θεωρήσουμε τις μεταβλητές Χ, Υ, Ζ, Κ που είναι ακεραίου,
          αλφαριθμητικού, πραγματικού και λογικού τύπου αντίστοιχα.
                Χ <-- 71
                Υ <-- 'καλημέρα'
                Ζ <-- 15.2
                Κ <-- ΨΕΥΔΗΣ

Α3.
     1. Θ
     2. Δ
     3. Η
     4. I
     5. Κ

Α4.
      12. sum <-- sum+table[i, j]
      13. row[i] <-- row[i]+table[i, j]
      14. col[j] <-- col[j]+table[i, j]

A5.
     Για x από 3 μέχρι 19 με_βήμα 2
          Για y από 19 μέχρι x με_βήμα -2
               Αν Π[y] < Π[y-2] τότε
                    Αντιμετάθεσε Π[y], Π[y-2]
               Τέλος_αν
          Τέλος_επανάληψης
     Τέλος_επανάληψης

ΘΕΜΑ Β

     Αριθμός      συνθήκη      έξοδος           i          j
     γραμμής 
          1                                                               1
          2                                                     2
          4                                                     3
          5                                                               2
          6                                      3
          7            Ψευδής
          4                                                     5
          5                                                               3
          6                                      5
          7            Αληθής

ΘΕΜΑ Γ

     Αλγόριθμος ΘΓ
     Αρχή_επανάληψης
          Διάβασε ρέκορ
     Μέχρις_ότου (ρεκόρ > 0) ΚΑΙ (ρεκόρ < 10)
     Διάβασε Πλήθος
     Εμφάνισε 'Δώσε το όνομα του περσινού πρωταθλητή:'
     Διάβασε Ον
     Εμφάνισε 'Δώσε την επίδοσή του:'
     Διάβασε Μέτρα
     ΜετρΠΕΡ <-- Μέτρα
     ΜΙΝ <-- Μέτρα
     ΟνΜΙΝ <-- Ον
     Θέση <-- 1
     flag <-- Ψευδής
     Φ <-- -0
     Για λ από 2 μέχρι Πλήθος
          Διάβασε Ον
          Διάβασε Μέτρα
          Αν Μέτρα < ΜΙΝ τότε
               ΜΙΝ <-- Μέτρα
               ΟνΜΙΝ <-- Ον
          Τέλος_Αν
          Αν Μέτρα > ΜετρΠΕΡ τότε
                Θέση <-- Θέση+1
          Τέλος_αν
          Αν Μέτρα > ρεκόρ τότε
                Εμφάνισε 'Κατέρριψε το ρεκόρ ο :', Ον
                flag <-- Αληθής
          αλλιώς
                Αν (ρεκόρ - Μέτρα) <= 0,5 τότε
                      Φ <-- Φ+1
                Τέλος_αν
          Τέλος_αν
     Τέλος_επανάληψης
     Εμφάνισε ΟνΜΙΝ 
     Αν flag = Ψευδής τότε
          Εμφάνισε Φ
     Τέλος_αν
     Εμφάνισε Θέση
     Τέλος ΘΓ 

ΘΕΜΑ Δ

     
     Αλγόριθμος ΘΔ
     Για  λ από 1 μέχρι 35
          Διάβασε Ον[λ]
          Αρχή_επανάληψης
               Διάβασε Κατ[λ]
          Μέχρις_ότου (Κατ[λ] = 'C1') Ή (Κατ[λ] = 'C2')
                                Ή (Κατ[λ] = 'C3')
          Διάβασε Χρ[λ]
          Διάβασε GPH[λ]
     Τέλος_επανάληψης
     Για λ από 1 μέχρι 35   
          Σχετ[λ] <-- Χρ[λ]/(70*GPH[λ])
      Τέλος_επανάληψης
      Για κ από 2 μέχρι 35
           Για λ από 35 μέχρι κ με_βήμα -1
                Αν Σχετ[λ-1] > Σχετ[λ] τότε
                     Βοηθ <-- Σχετ[λ-1]
                     Σχετ[λ-1] <-- Σχετ[λ]
                     Σχετ[λ] <-- Βοηθ
                     ΤΕΜΡ <-- Ον[λ-1]
                     Ον[λ-1] <-- Ον[λ]
                     Ον[λ] <-- ΤΕΜΡ
                     ΤΕΜΡ <-- Κατ[λ-1]
                     Κατ[λ-1] <-- Κατ[λ]
                     Κατ[λ] <-- ΤΕΜΡ
                     Βοηθ2 <-- Χρ[λ-1]
                     Χρ[λ-1] <-- Χρ[λ]
                     Χρ[λ] <-- Βοηθ2
                     Βοηθ2 <-- GPH[λ-1]
                     GPH[λ-1] <-- GPH[λ]
                     GPH[λ] <-- Βοηθ2
                Τέλος_αν
           Τέλος_επανάληψης
      Τέλος_επανάληψης
      π1 <-- 0
      π2 <-- 0
      π3 <-- 0
      Για λ από 1 μέχρι 35
           Αν Κατ[λ] = 'C1' τότε
                π1 <-- π1+1
                OC1[π1] <-- Oν[λ]
           αλλιώς_αν Κατ[λ] = 'C2' τότε
                π2 <-- π2+1
                OC2[π2] <-- Oν[λ]
           αλλιώς
                π3 <-- π3+1
                OC3[π3] <-- Oν[λ]
           Τέλος_αν
      Τέλος_επανάληψης
      ΜΑΧ <-- π1
      ΚΜΑΧ <-- 'C1'
      Αν π2 > ΜΑΧ τότε
           ΜΑΧ <-- π2
           ΚΜΑΧ <-- 'C2'
      Τέλος_αν
      Αν π3 > ΜΑΧ τότε
           ΜΑΧ <-- π3
           ΚΜΑΧ <-- 'C3'
      Τέλος_αν
      Εμφάνισε ΚΜΑΧ
      Εμφάνισε 'Τα  3 πρώτα σκάφη της γενικής κατάταξης είναι...'
      Για λ από 1 μέχρι 3
            Εμφάνισε Ον[λ]
      Τέλος_επανάληψης
      Εμφάνισε 'Τα 3 πρώτα σκάφη στην κατηγορία C1 είναι ...'
      Για λ από 1 μέχρι 3
           Εμφάνισε OC1[λ]
       Τέλος_επανάληψης
       Εμφάνισε 'Τα 3 πρώτα σκάφη στην κατηγορία C2 είναι ...'
       Για λ από 1 μέχρι 3
           Εμφάνισε OC2[λ]
       Τέλος_επανάληψης
       Εμφάνισε 'Τα 3 πρώτα σκάφη στην κατηγορία C3 είναι ...'
       Για λ από 1 μέχρι 3

           Εμφάνισε OC3[λ] 
       Τέλος_επανάληψης
       Τέλος ΘΔ

Τετάρτη, 26 Μαΐου 2010

Άσκηση : Κουμπαράς

Έχετε ως στόχο να αγοράσετε ένα αυτοκίνητο αξίας 9000
ευρώ. Για το σκοπό αυτό αποταμιεύετε καθημερινά κάποιο
χρηματικό ποσό. Γράψτε πρόγραμμα το οποίο:
α) διαβάζει το ποσό που αποταμιεύετε καθημερινά
    (μέχρι να συγκεντρώσετε το απαιτούμενο για την
     αγορά χρηματικό ποσό),
β) υπολογίζει και εμφανίζει:
    * πόσες ημέρες απαιτούνται μέχρι να ολοκληρωθεί η
       αγορά του αυτοκινήτου,
    * το περίσσευμα των χρημάτων σας (εφόσον αυτό
       υπάρχει)
Παρατήρηση: Δεν απαιτείται κανένας έλεγχος εγκυρότητας
των εισερχόμενων δεδομένων.

Λύση

    ΠΡΟΓΡΑΜΜΑ Κουμπαράς
    ΜΕΤΑΒΛΗΤΕΣ
          ΠΡΑΓΜΑΤΙΚΕΣ: Σύνολο, Ποσό, Περίσσευμα
          ΑΚΕΡΑΙΕΣ: Ημέρες
    ΑΡΧΗ
          Ημέρες <-- 0
          Σύνολο <-- 0
          ΟΣΟ Σύνολο < 9000 ΕΠΑΝΑΛΑΒΕ
                ΔΙΑΒΑΣΕ Ποσό
                Σύνολο <-- Σύνολο+Ποσό
                Ημέρες <-- Ημέρες+1
          ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
          ΓΡΑΨΕ Ημέρες
          Περίσσευμα <-- Σύνολο-9000
          ΑΝ Περίσσευμα > 0 ΤΟΤΕ
               ΓΡΑΨΕ 'Περίσσευμα = ', Περίσσευμα
          ΑΛΛΙΩΣ
               ΓΡΑΨΕ 'Δεν υπάρχει καθόλου περίσσευμα'
          ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Άσκηση : Πορτοφόλι

Έχετε στη διάθεσή σας 200 ευρώ και σκοπεύετε να τα
διαθέσετε για την αγορά αναψυκτικών και ποτών. Γράψτε
πρόγραμμα το οποίο:
α) διαβάζει το είδος ( Α - αναψυκτικό, Π - ποτό) και την
     τιμή κάθε υποψήφιου προς αγορά προϊόντος,
β) ελέγχει αν είναι δυνατή η απόκτησή του και εφόσον
    αυτό συμβαίνει οι αγορές συνεχίζονται, σε διαφορε-
    τική περίπτωση οι αγορές ολοκληρώνονται άμεσα,
γ) υπολογίζει και εμφανίζει:
    1. το πλήθος των αγορασμένων αναψυκτικών και
        ποτών,
    2. το περίσσευμα των χρημάτων σας μετά την ολοκλή-
        ρωση των αγορών,
    3. το συνολικό ποσό που διαθέσατε για τις αγορές σας.
Παραρήρηση : Το πρόγραμμα πρέπει να διασφαλίζει την
εγκυρότητα των εισερχόμενων δεδομένων.

Λύση

     ΠΡΟΓΡΑΜΜΑ Πορτοφόλι
     ΜΕΤΑΒΛΗΤΕΣ
           ΠΡΑΓΜΑΤΙΚΕΣ: Πορτ, Τιμή, Αγ
           ΛΟΓΙΚΕΣ: ΤΕΛ
           ΑΚΕΡΑΙΕΣ: Αναψ, Ποτά
           ΧΑΡΑΚΤΗΡΕΣ: Είδος
     ΑΡΧΗ
           Πορτ <-- 200
           Αναψ <-- 0
           Ποτά <-- 0
           Αγ <-- 0
           ΤΕΛ <-- ΨΕΥΔΗΣ
           ΟΣΟ ΤΕΛ = ΨΕΥΔΗΣ ΕΠΑΝΑΛΑΒΕ
                 ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
                       ΔΙΑΒΑΣΕ Είδος
                 ΜΕΧΡΙΣ_ΟΤΟΥ (Έιδος = 'Α') Ή
                                              (Είδος = ΄Π')
                 ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
                       ΔΙΑΒΑΣΕ Τιμή
                 ΜΕΧΡΙΣ_ΟΤΟΥ Τιμή > 0
                 ΑΝ Τιμή <= Πορτ ΤΟΤΕ
                       Πορτ <-- Πορτ-Τιμή
                       Αγ <-- Αγ+Τιμή
                       ΑΝ Είδος = 'Α' ΤΟΤΕ
                            Αναψ <-- Αναψ+1
                       ΑΛΛΙΩΣ
                            Ποτά <-- Ποτά+1
                       ΤΕΛΟΣ_ΑΝ
                 ΑΛΛΙΩΣ
                       ΤΕΛ <-- ΑΛΗΘΗΣ
                 ΤΕΛΟΣ_ΑΝ
           ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
           ΓΡΑΨΕ Αναψ, Ποτά
           ΑΝ Πορτ > 0 ΤΟΤΕ
                ΓΡΑΨΕ 'Περίσσευμα χρημάτων :', Πορτ
           ΑΛΛΙΩΣ
                ΓΡΑΨΕ 'Δεν υπάρχει καθόλου περίσσευμα'
           ΤΕΛΟΣ_ΑΝ
            ΓΡΑΨΕ Αγ
     ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Τρίτη, 25 Μαΐου 2010

Άσκηση : Κλιμακωτός υπολογισμός

Κατά τη διάρκεια των εκπτώσεων ένα εμπορικό
κατάστημα παρέχει τη δυνατότητα κλιμακωτής
έκπτωσης για αθλητικά μπλουζάκια. Πιο συγκεκριμένα:
* τα πρώτα 3 μπλουζάκια πωλούνται με έκπτωση
   20%,
* για τα επόμενα 2 μπλουζάκια το ποσοστό της
   έκπτωσης ανέρχεται σε 30%,
* πάνω από τα 5 μπλουζάκια, το ποσοστό της
   έκπτωσης είναι 40%.
Γράψτε πρόγραμμα το οποίο:
α) διαβάζει το ονοματεπώνυμο κάθε πελάτη, πόσα
    μπλουζάκια επιθυμεί να αγοράσει και την αρχική
    τιμή πώλησης καθενός (η είσοδος δεδομένων
    ολοκληρώνεται μόλις δοθεί η απάντηση 'Ο' στην
    υποβαλλόμενη προς το χρήστη ερώτηση  'Υπάρχει
    άλλος πελάτης;'),
β) υπολογίζει και εμφανίζει:
    * τη χρέωση κάθε πελάτη,
    * το ονοματεπώνυμο του πελάτη που διέθεσε το
       μεγαλύτερο χρηματικό ποσό για να προμηθευ-
       τεί τέτοια μπλουζάκια,
    * τη μέση χρέωση πελάτη.
Παρατήρηση : Δεν απαιτείται κανένας έλεγχος εγκυρότητας
των εισερχόμενων δεδομένων.

Λύση

     ΠΡΟΓΡΑΜΜΑ Μπλουζάκια
     ΜΕΤΑΒΛΗΤΕΣ
           ΑΚΕΡΑΙΕΣ: Πλήθος, Πόσα
           ΠΡΑΓΜΑΤΙΚΕΣ: Τιμή, Έκπτωση, Τελική, Σύνολο,
                                          Μέση, ΜΑΧ
           ΧΑΡΑΚΤΗΡΕΣ: Ονομ, ΟνοΜΑΧ, Απάντηση
     ΑΡΧΗ
           Πλήθος <-- 0
           Σύνολο <-- 0
           ΜΑΧ <--  -1
           ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
                 ΔΙΑΒΑΣΕ Ονομ
                 ΔΙΑΒΑΣΕ Πόσα
                 ΔΙΑΒΑΣΕ Τιμή
                 Πλήθος <-- Πλήθος+1
                 ΑΝ Πόσα <= 3 ΤΟΤΕ
                       Έκπτωση <-- Πόσα*20/100
                 ΑΛΛΙΩΣ_ΑΝ Πόσα <= 5 ΤΟΤΕ
                       Έκπτωση <-- 3*20/100+(Πόσα-3)*30/100
                 ΑΛΛΙΩΣ
                       Έκπτωση <-- 3*20/100+2*30/100+
                                                 (Πόσα-5)*40/100
                 ΤΕΛΟΣ_ΑΝ
                 Τελική <-- Τιμή-Έκπτωση
                 ΓΡΑΨΕ Τελική
                 Σύνολο <-- Σύνολο+Τελική
                 ΑΝ Τελική > ΜΑΧ ΤΟΤΕ
                       ΜΑΧ <-- Τελική
                       ΟνοΜΑΧ <-- Ονομ
                 ΤΕΛΟΣ_ΑΝ
                 ΓΡΑΨΕ 'Υπάρχει άλλος πελάτης;'
                 ΔΙΑΒΑΣΕ Απάντηση
           ΜΕΧΡΙΣ_ΟΤΟΥ Απάντηση = 'Ο'
           Μέση <-- Σύνολο/Πλήθος
           ΓΡΑΨΕ Μέση, ΟνοΜΑΧ
     ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Άσκηση : Μενού λειτουργιών

Γράψτε πρόγραμμα το οποίο παρέχει το ακόλουθο
μενού λειτουργιών:
   1. Υπολογισμός α+β-γ
   2. Υπολογισμός 3(α+β)+γ
   3. Υπολογισμός 2α+4(β-γ)
   4. Έξοδος
Αν η επιλογή του χρήστη είναι 1 ή 2 ή 3 τότε:
* διαβάζονται τρεις πραγματικοί αριθμοί α, β, γ
* υπολογίζεται η αντίστοιχη παράσταση,
* εμφανίζεται στην οθόνη το αποτέλεσμα.
Αν η επιλογή είναι 4 (και μόνο τότε) το πρόγραμμα
τερματίζεται και εμφανίζεται το μήνυμα
    Τερματισμός λειτουργιών προγράμματος
Παρατήρηση : Πρέπει να διασφαλίζεται η εγκυρότητα
της επιλογής του χρήστη.

Λύση

    ΠΡΟΓΡΑΜΜΑ Μενού_λειτουργιών
    ΜΕΤΑΒΛΗΤΕΣ
         ΑΚΕΡΑΙΕΣ: Προτίμηση
         ΠΡΑΓΜΑΤΙΚΕΣ: α, β, γ, Αποτέλεσμα
    ΑΡΧΗ
         ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
              ΓΡΑΨΕ '1. Υπολογισμός α+β-γ'
              ΓΡΑΨΕ '2. Υπολογισμός 3(α+β)+γ'
              ΓΡΑΨΕ '3. Υπολογισμός 2α+4(β-γ)'
              ΓΡΑΨΕ '4. Έξοδος'
              ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
                    ΓΡΑΨΕ 'Δώσε την προτίμηση σου (1-4) :'
                    ΔΙΑΒΑΣΕ Προτίμηση
              ΜΕΧΡΙΣ_ΟΤΟΥ (Προτίμηση >= 1) ΚΑΙ 
                                          (Προτίμηση <= 4)
              ΑΝ Προτίμηση = 1 ΤΟΤΕ
                   ΔΙΑΒΑΣΕ α, β, γ
                   Αποτέλεσμα <-- α+β-γ
                   ΓΡΑΨΕ Αποτέλεσμα
               ΑΛΛΙΩΣ_ΑΝ Προτίμηση = 2 ΤΟΤΕ
                   ΔΙΑΒΑΣΕ α, β, γ
                   Αποτέλεσμα <-- 3*(α+β)+γ
                   ΓΡΑΨΕ Αποτέλεσμα         
              ΑΛΛΙΩΣ_ΑΝ Προτίμηση = 3 ΤΟΤΕ
                   ΔΙΑΒΑΣΕ α, β, γ
                   Αποτέλεσμα <-- 2*α+4*(β-γ)
                   ΓΡΑΨΕ Αποτέλεσμα               
              ΑΛΛΙΩΣ
                   ΓΡΑΨΕ 'Τερματισμός λειτουργιών προγράμματος'
              ΤΕΛΟΣ_ΑΝ
         ΜΕΧΡΙΣ_ΟΤΟΥ Προτίμηση = 4
    ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Δευτέρα, 24 Μαΐου 2010

Άσκηση : Αναγωγή στη μονάδα

Ένα σούπερ μάρκετ εμπορεύεται 11 διαφορετικές συσκευασίες
απορρυπαντικού πλυντηρίου. Γράψτε πρόγραμμα το οποίο:
α) διαβάζει την επωνυμία, την  τιμή πώλησης και το βάρος (σε
    κιλά) κάθε συσκευασίας,
β) εμφανίζει την επωνυμία της συσκευασίας εκείνης που
    αποτελεί την πιο συμφέρουσα επιλογή για ένα πελάτη.
Παρατήρηση Το πρόγραμμα πρέπει να διασφαλίζει την
εγκυρότητα των εισερχόμενων δεδομένων και συγκεκριμένα
θα πρέπει:
     * οι επωνυμίες να είναι διάφορες από το κενό διάστημα,
     * οι τιμές πώλησης να είναι θετικοί αριθμοί και να μην
        υπερβαίνουν τα 24 ευρώ,
     * τα βάρη να είναι θετικοί αριθμοί και να μην υπερβαίνουν
        τα 13,5 κιλά.

Λύση

    ΠΡΟΓΡΑΜΜΑ  Συμφέρον
    ΜΕΤΑΒΛΗΤΕΣ
          ΑΚΕΡΑΙΕΣ: λ
          ΧΑΡΑΚΤΗΡΕΣ: Επ, ΕπΣυμφ
          ΠΡΑΓΜΑΤΙΚΕΣ: Τιμή, ΤιμΚιλ, Κιλά, Μικρ
    ΑΡΧΗ
          Μικρ <-- 25
          ΓΙΑ λ ΑΠΟ 1 ΜΕΧΡΙ 11
                ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
                    ΔΙΑΒΑΣΕ Επ
                ΜΕΧΡΙΣ_ΟΤΟΥ Επ < > '  '
                ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
                    ΔΙΑΒΑΣΕ Τιμή
                ΜΕΧΡΙΣ_ΟΤΟΥ (Τιμή > 0) ΚΑΙ (Τιμή <= 24)
                ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
                    ΔΙΑΒΑΣΕ Κιλά
                ΜΕΧΡΙΣ_ΟΤΟΥ (Κιλά > 0) ΚΑΙ (Κιλά <= 13.5)
                ΤιμΚιλ <-- Τιμή/Κιλά
                ΑΝ ΤιμΚιλ < Μικρ ΤΟΤΕ
                     Μικρ <-- ΤιμΚιλ
                     ΕπΣυμφ <-- Επ
                ΤΕΛΟΣ_ΑΝ
          ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
          ΓΡΑΨΕ ΕπΣυμφ
    ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Παρασκευή, 21 Μαΐου 2010

Άσκηση : Φιλτράρισμα πίνακα

Σε μια επιχείρηση εργάζονται 50 υπάλληλοι. Γράψτε αλγόριθμο
ο οποίος:
α) διαβάζει τα ονοματεπώνυμα των 50 υπαλλήλων και τα καταχωρεί
    στον πίνακα ΟΝΟΜ[50],
β) διαβάζει τους αριθμούς φορολογικού μητρώου των υπαλλήλων
    αυτών και τους καταχωρεί στον πίνακα ΑΦΜ[50],
γ) διαβάζει την οικογενειακή κατάσταση (έγγαμος ή άγαμος ή
    διαζευγμένος ή χήρος) των υπαλλήλων αυτών  και την
    καταχωρεί  στον πίνακα ΟΙΚ[50],
δ) υπολογίζει και εμφανίζει:
    * το πλήθος των έγγαμων υπαλλήλων,
    * το ποσοστό (%) των διαζευγμένων υπαλλήλων,
ε) εμφανίζει τα ονοματεπώνυμα και τους αριθμούς φορολογικού
    μητρώου των υπαλλήλων που είναι άγαμοι, κατά αλφαβητική
    σειρά των ονοματεπωνύμων τους.
Παρατηρήσεις
1) Δεν απαιτείται κανένας έλεγχος για την εγκυρότητα των
    εισερχόμενων δεδομένων.
 2) Θεωρείστε ότι υπάρχει τουλάχιστον ένας άγαμος
     υπάλληλος.

Λύση
    
     Αλγόριθμος Υπ
     Για λ από 1 μέχρι 50
          Διάβασε ΟΝΟΜ[λ]
          Διάβασε ΑΦΜ[λ]
          Διάβασε ΟΙΚ[λ]
     Τέλος_επανάληψης
     'Εγγαμοι <-- 0
      Διαζευμένοι <-- 0
      'Αγαμοι <-- 0
      Για λ από 1 μέχρι 50
           Αν ΟΙΚ[λ] = 'έγγαμος' τότε
                 Έγγαμοι <-- Έγγαμοι+1
           αλλιώς_αν ΟΙΚ[λ] = 'διαζευγμένος' τότε
                 Διαζευγμένοι <-- Διαζευγμένοι+1
           αλλιώς
                 Αν ΟΙΚ[λ] = 'άγαμος' τότε
                       Άγαμοι <-- Άγαμοι+1
                       ΟΝΑΓ[Άγαμοι] <-- ΟΝΟΜ[λ]
                       ΑΦΜΑΓ[Άγαμοι] <-- ΑΦΜ[λ]
                 Τέλος_αν
            Τέλος_αν
      Τέλος_επανάληψης
      Ποσοστό <-- 100*Διαζευγμένοι/50
      Γράψε Έγγαμοι, Ποσοστό
      Για λ από 2 μέχρι Άγαμοι
          Για μ από Άγαμοι μέχρι λ με_βήμα -1
               Αν ΟΝΑΓ[μ-1] > ΟΝΑΓ[μ] τότε
                    Βοηθ <-- ΟΝΑΓ[μ-1]
                    ΟΝΑΓ[μ-1] <-- ΟΝΑΓ[μ]
                    ΟΝΑΓ[μ] <-- Βοηθ
                    ΤΕΜΡ <-- ΑΦΜΑΓ[μ-1]
                    ΑΦΜΑΓ[μ-1] <-- ΑΜΑΓ[μ]
                    ΑΦΜΑΓ[μ] <-- ΤΕΜΡ
               Τέλος_αν
          Τέλος_επανάληψης
      Τέλος_επανάληψης
      Για λ από 1 μέχρι Άγαμοι
          Γράψε ΟΝΑΓ[λ], ΑΦΜΑΓ[λ]
      Τέλος_επανάληψης 
      Τέλος Υπ   

Άσκηση : ταξινόμηση μιας γραμμής

Δίνεται αλφαριθμητικός πίνακας Β[167, 32]. Γράψτε αλγόριθμο
που με δεδομένο τον παραπάνω πίνακα:
α) διαβάζει μια ακέραια τιμή Γ τέτοια ώστε να είναι
    μεγαλύτερη ή ίση από το 1 και μικρότερη ή ίση από
    το 167,
β) ταξινομεί τα στοιχεία της γραμμής Γ του πίνακα Β,
    κατά αλφαβητική σειρά, και στη συνέχεια τα εμφα-
    νίζει στη μονάδα εξόδου.
Παρατήρηση : Ο αλγόριθμος πρέπει να διασφαλίζει την
εγκυρότητα του εισερχόμενου δεδομένου.

Λύση

     Αλγόριθμος  ΤαξΓΡ
     Δεδομένα // Β //
     Αρχή_επανάληψης
          Διάβασε Γ
     Μέχρις_ότου (Γ >= 1) ΚΑΙ (Γ <= 167)
     ! Μεταφορά των στοιχείων της Γ στον Δ[32]
     Για λ από 1 μέχρι 32
          Δ[λ] <-- Β[Γ, λ]
     Τέλος_επανάληψης
     Για λ από 2 μέχρι 32
         Για μ από 32 μέχρι λ με_βήμα -1
               Αν Δ[μ-1] > Δ[μ] τότε
                     Βοηθ <-- Δ[μ-1]
                     Δ[μ-1] <-- Δ[μ]
                     Δ[μ] <-- Βοηθ
               Τέλος_αν
         Τέλος_επανάληψης
     Τέλος_επανάληψης
     ! Μεταφορά των στοιχείων του Δ στη γραμμή Γ
     Για λ από 1 μέχρι 32
          Β[Γ, λ] <-- Δ[λ]
     Τέλος_επανάληψης
     Για λ από 1 μέχρι 32
          Γράψε Β[Γ, λ] 
     Τέλος_επανάληψης
     Τέλος ΤαξΓΡ

Πέμπτη, 20 Μαΐου 2010

Άσκηση : πίνακας συχνοτήτων

Γράψτε πρόγραμμα σε ΓΛΩΣΣΑ το οποίο:
α) διαβάζει 35 ακέραιες θετικές  τιμές που δεν υπερβαίνουν
    το 24, και τις καταχωρεί (στήλη - στήλη) στο δυσδιάστατο
    πίνακα Α[5, 7],
β) υπολογίζει και εμφανίζει πόσες φορές υπάρχουν οι
    τιμές 12, 13, 14, ...., 21 μέσα στον πίνακα Α.
γ) υπολογίζει και εμφανίζει πόσες φορές υπάρχουν οι τιμές
    18, 19, 20, 21 και 22 μέσα στην 4η στήλη του Α.
Παρατήρηση: Το πρόγραμμα πρέπει να διασφαλίζει την
εγκυρότητα των εισερχόμενων δεδομένων.

Λύση
     
    ΠΡΟΓΡΑΜΜΑ ΣΥΧΝΟΤΗΤΕΣ
    ΜΕΤΑΒΛΗΤΕΣ
          ΑΚΕΡΑΙΕΣ : Α[5, 7], ν, τ, θ, Τιμή, Φορ[10], ΦορΣΤ[5]
    ΑΡΧΗ
          ΓΙΑ ν ΑΠΟ 1 ΜΕΧΡΙ 7
               ΓΙΑ τ ΑΠΟ 1 ΜΕΧΡΙ 5
                     ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
                            ΔΙΑΒΑΣΕ Α[τ, ν]
                     ΜΕΧΡΙΣ_ΟΤΟΥ (Α[τ, ν] > 0) ΚΑΙ (Α[τ, ν] <= 24)
               ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
          ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
          ΓΙΑ ν ΑΠΟ 1 ΜΕΧΡΙ 10
                Φορ[ν] <-- 0
          ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
          ΓΙΑ τ ΑΠΟ 1 ΜΕΧΡΙ 5
               ΓΙΑ ν ΑΠΟ 1 ΜΕΧΡΙ 7
                     Τιμή <-- Α[τ, ν]
                     ΑΝ (Τιμή >= 12) ΚΑΙ (Τιμή <= 21) ΤΟΤΕ
                           θ <-- Τιμή-11
                           Φορ[θ] <-- Φορ[θ]+1
                     ΤΕΛΟΣ_ΑΝ
               ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
           ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
           ΓΙΑ ν ΑΠΟ 1 ΜΕΧΡΙ 10
                ΓΡΑΨΕ 'Η τιμή ', ν+11, ' συναντήθηκε'
                ΓΡΑΨΕ Φορ[ν], ' φορές'
           ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
           ΓΙΑ ν ΑΠΟ 1 ΜΕΧΡΙ 5
                ΦορΣΤ[ν] <-- 0
           ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
           ΓΙΑ τ ΑΠΟ 1 ΜΕΧΡΙ 5
                 Τιμή <-- Α[τ, 4]
                 ΑΝ (Τιμή >= 18) ΚΑΙ (Τιμή <= 22) ΤΟΤΕ
                           θ <-- Τιμή-17
                           ΦορΣΤ[θ] <-- ΦορΣΤ[θ]+1
                 ΤΕΛΟΣ_ΑΝ
           ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
           ΓΙΑ ν ΑΠΟ 1 ΜΕΧΡΙ 5
                ΓΡΑΨΕ 'Η τιμή ', ν+17, ' συναντήθηκε'
                ΓΡΑΨΕ ΦορΣΤ[ν], ' φορές'
           ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
    ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
   

Άσκηση : Μέγιστα και ελάχιστα ανά γραμμή ή ανά στήλη

Θεωρήστε τον πίνακα  ΧΡΟΝΟΙ[10, 5] που περιέχει τους
χρόνους που πέτυχαν 10 δρομείς στο αγώνισμα των 100μ.
σε 5 διεθνή τουρνουά. Γράψτε αλγόριθμο που με δεδομένο
τον παραπάνω πίνακα, υπολογίζει και εμφανίζει:
α) την καλύτερη επίδοση κάθε δρομέα και τον αύξοντα
     αριθμό (1-5) του τουρνουά στο οποίο την πέτυχε (όλες
     οι επιδόσεις των αθλητών είναι διαφορετικές μεταξύ
     τους),
β) τη χειρότερη επίδοση για κάθε τουρνουά και τον αύξοντα
    αριθμό (1-10) του δρομέα που την πέτυχε(θεωρήστε ότι
    είναι μοναδικός).


Λύση

     Αλγόριθμος Δρομείς
     Δεδομένα // ΧΡΟΝΟΙ //
     Για λ από 1 μέχρι 10
          Καλ <-- ΧΡΟΝΟΙ[λ, 1]
          ΘΚαλ <-- 1
          Για ρ από 2 μέχρι 5
                Αν ΧΡΟΝΟΙ[λ, ρ] < Καλ τότε
                      Καλ <-- ΧΡΟΝΟΙ[λ, ρ]
                      ΘΚαλ <-- ρ
                Τέλος_αν
          Τέλος_επανάληψης
          Γράψε Καλ, ΘΚαλ
     Τέλος_επανάληψης
     Για ρ από 1 μέχρι 5
          Χειροτ  <-- ΧΡΟΝΟΙ[1, ρ]
          ΘΧειρ <-- 1
          Για λ από 2 μέχρι 10
                Αν ΧΡΟΝΟΙ[λ, ρ] > Χειροτ τότε
                      Χειροτ <-- ΧΡΟΝΟΙ[λ, ρ]
                      ΘΧειρ <-- λ
                Τέλος_αν
          Τέλος_επανάληψης
          Γράψε Χειροτ, ΘΧειρ
     Τέλος_επανάληψης
     Τέλος Δρομείς