Ασκήσεις Πίνακες  -    (1) 

Άσκηση 1. Η στατιστική υπηρεσία της ευρωπαϊκής ένωσης για μια μελέτη σχετικά με τον πληθυσμό στα ευρωπαϊκά κράτη διατηρεί πίνακα ΧΩΡΑ[25] με τα ονόματα των κρατών – μελών και παράλληλους πίνακες ΠΛΗΘ_2005 και ΠΛΗΘ_2006 με τους πληθυσμούς των κρατών αυτών για τα έτη 2005 και 2006 αντίστοιχα. Να αναπτύξετε αλγόριθμο που με δεδομένους τους παραπάνω πίνακες:
1. Να εμφανίζει την επί τοις εκατό αύξηση του πληθυσμού στην ευρωπαϊκή ένωση από το 2005 στο 2006.
2. Να εμφανίζει για κάθε κράτος την επί τοις εκατό αύξηση του πληθυσμού από το 2005 στο 2006. Ποιο κράτος είχε τη μεγαλύτερη επί τοις εκατό αύξηση.
3. Το ίδιο κράτος είχε τους περισσότερους κατοίκους τα δυο έτη; Αν ναι, τότε ποιο είναι αυτό;

Λύση
Αλγόριθμος Στατιστικά
  Δεδομένα // ΧΩΡΑ, ΠΛΗΘ_2005, ΠΛΗΘ_2006 //
  S2005 ← 0
  S2006 ← 0
  Για i από 1 μέχρι 25
    S2005 ← S2005 + ΠΛΗΘ_2005[i]
    S2006 ← S2006 + ΠΛΗΘ_2006[i]
  Τέλος_επανάληψης
  ποσοστό ← 100 * (S2006 – S2005) / S2005
  Εμφάνισε ποσοστό
  max ← 100 * (ΠΛΗΘ_2006[1] – ΠΛΗΘ_2005[1]) / ΠΛΗΘ_2005[1]
  Για i από 1 μέχρι 25
    ποσοστό ← 100 * (ΠΛΗΘ_2006[i] – ΠΛΗΘ_2005[i]) / ΠΛΗΘ_2005[i]
    Eμφάνισε ποσοστό
    Αν max < ποσοστό τότε
      max ← ποσοστό
      θ ← i
    Τέλος_αν
  Τέλος_επανάληψης
  Εμφάνισε ΧΩΡΑ[θ]
  ! ... εύρεση μεγίστου και θέσης για τους πίνακες ΠΛΗΘ_2005 και ΠΛΗΘ_2006
  Αν θ2005 = θ2006 τότε
    Εμφάνισε "Η ίδια χώρα είχε μέγιστο πληθυσμό και τις δυο χρονιές", ΧΩΡΑ[θ2006]
  Αλλιώς
    Εμφάνισε "Άλλη χώρα μέγιστο πληθυσμό κάθε χρονιά"
  Τέλος_αν
Τέλος Στατιστικά

Άσκηση 2. Να αναπτύξετε αλγόριθμο ο οποίος:
α. θα διαβάζει τον αριθμό των μαθητών της Α’ λυκείου ενός σχολείου. Πρέπει να είναι θετικός αριθμός.
β. θα διαβάζει για κάθε μαθητή το όνομά του και το βαθμό του (στην εικοσαβάθμια κλίμακα) πραγματοποιώντας έλεγχο δεδομένων.
γ. θα εκτυπώνει πόσες λάθος καταχωρήσεις (λάθος βαθμοί) δόθηκαν.
δ. θα εκτυπώνει το μέσο όρο βαθμολογίας της τάξης.
ε. θα εκτυπώνει τα ονόματα των μαθητών που έχουν βαθμό πλησιέστερα στο μέσο όρο.

Λύση
Αλγόριθμος Λύκειο
Αρχή_επανάληψης
  Διάβασε Ν
Μέχρις_ότου Ν > 0
π ← 0
Για i από 1 μέχρι Ν
  Διάβασε O[i]
  Αρχή_επανάληψης
    Διάβασε Β[i]
    π ← π + 1
   Μέχρις_ότου Β[i] >= 0 και B[i] <= 20
Τέλος_επανάληψης
Εκτύπωσε π – Ν  ! όλες οι εκχωρήσεις – τις Ν έγκυρες
! ... υπολογισμός αθροίσματος στοιχείων πίνακα Β
μο ← S / Ν
Εκτύπωσε μο  ! ερώτημα δ
min ← Α_Τ(Β[1] – μο)
Για i από 2 μέχρι Ν
  Αν Α_Τ(Β[i] – μο) < min τότε
    min ← Α_Τ(Β[i] – μο)
  Τέλος_αν
Τέλος_επανάληψης
Για i από 1 μέχρι Ν
  Αν Α_Τ(Β[i] – μο) = min τότε
    Εκτύπωσε Ο[i]
  Τέλος_αν
