ΛΥΣΕΙΣ ΤΟΥ ΣΕΤ1 - ΕΚΜΑΘΗΣΗ ΤΩΝ 1D
3.
4.
Αλγόριθμος ασκ4σετ1_2D
Δεδομένα // Α, Ν, Μ //
Αρχή_επανάληψης
Διάβασε αρ
Μέχρις_ότου αρ ≥ 1 και αρ ≤ Ν
αθρ ← 0
Για j από 1 μέχρι Μ
αθρ ← αθρ + Α[αρ, j]
Τέλος_επανάληψης
μο ← αθρ/Μ
Εκτύπωσε αθρ, μο
Τέλος ασκ4σετ1_2D
5.
Αλγόριθμος ασκ6σετ1_2D
Δεδομένα // Α, Ν //
αθρ1 ← 0
αθρ2 ← 0
Για i από 1 μέχρι Ν
αθρ1 ← αθρ1 + Α[i, 1] + Α[i, Ν]
αθρ2 ← αθρ2 + Α[1, i] + Α[Ν, i]
Τέλος_επανάληψης
Εκτύπωσε αθρ1, 'το άθροισμα της 1ης και τελευταίας στήλης'
Εκτύπωσε αθρ2, 'το άθροισμα της 1ης και τελευταίας γραμμής'
Τέλος ασκ6σετ1_2D
7.
1.
Αλγόριθμος ασκ1σετ1
Για i από 1 μέχρι 65
Διάβασε ΟΝ[i],ΟΦ[i]
Τέλος_επανάληψης
αθρ ← 0
Για i από 1 μέχρι 65
αθρ ← αθρ + ΟΦ[i]
Τέλος_επανάληψης
μο ← αθρ/65
Εκτύπωσε μο
Για i από 1 μέχρι 65
Αν ΟΦ[i] > 65/100*μο τότε
Εκτύπωσε ΟΝ[i]
Τέλος_αν
Τέλος_επανάληψης
Τέλος ασκ1σετ1
! αν ήθελε να δημιουργώ νέους πίνακες με τα ονόματα και τις
! οφειλές των μεγαλοοφειλετών (λειτουργία αντιγραφής), τότε:
! κ ← 0
! Για i από 1 μέχρι 65
! Αν ΟΦ[i] > 65/100*μο τότε
! ΟΝΜΕΓΟΦ [κ] ← ΟΝ[i]
! ΜΕΓΟΦ [κ] ← ΟΦ[i]
! Τέλος_αν
! Τέλος_επανάληψης
! Για i από 1 μέχρι κ
! Εμφάνισε ΟΝΜΕΓΟΦ [i],ΜΕΓΟΦ [i]
! Τέλος_επανάληψης
2.
Αλγόριθμος ασκ2σετ1
Για i από 1 μέχρι 124
Διάβασε ΖΑΡ1[i], ΖΑΡ2[i]
Τέλος_επανάληψης
πλδιπλ ← 0
Για i από 1 μέχρι 124
Αν ΖΑΡ1[i] = ΖΑΡ2[i] τότε
πλδιπλ ← πλδιπλ + 1
Τέλος_αν
Τέλος_επανάληψης
Εμφάνισε πλδιπλ, πλδιπλ/124*100
πλ ← 0
Για i από 1 μέχρι 124
Αν ΖΑΡ1[i] + ΖΑΡ2[i] > 8 τότε
πλδιπλ ← πλδιπλ + 1
Τέλος_αν
Τέλος_επανάληψης
Εμφάνισε πλ
Τέλος ασκ2σετ1
3.
Αλγόριθμος ασκ3σετ1
Για i από 1 μέχρι 125
Διάβασε names[i]
Τέλος_επανάληψης
Για i από 1 μέχρι 125
Αν names[i] = "Τάκης" τότε
names[i] ← "Δημήτρης"
αλλιώς_αν names[i] = "Κώτσιος" τότε
names[i] ← "Κώστας"
αλλιώς_αν names[i] = "Τζορτζίνιο" τότε
names[i] ← "Γιώργος"
αλλιώς
Αν names[i] = "Τζόνης" τότε
names[i] ← "Γιάννης"
Τέλος_αν
Τέλος_αν
Τέλος_επανάληψης
Αποτελέσματα // names //
Τέλος ασκ3σετ1
4.
Αλγόριθμος ασκ4σετ1
Δεδομένα // εκτ, πληθ, ον // !δίνονται...
! ερωτ. α
minεκτ ← εκτ[1]
χ1 ← ον[1]
Για i από 2 μέχρι 27
Αν εκτ[i] < minεκτ τότε
minεκτ ← εκτ[i]
χ1 ← ον[i]
Τέλος_αν
Τέλος_επανάληψης
Εμφάνισε χ1
! ερωτ. β
maxπλ ← πληθ[1]
χ2 ← ον[1]
Για i από 2 μέχρι 27
Αν πληθ[i] < minεκτ τότε
minεκτ ← πληθ[i]
χ2 ← ον[i]
Τέλος_αν
Τέλος_επανάληψης
Εμφάνισε χ2
! ερωτ. γ
αθρ ← 0
Για i από 1 μέχρι 27
αθρ ← αθρ + πληθ[i]
Τέλος_επανάληψης
Εμφάνισε αθρ/27
Τέλος ασκ4σετ1
5.
Αλγόριθμος ασκ5σετ1
Για i από 1 μέχρι 22
Διάβασε εισ[i], κατ[i]
Τέλος_επανάληψης
αθρ ← εισ[1]
posmax ← 1
max ← εισ[1]
posmin ← 1
min ← εισ[1]
Για i από 1 μέχρι 22
αθρ ← αθρ + εισ[i]
Αν εισ[i] < max τότε
max ← εισ[i]
posmin ← i
Τέλος_αν
Αν εισ[i] < max τότε
max ← εισ[i]
posmin ← i
Τέλος_αν
Τέλος_επανάληψης
Εμφάνισε αθρ/22
Εμφάνισε κατ[posmax], κατ[posmin]
Τέλος ασκ5σετ1
ΛΥΣΕΙΣ ΤΟΥ ΣΕΤ1 - ΕΚΜΑΘΗΣΗ ΤΩΝ 2D
1.
Αλγόριθμος ασκ1σετ1_2Δ
Δεδομένα // Α, Ν //
s ← 0
Για i από 1 μέχρι N
Για j από 1 μέχρι N
Αν i = j ή i = N + 1 - j τότε
s ← s + A[i, j]
Τέλος_αν
Τέλος_επανάληψης
Τέλος_επανάληψης
Αποτελέσματα // s //
Τέλος ασκ1σετ1_2Δ
! θα μπορούσε κάποιος να
γράψει χωρίς την Αν...τότε και:! s ← s + A[i,i] + A[i,N+1-i]
2.
Αλγόριθμος ασκ2σετ1_2D
Δεδομένα // A, N, M //
πλ1 ← 0
πλ2 ← 0
Για i από 1 μέχρι N
Για j από 1 μέχρι M
Αν A[i, j] ≥ 15 τότε
πλ1 ← πλ1 + 1
Τέλος_αν
Αν A[i, j] ≤ 9 και A[i, j] ≥ 0 τότε
πλ2 ← πλ2 + 1
Τέλος_αν
Τέλος_επανάληψης
Τέλος_επανάληψης
ποσ1 ← πλ1/(N*M)
ποσ2 ← πλ2/(N*M)
Εμφάνισε ποσ1, '% πάνω από 15'
Εμφάνισε ποσ2, '% μεταξύ 0 και 9'
Τέλος ασκ2σετ1_2D
3.
Αλγόριθμος ασκ3σετ1_2D
Δεδομένα // A, N, M //
Αρχή_επανάληψης
Διάβασε αρ
Μέχρις_ότου αρ ≥ 1 και αρ ≤ M
max ← A[1, αρ] ! αρχικοποίηση στο 1ο στοιχείο της στήλης
θέση ← 1
Για i από 2 μέχρι N
Αν A[i, αρ] > max τότε
max ← A[i, αρ]
θέση ← i
Τέλος_αν
Τέλος_επανάληψης
Εμφάνισε max, θέση
Αρχή_επανάληψης
Διάβασε αρ
Μέχρις_ότου αρ ≥ 1 και αρ ≤ N
min ← A[αρ, 1] ! αρχικοποίηση στο 1ο στοιχείο της γραμμής
θέση ← 1
Για j από 2 μέχρι M
Αν A[αρ, j] < min τότε
min ← A[αρ, j]
θέση ← j
Τέλος_αν
Τέλος_επανάληψης
Εμφάνισε min, θέση
Τέλος ασκ3σετ1_2D
4.
Αλγόριθμος ασκ4σετ1_2D
Δεδομένα // Α, Ν, Μ //
Αρχή_επανάληψης
Διάβασε αρ
Μέχρις_ότου αρ ≥ 1 και αρ ≤ Ν
αθρ ← 0
Για j από 1 μέχρι Μ
αθρ ← αθρ + Α[αρ, j]
Τέλος_επανάληψης
μο ← αθρ/Μ
Εκτύπωσε αθρ, μο
Τέλος ασκ4σετ1_2D
5.
Αλγόριθμος ασκ5σετ1_2D
Δεδομένα // Π //
!ερώτημα α
αθρ16γρ ← 0
Για j από 1 μέχρι 60
αθρ16γρ ← αθρ16γρ + Π[16, j]
Τέλος_επανάληψης
Εκτύπωσε αθρ16γρ
!ερώτημα β
αθρ25στ ← 0
Για i από 1 μέχρι 60
αθρ25στ ← αθρ25στ + Π[i, 25]
Τέλος_επανάληψης
Εκτύπωσε αθρ25στ/60
!ερώτημα γ
min ← Π[1, 1]
max ← Π[1, 60]
Για i από 1 μέχρι 60
Για j από 1 μέχρι 60
Αν i = j και Π[i, j] < min τότε
min ← Π[i, j]
Τέλος_αν
Αν i = 61 - j και Π[i, j] > max τότε ! i=N+1-j
max ← Π[i, j]
Τέλος_αν
Τέλος_επανάληψης
Τέλος_επανάληψης
Εκτύπωσε min, max
Τέλος ασκ5σετ1_2D
! για τα min και max, 2ος τρόπος:
! min ← Π[1,1]
! Για i από 1 μέχρι 60
! Αν Π[i,i] < min τότε
! min ← Π[i,i]
! Τέλος_αν
! Τέλος_επανάληψης
! max ← Π[1,60]
! Για i από 1 μέχρι 60
! Αν Π[i,61-i] > max τότε
! max ← Π[i,61-i]
! Τέλος_αν
! Τέλος_επανάληψης
! Εκτύπωσε min,max
6.
Αλγόριθμος ασκ6σετ1_2D
Δεδομένα // Α, Ν //
αθρ1 ← 0
αθρ2 ← 0
Για i από 1 μέχρι Ν
αθρ1 ← αθρ1 + Α[i, 1] + Α[i, Ν]
αθρ2 ← αθρ2 + Α[1, i] + Α[Ν, i]
Τέλος_επανάληψης
Εκτύπωσε αθρ1, 'το άθροισμα της 1ης και τελευταίας στήλης'
Εκτύπωσε αθρ2, 'το άθροισμα της 1ης και τελευταίας γραμμής'
Τέλος ασκ6σετ1_2D
7.
Αλγόριθμος ασκ7σετ1_2D
Δεδομένα // A, M, N //
Για i από 1 μέχρι M
s ← 0
Για j από 1 μέχρι N
s ← s + A[i, j]
Τέλος_επανάληψης
SUM[i] ← s !δεν αποφεύγεται ο πίνακας,δε μπορώ να αρχικοποιήσω minsum
Τέλος_επανάληψης
minsum ← SUM[1]
line ← 1
Για i από 2 μέχρι M
Αν SUM[i] < minsum τότε
minsum ← SUM[i]
line ← i
Τέλος_αν
Τέλος_επανάληψης
Εκτύπωσε line
Τέλος ασκ7σετ1_2D
8.
Αλγόριθμος ασκ8σετ1_2D
Δεδομένα // Α, Ν, Μ //
max ← Α[1, 1]
Για i από 1 μέχρι Ν
Για j από 1 μέχρι Μ
Αν Α[i, j] > max τότε
max ← Α[i, j]
Τέλος_αν
Τέλος_επανάληψης
Τέλος_επανάληψης
found ← Ψευδής
i ← 1
Όσο i ≤ Ν και found = Ψευδής επανάλαβε
j ← 1
Όσο j ≤ Μ και found = Ψευδής επανάλαβε
Αν Α[i, j] = max τότε
found ← Αληθής
line ← i
column ← j
Εκτύπωσε '1η εμφάνιση στη γραμμή:', line, 'και στη στήλη:', column
Τέλος_αν
j ← j + 1
Τέλος_επανάληψης
i ← i + 1
Τέλος_επανάληψης
found ← Ψευδής
i ← Ν
Όσο i ≥ 1 και found = Ψευδής επανάλαβε
j ← Μ
Όσο j ≥ 1 και found = Ψευδής επανάλαβε
Αν Α[i, j] = max τότε
found ← Αληθής
line ← i
column ← j
Εκτύπωσε 'τελευταία στη γραμμή:', line, 'και στη στήλη:', column
Τέλος_αν
j ← j - 1
Τέλος_επανάληψης
i ← i - 1
Τέλος_επανάληψης
Για i από 1 μέχρι Ν
Για j από 1 μέχρι Μ
Αν Α[i, j] = max τότε
Εκτύπωσε 'μέγιστο στη γραμμή:', i, 'και στήλη:', j
Τέλος_αν
Τέλος_επανάληψης
Τέλος_επανάληψης
Τέλος ασκ8σετ1_2D
9.
Αλγόριθμος ασκ9σετ1_2D
Δεδομένα // A //
Εκτύπωσε 'μέγιστα ανά στήλη:'
Για j από 1 μέχρι 80
max ← A[1, j]
Για i από 2 μέχρι 40
Αν A[i, j] > max τότε
max ← A[i, j]
Τέλος_αν
Τέλος_επανάληψης
Εκτύπωσε max
Τέλος_επανάληψης
sum_all ← 0 ! άθροισμα όλων των γραμμών του πίνακα
Εκτύπωσε 'άθροισμα ανά γραμμή:'
Για i από 1 μέχρι 40
sum ← 0
Για j από 1 μέχρι 80
sum ← sum + A[i, j]
Τέλος_επανάληψης
Εκτύπωσε sum
sum_all ← sum_all + sum
Τέλος_επανάληψης
γεν_μο ← sum_all/3200
πλ ← 0
Για i από 1 μέχρι 40
Για j από 1 μέχρι 80
Αν A[i, j] < γεν_μο τότε
Εκτύπωσε A[i, j]
πλ ← πλ + 1
Τέλος_αν
Τέλος_επανάληψης
Τέλος_επανάληψης
Εκτύπωσε πλ
Τέλος ασκ9σετ1_2D
10.
Αλγόριθμος ασκ10σετ1_2D
Δεδομένα // Π, Ν, Μ //
Για i από 1 μέχρι Ν
min ← Π[1, j]
Για j από 1 μέχρι Μ
Αν Π[i, j] < min τότε
pos ← j
Τέλος_αν
Τέλος_επανάληψης
Για j από 1 μέχρι pos - 1
Π[i, j] ← min
Τέλος_επανάληψης
Τέλος_επανάληψης
Αποτελέσματα // Π, Ν, Μ //
Τέλος ασκ10σετ1_2D
11.
Αλγόριθμος ασκ11σετ1_2D
Για i από 1 μέχρι 20
Διάβασε π[i]
Για j από 1 μέχρι 30
Διάβασε θ[i, j]
Τέλος_επανάληψης
Τέλος_επανάληψης
sum ← 0
Για i από 1 μέχρι 20
Για j από 1 μέχρι 30
sum ← sum + θ[i, j]
Τέλος_επανάληψης
Τέλος_επανάληψης
μεση ← sum/600
Εκτύπωσε μεση
Για i από 1 μέχρι 20
πλ ← 0
Για j από 1 μέχρι 30
Αν θ[i, j] > μεση τότε
πλ ← πλ + 1
Τέλος_αν
Τέλος_επανάληψης
Εκτύπωσε πλ
Τέλος_επανάληψης
Τέλος ασκ11σετ1_2D
Και πότε κάνουμε πίνακα κύριε;
ΑπάντησηΔιαγραφήΥποθέστε ότι ο χρήστης του υπολογιστή εισάγει μια σειρά από πραγματικούς
αριθμούς. Δεν γνωρίζουμε εκ των προτέρων πόσοι θα είναι οι αριθμοί, αλλά μόνο
ένα μέγιστο πλήθος που μπορούμε να δεχτούμε. Μόλις τελειώσει η εισαγωγή δε-
δομένων θέλουμε να εμφανίσουμε στην οθόνη τα παρακάτω αποτελέσματα:
(α) Τον μεγαλύτερο και μικρότερο αριθμό
(β) Τον 2ο και 3ο μεγαλύτερο αριθμό
(γ) Τον μεσαίο αριθμό με κριτήριο την σειρά εισαγωγής
(δ) Τον μεσαίο αριθμό με κριτήριο την ταξινόμησή τους
(ε) Το άθροισμα των τετραγώνων τους.
(στ) Την μέση τιμή τους (μέσος όρος)
(ζ) Το ποσοστό των αριθμών που ήταν μεγαλύτεροι από τον μέσο όρο.
(η) Όλους τους αριθμούς ταξινομημένους σε αύξουσα σειρά.
(θ) Όλους τους αριθμούς με αντίστροφη σειρά απ' αυτήν που διαβάστηκαν.
(ι) Πόσοι αριθμοί ήταν μεγαλύτεροι από 100 και πόσοι μικρότεροι
(κ) Ο αριθμός με την μεγαλύτερη συχνότητα εμφάνισης (υποθέστε ακεραίους
αριθμούς μόνο αλλά με άπειρες δυνατές τιμές)
Σε ποιες από τις προηγούμενες περιπτώσεις θα χρειαστούμε πίνακα για την απο-
θήκευση των αριθμών και σε ποιες μπορούμε να γράψουμε τον αλγόριθμο χωρίς πίνακα;
Απάντηση
(α) Όχι πίνακα. Μετά από κάθε εισαγωγή, αρκεί να θυμόμαστε τον μικρότερο και με-
γαλύτερο απ' όσους έχουν εισαχθεί μέχρι εκείνη τη στιγμή.
(β) Όχι πίνακα. Αρκεί να θυμόμαστε τους τρεις μεγαλύτερους μετά από κάθε εισαγω-
γή.
(γ) Πίνακας. Δεν χρειάζεται να θυμόμαστε όλους τους αριθμούς, αλλά τους μισούς
πιο πρόσφατους. Προσέξτε ότι σε κάθε 2 καινούργιους αριθμούς που εισάγονται,
μπορούμε να “ξεχνάμε” το πιο παλιό αριθμό. Το ποσό μνήμης που χρειαζόμαστε
όμως εξαρτάται από το πλήθος των δεδομένων, οπότε δεν είναι φίλτρο.
(δ) Πίνακας. Η ταξινόμηση απαιτεί πλήρη γνώση όλων των δεδομένων. Είναι αδύ-
νατο να ξέρουμε ποιος αριθμός θα είναι μεσαίος, πριν κάνουμε την ταξινόμηση.
(ε) Όχι πίνακα. Αρκεί να θυμόμαστε το άθροισμα των τετραγώνων των προηγούμενων
αριθμών, χωρίς να ξέρουμε ποιοι ήταν οι αριθμοί.
(στ) Όχι πίνακα. Αρκεί να προσθέτουμε τους αριθμούς που διαβάζουμε και ταυτόχρο-
να να τους μετράμε.
(ζ) Πίνακας. Τον μέσο όρο μπορούμε να τον ξέρουμε μόνο μετά το τέλος της εισα-
γωγής. Για να βρούμε πόσοι αριθμοί ήταν μεγαλύτεροι από τον μέσο όρο πρέπει
να σαρώσουμε όλα τα δεδομένα.
(η) Πίνακας. Χωρίς πίνακα η ταξινόμηση είναι δυνατή μόνο σε πολύ ειδικές περι-
πτώσεις (πχ ταξινόμηση με μέτρημα, εφόσον τα δεδομένα παίρνουν τιμές από πε-
περασμένο σύνολο)
(θ) Πίνακας.
(ι) Όχι πίνακα. Αρκεί να έχουμε δύο μετρητές και να τους ενημερώνουμε μετά από
κάθε εισαγωγή.
(κ) Πίνακας. Εφόσον οι δυνατές τιμές των δεδομένων είναι άπειρες δεν μπορούμε
να χρησιμοποιήσουμε την τεχνική του “μετρήματος”