Τέλος_επανάληψης
Τέλος Λύκειο

Άσκηση 3. Η γραμματεία του λυκείου Τενεούπολης καταχωρεί τα ονόματα των μαθητών της 100 μαθητών της Α λυκείου και τους 10 βαθμούς του κάθε μαθητή στα μαθήματα που βαθμολογήθηκε. Να αναπτύξετε αλγόριθμο που:
α. θα διαβάζει τα παραπάνω στοιχεία σε κατάλληλους πίνακες.
β. θα εκτυπώνει το όνομα του 5ου μαθητή και πόσες φορές έχει βαθμό άριστα.
γ. θα εκτυπώνει το μέσο όρο του 23ου μαθητή.
δ. θα εκτυπώνει το μεγαλύτερο βαθμό στο 3ο μάθημα και το όνομα του μαθητή.
ε. θα εκτυπώνει το μέσο όρο στο 1ο μάθημα.

Λύση
Αλγόριθμος Λύκειο
Για i από 1 μέχρι 100  ! ερώτημα 1
  Διάβασε Ο[i]
  Για j από 1 μέχρι 10
    Διάβασε B[i, j]
  Τέλος_επανάληψης
Τέλος_επανάληψης
Εκτύπωσε Ο[5]
π ← 0
Για j από 1 μέχρι 10
  Αν Β[5, j] >= 18 τότε
    π ← π + 1
  Τέλος_αν
Τέλος_επανάληψης
Εκτύπωσε π
S ← 0  ! ερώτημα 3
Για j από 1 μέχρι 10
  S ← S + ΕΙΣ[23, j]  
Τέλος_επανάληψης
μο ← S / 10
Εκτύπωσε μο
max ← Β[1, 3]  ! ερώτημα 4
γρ ← 1  
Για i από 2 μέχρι 100
  Αν Β[i, 3] > max τότε
    max ← Β[i, 3]
    γρ ← i
  Τέλος_αν
Τέλος_επανάληψης
Εκτύπωσε Ο[γρ], max
S ← 0  ! ερώτημα 5
Για i από 1 μέχρι 10
  S ← S + B[i, 1]  
Τέλος_επανάληψης
μο ← S / 100
Εκτύπωσε μο
Τέλος Λύκειο

Άσκηση 4. Σε πίνακες Π2005[200, 12] και Π2006[200, 12] έχουμε αποθηκεύσει τις μηνιαίες πωλήσεις των 200 σημείων πώλησης της εταιρείας για τα έτη 2005 και 2006 αντίστοιχα. Να αναπτύξετε αλγόριθμο που θα εκτυπώνει:
1. Ποιο σημείο πώλησης και σε ποιο μήνα επέτυχε τις περισσότερες πωλήσεις το 2005 και ποιο το 2006; Πρόκειται για το ίδιο σημείο πώλησης;
2. Ο Μάιος του 2005 ήταν πιο προσοδοφόρος ή αυτός του 2006;
3. Πόσες φορές το σημείο πώλησης 33 είχε μεγαλύτερες πωλήσεις το 2005 και πόσες λιγότερες σε σχέση με το 2006.
4. Το 2005 ήταν καλύτερο για την εταιρεία ή το 2006;

Λύση
Αλγόριθμος Εταιρεία
Δεδομένα // Π2005, Π2006 //
! ... εύρεση max και θέση για τους πίνακες Π2005 και Π2006
Εκτύπωσε γρ2005, στ2005, γρ2006, στ2006
Αν γρ2005 = γρ2006 τότε
  Εκτύπωσε "το ίδιο σημείο πώλησης"
Αλλιώς
  Εκτύπωσε "όχι το ίδιο"
Τέλος_αν
Μάιος2005 ← 0   ! ερώτημα 2
Μάιος2006 ← 0
Για i από 1 μέχρι 200
  Μάιος2005 ← Μάιος2005 + Π2005[i, 5]
  Μάιος2006 ← Μάιος2006 + Π2006[i, 5]
Τέλος_επανάληψης
Αν Μάιος2005 > Μάιος2006 τότε
  Εκτύπωσε "2005"
Αλλιώς_αν Μάιος2005 < Μάιος2006 τότε
  Εκτύπωσε "2006"
Αλλιώς
  Εκτύπωσε "το ίδιο"
Τέλος_αν
μ2005 ← 0  ! ερώτημα 3
μ2006 ← 0
Για j από 1 μέχρι 12
  Αν Π2005[33, j] > Π2006[33, j] τότε
    μ2005 ← μ2005 + 1
  Αλλιώς_αν Π2005[33, j] < Π2006[33, j] τότε
    μ2006 ← μ2006 + 1  
  Τέλος_αν
Τέλος_επανάληψης
Εκτύπωσε μ2005, μ2006
! ...εύρεση αθροίσματος πινάκων Π2005 και Π2006
Αν S2005 > S2006 τότε
  Εκτύπωσε "2005"
Αλλιώς_αν S2005 < S2006 τότε
  Εκτύπωσε "2006"
Αλλιώς
  Εκτύπωσε "το ίδιο"
Τέλος_αν
Τέλος Εταιρεία

Άσκηση 5. Διαθέτουμε σε κατάλληλους πίνακες τις μηνιαίες πωλήσεις των 200 πωλητών της εταιρείας μας. Να αναπτύξετε αλγόριθμο ο οποίος:
1. θα εκτυπώνει πόσοι πωλητές έχουν επιτύχει συνολικό ποσό πωλήσεων μεγαλύτερο από 1000€ κατά τους μήνες Ιούνιο-Ιούλιο-Αύγουστο.
2. Πόσοι πωλητές είχαν το Σεπτέμβριο περισσότερες πωλήσεις από τον Μάιο.
3. Πόσοι πωλητές ήταν καλύτεροι το 2ο τρίμηνο σε σχέση με το 1ο.
4. Ο 10ος πωλητής ποιους μήνες επέτυχε πωλήσεις περισσότερες από 2000€;
5. Ο 100ος πωλητής με έναρξη τον Ιανουάριο ποιο μήνα επέτυχε συγκεντρωτικές πωλήσεις περισσότερες από 10.000€; Αν δεν ξεπέρασε το όριο αυτό να εμφανίζεται κατάλληλο μήνυμα.

Λύση
Αλγόριθμος εταιρεία
Δεδομένα // ΕΙΣ //
π ← 0  ! ερώτημα 1
Για i από 1 μέχρι 200
  S ← 0  
  Για j από 6 μέχρι 8
    S ← S + ΕΙΣ[i, j]  
  Τέλος_επανάληψης
  Αν S > 1000 τότε
    π ← π + 1
  Τέλος_αν
Τέλος_επανάληψης
Εκτύπωσε π
π ← 0  ! ερώτημα 2
Για i από 1 μέχρι 200
  Αν ΕΙΣ[i, 9] > ΕΙΣ[i, 5] τότε
    π ← π + 1
  Τέλος_αν
Τέλος_επανάληψης
Εκτύπωσε π
μ ← 0  ! ερώτημα 3
Για i από 1 μέχρι 200
  S1 ← 0  
  Για j από 1 μέχρι 3
    S1 ← S1 + ΕΙΣ[i, j]  
  Τέλος_επανάληψης
  S2 ← 0  
  Για j από 4 μέχρι 6
    S2 ← S2 + ΕΙΣ[i, j]  
  Τέλος_επανάληψης
  Αν S2 > S1 τότε
    μ ← μ + 1
  Τέλος_αν
Τέλος_επανάληψης
Εκτύπωσε μ
Για j από 1 μέχρι 12  ! ερώτημα 4
  Αν ΕΙΣ[10, j] > 2000 τότε
    Εκτύπωσε j
  Τέλος_αν
Τέλος_επανάληψης
j ← 1  ! ερώτημα 5
διακοπή ← ψευδής
S ← 0
Όσο (διακοπή = ψευδής) και (j <= 12) επανάλαβε
  S ← S + ΕΙΣ[100, j]
  Αν (S > 1000) τότε
   διακοπή ← αληθής
   μήνας ← j
  Αλλιώς
   j ← j + 1
  Τέλος_αν
Τέλος_επανάληψης
Αν διακοπή = αληθής τότε  ! μήνας <> 0
  Εκτύπωσε μήνας
Αλλιώς
  Εκτύπωσε "Δεν ξεπεράστηκε το όριο"
Τέλος_αν
Τέλος εταιρεία

Άσκηση 6. Καταγράφουμε σε πίνακα ΟΝ τα ονόματα των 130 μαθητών της Γ γυμνασίου του δήμου Τενεούπολης και σε πίνακα Β τους βαθμούς κάθε μαθητή σε κάθε ένα από τα 10 μαθήματα. Να αναπτύξετε αλγόριθμο ο οποίος αφού διαβάζει τα στοιχεία των πινάκων ΟΝ και Β:
α. να εμφανίζει ποιος μαθητής έχει το μεγαλύτερο μέσο όρο, που να είναι όμως μικρότερος από 17.
β. να εμφανίζει για κάθε φοιτητή, ποιος είναι ο μέσος όρος των βαθμών του που βρίσκονται στο διάστημα [14, 18].
γ. να εμφανίζει τους μαθητές που είχαν τις περισσότερες φορές τον υψηλότερο βαθμό σε κάποιο μάθημα.
δ. να εμφανίζει τα ονόματα των μαθητών που είχαν τουλάχιστον δυο βαθμούς άριστα.

Λύση
Αλγόριθμος Σχολείο
! ... είσοδος πινάκων ΟΝ[130] και Β[130, 10]
max ← -1 ! ερώτημα α
Για i από 1 μέχρι 130
  S ← 0
  Για j από 1 μέχρι 10
    S ← S + Β[i, j]
  Τέλος_επανάληψης
  μο ← S / 10
  Αν μο > max και μο < 17 τότε
    max ← μο
    θ ← i
  Τέλος_αν
Τέλος_επανάληψης
Αν max <> -1 τότε
  Εκτύπωσε ΟΝ[θ], max
Τέλος_αν
Για i από 1 μέχρι 130  ! ερώτημα β
  S ← 0
  π ← 0
  Για j από 1 μέχρι 10
    Αν Β[i, j] >= 14 και Β[i, j] <= 18 τότε
      S ← S + Β[i, j]
      π ← π + 1
    Τέλος_αν
  Τέλος_επανάληψης
  Αν π <> 0 τότε 
    μο ← S / π
    Εκτύπωσε ΟΝ[i], μο
  Αλλιώς
    Εκτύπωσε ΟΝ[i], "κανείς βαθμός"
  Τέλος_αν
Τέλος_επανάληψης
Για i από 1 μέχρι 130  ! ερώτημα γ
  Μ[i] ← 0
Τέλος_επανάληψης
Για j από 1 μέχρι 10
  max ← Β [1, j]
  Για i από 1 μέχρι 130
    Αν B[i, j] > max τότε
      max ← B[i, j]
    Τέλος_αν
  Τέλος_επανάληψης
  Για i από 1 μέχρι 130
    Αν B[i, j] = max τότε
      M[i] ← M[i] + 1
    Τέλος_αν
  Τέλος_επανάληψης
Τέλος_επανάληψης
! ... εύρεση max πίνακα Μ
Για i από 1 μέχρι 130
  Αν Μ[i] = max τότε
    Εκτύπωσε ΟΝ[i]
  Τέλος_αν
Τέλος_επανάληψης
Για i από 1 μέχρι 130  ! ερώτημα δ
  π ← 0
  j ← 1
  Όσο j <= 10 και π < 2 επανάλαβε
    Αν Β[i, j] > 18 τότε
      π ← π + 1
    Αλλιώς
      j ← j + 1
    Τέλος_αν
  Τέλος_επανάληψης
  Αν π = 2 τότε
    Εκτύπωσε ΟΝ[i]
  Τέλος_αν
Τέλος_επανάληψης
Τέλος Σχολείο

Άσκηση 7. Διαθέτουμε έναν πίνακα Ο[10.000.000] με όλα τα ονόματα των ελλήνων. Να αναπτύξετε αλγόριθμο που:
1. θα δημιουργεί πίνακα ΜΟΝΑΔ με όλα τα διαφορετικά ονόματα που υπάρχουν.
2. Θα εκτυπώνει κάθε μοναδικό όνομα καθώς και το πόσες φορές συναντάται. Ποιο είναι το πιο δημοφιλές όνομα; .

Λύση
Αλγόριθμος Στατιστική
Δεδομένα // Ο //
ΜΗΝΑΣ[1] ← Ο[1]  ! πέρνα το πρώτο όνομα
μ ← 1
Για k από 2 μέχρι 10000000
  !... σειριακή αναζήτηση στον πίνακα ΜΟΝΑΔ (στοιχεία μ)
  ! με κλειδί το Ο[k]
  Αν done = ψευδής τότε
    μ ← μ + 1
    ΜΟΝΑΔ[μ] ← Ο[k]
  Τέλος_αν
Τέλος_επανάληψης
! ερώτημα 2, δημιουργία πίνακα ΣΥΧΝ, μ στοιχεία
Για i από 1 μέχρι μ
  ΣΥΧΝ[i] ← 0
Τέλος_επανάληψης
Για i από 1 μέχρι μ   ! α τρόπος
  ! ... σειριακή αναζήτηση στον πίνακα ΜΟΝΑΔ με κλειδί το Ο[k]
  ΣΥΧΝ[pos] ← ΣΥΧΝ[pos] + 1  ! σίγουρα βρέθηκε
Τέλος_επανάληψης
Για i από 1 μέχρι μ   ! β τρόπος
  Για k από 1 μέχρι 10000000
    Αν ΜΟΝΑΔ[i] = O[k] τότε
      ΣΥΧΝ[i] ← ΣΥΧΝ[i] + 1
    Τέλος_αν
  Τέλος_επανάληψης
Τέλος_επανάληψης
! ... εύρεση μεγίστου πίνακα ΣΥΧΝ (μ στοιχεία)
Για i από 1 μέχρι μ
  Αν ΣΥΧΝ[i] = max τότε
    Εκτύπωσε ΜΟΝΑΔ[i]
  Τέλος_αν
Τέλος_επανάληψης
Τέλος Στατιστική

Άσκηση 8. Μια εταιρεία διανομής κινηματογραφικών ταινιών έχει καταγράψει στους παρακάτω πίνακες τα στοιχεία για την διακίνηση των ταινιών της παγκόσμια, για τη χρονιά που πέρασε: πίνακας ΤΑΙΝΙΑ[200] που περιέχει τους τίτλους των ταινιών, πίνακας ΧΩΡΑ[120] που περιέχει τα ονόματα των 120 χωρών στις οποίες η εταιρεία δραστηριοποιείται και πίνακα ΕΙΣΠΡΑΞΕΙΣ[200, 120] που περιέχει τις εισπράξεις από την προβολή κάθε ταινίας σε κάθε χώρα (αν κάποια ταινία δεν προβλήθηκε σε κάποια χώρα υπάρχει η τιμή μηδέν). Να αναπτύξετε αλγόριθμο που θα διαβάζει τους παραπάνω πίνακες και στη συνέχεια:
1. θα εκτυπώνει τις ταινίες που έχουν τουλάχιστον σε 3 χώρες εισπράξεις μεγαλύτερες από 100.000€. Θα εκτυπωθεί μια φορά το όνομα κάθε ταινίας.
2. θα διαβάζει το όνομα μιας χώρας και θα εκτυπώνει πόσες ταινίες έχουν προβληθεί σε αυτή.
3. θα διαβάζει τον τίτλο μιας ταινίας και θα εκτυπώνει τις χώρες που προβλήθηκε με διάταξη από αυτήν με τις περισσότερες εισπράξεις προς αυτήν με τις λιγότερες. Οι χώρες που η ταινία δεν προβλήθηκε να μην εκτυπώνονται.

Λύση
Αλγόριθμος Κινηματογράφος
Για i από 1 μέχρι 200
  Διάβασε ΤΑΙΝΙΑ[i]
Τέλος_επανάληψης
Για j από 1 μέχρι 120
  Διάβασε ΧΩΡΑ[j]
Τέλος_επανάληψης
Για i από 1 μέχρι 200
  Για j από 1 μέχρι 120
    Διάβασε ΕΙΣΠΡ[i, j]
  Τέλος_επανάληψης
Τέλος_επανάληψης
Για i από 1 μέχρι 200  ! ερώτημα α
  διακοπή ← ψευδής
  π ← 0
  j ← 1
  Όσο (διακοπή = ψευδής) και (j <= 120) επανάλαβε
    Αν (ΕΙΣΠΡ[i, j] > 100000) τότε
      π ← π + 1
    Τέλος_αν
    Αν (π = 3) τότε
      Εκτύπωσε ΤΑΙΝΙΑ[i]
      διακοπή ← αληθής
    Αλλιώς
      j ← j + 1
    Τέλος_αν
  Τέλος_επανάληψης
Τέλος_επανάληψης
Διάβασε όνομα_χώρας  ! ερώτημα β
! ... σειριακή αναζήτηση στον πίνακα ΧΩΡΑ
! με κλειδί όνομα_χώρας
Αν (done = αληθής) τότε
  πλ ← 0
  Για i από 1 μέχρι 200
    Αν ΕΙΣΠΡ[i, pos] <> 0 τότε
      πλ ← πλ + 1
    Τέλος_αν
  Τέλος_επανάληψης
  Εκτύπωσε πλ
Αλλιώς
  Εμφάνισε "Δεν υπάρχει χώρα με αυτό το όνομα"
Τέλος_αν
Διάβασε τίτλος_ταινίας ! ερώτημα γ
! ... σειριακή αναζήτηση στον πίνακα ΤΑΙΝΙΑ με κλειδί το τίτλος_ταινίας
Αν (done = αληθής) τότε
  ! φθίνουσα ταξινόμηση γραμμής pos πίνακα ΕΙΣΠΡ (μονοδιάστατος πίνακας)
  Για i από 2 μέχρι 120
    Για j από 200 μέχρι i με_βήμα –1
      Αν ΕΙΣΠΡ[pos, j-1] < ΕΙΣΠΡ[pos, j]  τότε
        Αντιμετάθεσε ΧΩΡΑ[j-1], ΧΩΡΑ[j]
        Για k από 1 μέχρι 200 ! όλες οι γραμμές
          Αντιμετάθεσε ΕΙΣΠΡ[k, j-1], ΕΙΣΠΡ[k, j]
        Τέλος_επανάληψης
      Τέλος_αν
    Τέλος_επανάληψης
  Τέλος_επανάληψης
  διακοπή ← ψευδής
  j ← 1
  Όσο (διακοπή = ψευδής) και (j <= 120) επανάλαβε
    Αν (ΕΙΣΠΡ[pos, j] <> 0) τότε
      Εκτύπωσε ΧΩΡΑ[j]
      j ← j + 1
    Αλλιώς
      διακοπή ← αληθής
    Τέλος_αν
  Τέλος_επανάληψης
Αλλιώς
 Εμφάνισε "Δεν υπάρχει τέτοια ταινία"
Τέλος_αν
Τέλος Κινηματογράφος

Άσκηση 9. Ένας εκδοτικός οίκος χρησιμοποιεί 35 διανομείς για τη διακίνηση των βιβλίων του. Στο τέλος κάθε μήνα καταγράφονται οι πωλήσεις που πραγματοποιήθηκαν από κάθε διανομέα ώστε να υπολογιστεί και το μπόνους που θα του αποδοθεί. Είναι ευνόητο ότι οι πωλήσεις ενός διανομέα σε χρονικό διάστημα ενός μηνός δεν είναι κατ’ ανάγκην 30. Το ποσό του μπόνους υπολογίζεται κλιμακωτά ανάλογα με το ποσό των μηνιαίων πωλήσεων κάθε διανομέα σύμφωνα με τον παρακάτω πίνακα:

Συνολικές μηνιαίες
πωλήσεις διανομέα (€)

Μπόνους
%

Μέχρι και 200

0

Άνω των 200 μέχρι και 1000

1.5

Άνω των 1000

4

Να αναπτύξετε αλγόριθμο που θα επιτελεί τις παρακάτω ενέργειες:
1. Για κάθε διανομέα: α. θα διαβάζει το όνομά του και θα το καταχωρεί σε πίνακα Ο καθώς και το μηνιαίο βασικό μισθό του και θα το καταχωρεί σε πίνακα Β.
β. θα διαβάζει επαναληπτικά τα ποσά των πωλήσεων που πέτυχε τον προηγούμενο μήνα και θα υπολογίζει τις συνολικές μηνιαίες πωλήσεις. Η επαναληπτική διαδικασία θα ολοκληρώνεται όταν εισαχθεί αρνητικός αριθμός ή το μηδέν.
γ. θα υπολογίζει το μπόνους που θα λάβει και θα το εκτυπώνει.
2. Θα δημιουργεί πίνακα Τ, που θα περιέχει τις τελικές μηνιαίες απολαβές κάθε διανομέα.
3. Να εκτυπώνονται τα ονόματα όσων διανομέων είχαν το δεύτερο μεγαλύτερο τελικό μισθό μεταξύ των υπαλλήλων του εκδοτικού οίκου.
4. Θα ελέγχει ποιος διανομέας έχει τον υψηλότερο τελικό μισθό που να είναι ταυτόχρονα μικρότερος από 600 € και θα εκτυπώνει το όνομά του. Αν δεν υπάρχει τέτοιος, να εκτυπώνεται κατάλληλο μήνυμα. .

Λύση
Αλγόριθμος Εκδόσεις
Για i από 1 μέχρι 35
  Διάβασε Ο[i], Β[i]
  S ← 0
  Διάβασε ποσό
  Όσο ποσό > 0 επανάλαβε
    S ← S + ποσό
    Διάβασε ποσό
  Τέλος_επανάληψης
  ! ... κλιμακωτός υπολογισμός μπόνους με βάση το S 
  Εκτύπωσε μπόνους
  Τ[i] ← Β[i] + μπόνους
Τέλος_επανάληψης
! ... φθίνουσα ταξινόμηση πίνακα Τ με ταυτόχρονη αντιμετάθεση πίνακα Ο
διακοπή ← ψευδής
i ← 1
πρώτος ← 0
Όσο (διακοπή = ψευδής) και (i <= 35) επανάλαβε
  Αν (Τ[i] = Τ[1] τότε
    πρώτος ← πρώτος + 1
    i ← i + 1
  Αλλιώς
    διακοπή ← αληθής
  Τέλος_αν
Τέλος_επανάληψης
διακοπή ← ψευδής
i ← πρώτος + 1
Όσο (διακοπή =ψευδής) και (i <= 35) επανάλαβε
  Αν (Τ[i] = Τ[πρώτος + 1] τότε
    Εκτύπωσε Ο[i]
    i ← i + 1
  Αλλιώς
    διακοπή ← αληθής
  Τέλος_αν
Τέλος_επανάληψης
max ← –1
Για i από 1 μέχρι 35
  Αν Τ[i] < 600 και Τ[i] > max τότε
    max ← Τ[i]
    θ ← i
  Τέλος_αν
Τέλος_επανάληψης
Αν max = –1 τότε
  Εκτύπωσε "Κανείς με μισθό < 600"
Αλλιώς
   Εκτύπωσε O[θ]
Τέλος_αν
! ή εναλλακτικά το τελευταίο ερώτημα
done ← ψευδής
pos ← 0
i ← 1
Όσο (done = ψευδής) και (i <= 35) επανάλαβε
  Αν (Τ[i] < 600 τότε
    done ← αληθής
    pos ← i
  Αλλιώς
    i ← i + 1
  Τέλος_αν
Τέλος_επανάληψης
Αν done = αληθής τότε
  Εκτύπωσε O[pos]
Αλλιώς
  Εκτύπωσε "Κανείς με μισθό < 600"
Τέλος_αν
Τέλος Εκδόσεις

Άσκηση 10. Η Γ λυκείου Τενεούπολης διοργανώνει λαχειοφόρο αγορά ώστε να συγκεντρώσει χρήματα για την εκδρομή. Όλοι οι λαχνοί είναι αριθμημένοι με τετραψήφιο αριθμό και πουλήθηκαν όλα. Τα δώρα θα μοιραστούν ως εξής:
- Όποιοι έχουν λαχνό με αριθμό που το τελευταίο ψηφίο είναι ίδιο με αυτό του τυχερού λαχνού κερδίζουν μια μπλούζα.
- Όποιοι έχουν λαχνό με αριθμό που τα 2 πρώτα ή 2 τελευταία ψηφία είναι ίδια με αυτά του τυχερού λαχνού κερδίζουν μια δωροεπιταγή.
- Όποιοι έχουν λαχνό με αριθμό που τα 3 τελευταία ψηφία είναι ίδια με αυτά του τυχερού λαχνού κερδίζουν ένα mp3 player.
- Όποιος έχει τον τυχερό αριθμό κερδίζει μια συσκευή κινητού.
Να αναπτύξετε αλγόριθμο που με δεδομένους πίνακες Ο, ΑΡΘ που περιέχουν τα ονόματα και τους αριθμούς των λαχνών που κατέχουν (κάθε λαχνός αποτελεί μια γραμμή των πινάκων), θα διαβάζει τον τυχερό αριθμό που κληρώθηκε και θα εκτυπώνει τα ονόματα των τυχερών ακολουθούμενα από τα δώρα που κερδίζουν.

Λύση
Αλγόριθμος Λαχνοί
Δεδομένα // Ο, ΑΡΘ //
Διάβασε τυχερός
Για i από 1 μέχρι 3
  Αν ΑΡΘ[i] = τυχερός τότε
    Εκτύπωσε "Κινητό", Ο[i]
  Αλλιώς_αν ΑΡΘ[i] mod 1000 = τυχερός mod 1000 τότε
    Εκτύπωσε "mp3 player", Ο[i]
  Αλλιώς_αν ΑΡΘ[i] mod 100 = τυχερός mod 100 ή 
        &   ΑΡΘ[i] div 100 = τυχερός div 100 τότε
    Εκτύπωσε "Δωροεπιταγή", Ο[i]
  Αλλιώς_αν ΑΡΘ[i] mod 10 = τυχερός mod 10 τότε
    Εκτύπωσε "Μπλούζα", Ο[i]
  Τέλος_αν
Τέλος_επανάληψης
Τέλος Λαχνοί 

Άσκηση 11. Τα 3 σχολεία της Τενεούπολης συμμετέχουν σε μαθητικό διαγωνισμό μαραθωνίου, από κάθε σχολείο αγωνίζονται 30 μαθητές. Δίνονται για κάθε σχολείο δυο παράλληλοι πίνακες με τα όνομα και το χρόνο κάθε μαθητή, με τους χρόνους σε αύξουσα διάταξη. Θεωρούμε ότι οι χρόνοι όλων των μαθητών είναι διαφορετικοί μεταξύ τους. Να αναπτύξετε αλγόριθμο ο οποίος θα διαβάζει το όνομα ενός μαθητή του τρίτου σχολείου και θα εκτυπώνει: πόσοι μαθητές είχαν χρόνο μικρότερο από αυτόν καθώς τα ονόματά τους ξεκινώντας από αυτόν που τερμάτισε πρώτος. Αν αυτός ο μαθητής δεν αγωνίστηκε να εκτυπώνεται κατάλληλο μήνυμα.

Λύση
Αλγόριθμος Μαραθώνιος
Δεδομένα // Ο1, Χ1, Ο2, Χ2, Ο3, Χ3 //
Διάβασε key
! ... αναζήτηση στον πίνακα Ο3 με κλειδί το key
κ ← 0
Για i από 1 μέχρι 30
  Αν X1[i] <  X3[pos] τότε
    κ ← κ + 1
    O[κ] ← O1[i]
    X[κ] ← X1[i]
  Τέλος_αν
Τέλος_επανάληψης
! ... όμοια για τους άλλους δυο πίνακες
! ... έτοιμοι πίνακες Ο, Χ με κ θέσεις
! ... αύξ. ταξινόμηση Χ με αντιμετάθεση πίνακα Ο
Εκτύπωσε κ
Για i από 1 μέχρι κ
  Εκτύπωσε Ο[i]
Τέλος_επανάληψης
Τέλος Μαραθώνιος

Άσκηση 12. Η υπηρεσία τηλεφωνικού καταλόγου διατηρεί τα στοιχεία των κατόχων τηλεφώνου χρησιμοποιώντας μονοδιάστατο πίνακα Π, που κάθε ζευγάρι στοιχείων του αφορούν έναν κάτοχο τηλεφώνου ως εξής: η θέση 1 περιέχει το όνομα και η θέση 2 το τηλέφωνο του πρώτου κατόχου τηλεφώνου, η θέση 3 περιέχει το όνομα και η θέση 4 το τηλέφωνο του δεύτερου κατόχου τηλεφώνου κ.ο.κ. Να αναπτύξετε αλγόριθμο που με δεδομένο τον πίνακα Π:
α. θα διαβάζει ένα όνομα και θα εκτυπώνει το τηλέφωνό του, αν υπάρχει στον κατάλογο,
β. θα εκτυπώνει με αλφαβητική σειρά τους κατόχους τηλεφώνου και τα τηλέφωνά τους.

Λύση
Αλγόριθμος Κατάλογος
Δεδομένα // Ν, Π //
Διάβασε όνομα
! ... σειριακή αναζήτηση στον πίνακα Π με κλειδί το όνομα
! ... προσοχή, θα είναι i ← i + 2, θέσεις 1, 3, 5 ...
Αν done = αληθής τότε
  Εμφάνισε Π[pos + 1]
Αλλιώς
  Εμφάνισε "Δεν υπάρχει"
Τέλος_αν
! για κάθε άτομο, σαν να είχα μονοδιάστατο
Για i από 2 μέχριdiv 2)
  Για j απόdiv 2) μέχρι i με_βήμα –1
    κ ← (j – 1) * 2 + 1  ! σε ποια θέση, ο j;
    Αν Π[κ – 2] > Π[κ] τότε
      Αντιμετάθεσε Π[κ – 2], Π[κ]
      Αντιμετάθεσε Π[κ – 1], Π[κ + 1]
    Τέλος_αν
  Τέλος_επανάληψης
Τέλος_επανάληψης
Για i από 1 μέχρι N με_βήμα 2
  Εκτύπωσε Π[i], Π[i+1]
Τέλος_επανάληψης
Τέλος Κατάλογος

Άσκηση 13. Η εταιρεία DeltaTime Systems εξοπλίζει αθλητικούς αγώνες με συστήματα χρονομέτρησης. Τα συστήματα αυτά δημιουργούν δυο παράλληλους πίνακες: τον πίνακα ΚΩΔΙΚΟΣ με τον κωδικό αριθμό κάθε αθλητή και τον πίνακα ΧΡΟΝΟΣ με τον χρόνο που χρειάστηκε ο αθλητής να τερματίσει. (Οι πίνακες είναι ταξινομημένοι ως προς τον χρόνο). Η διοργανώτρια επιτροπή διαθέτει τον πίνακα ΑΘΛΗΤΗΣ που περιέχει ως πρώτη στήλη το όνομα κάθε αθλητή και ως δεύτερη στήλη τον αντίστοιχο κωδικό του. Να αναπτύξετε αλγόριθμο που, με δεδομένους τους παραπάνω πίνακες:
α. Θα δημιουργεί τον πίνακα ΘΕΣΗ που είναι παράλληλος με τον πίνακα ΑΘΛΗΤΗΣ και περιέχει τη θέση που κατέλαβε κάθε αθλητής.
β. Θα εκτυπώνει αλφαβητικά τα ονόματα των αθλητών και τη θέση που κατέλαβαν.

Λύση
Αλγόριθμος DeltaTime
 Δεδομένα // Πλήθος, ΚΩΔΙΚΟΣ, ΑΘΛΗΤΗΣ //
 Για k από 1 μέχρι Πλήθος
  βρέθηκε ← Ψευδής
  pos ← 0
  i ← 1
  Όσο (βρέθηκε = Ψευδής) και (i <= Πλήθος) επανάλαβε
   Αν ΑΘΛΗΤΗΣ[k, 2] = ΚΩΔΙΚΟΣ[i] τότε
    βρέθηκε ← Aληθής
    pos ← i
   Αλλιώς
    i ← i + 1
   Τέλος_αν
  Τέλος_επανάληψης
  ! ο αθλητής έχει βρεθεί σίγουρα
  ΘΕΣΗ[k] ← pos
 Τέλος_επανάληψης
 ! αύξουσα ταξινόμηση πίνακα ΟΝΟΜΑ με αντιμετάθεση πίνακα ΘΕΣΗ
 Για i από 1 μέχρι Πλήθος
  Εκτύπωσε ΟΝΟΜΑ[i], ΘΕΣΗ[i]
 Τέλος_επανάληψης
Τέλος DeltaTime

Ημερομηνία τελευταίας τροποποίησης: 15/1/2008
Επικοινωνία: Τσιωτάκης Παναγιώτης