ΑΛΓΟΡΙΘΜΟΙ «ΕΥΡΕΣΗ ΜΕΣΟΥ ΟΡΟΥ ΠΙΝΑΚΑ»
ΠΛΗ 10 2ος Τόμος : «ΤΕΧΝΙΚΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ» Κεφάλαιο: «ΑΛΓΟΡΙΘΜΟΙ» ΣΕΛΙΔΑ : 37
ΑΛΓΟΡΙΘΜΟΣ ΜΟ-ΠΙΝΑΚΑ-1ΧΝ ΔΕΔΟΜΕΝΑ P:ARRAY[1..N] OF INTEGER; N,X,I: INTEGER; MO: REAL; ΑΡΧΗ ΔΙΑΒΑΣΕ(Ν); Χ:=0; ΓΙΑ Ι:=1 ΕΩΣ Ν ΕΠΑΝΕΛΑΒΕ ΤΥΠΩΣΕ (Ρ[Ι]); Χ:=Χ+Ρ[Ι]; ΓΙΑ-ΤΕΛΟΣ ΜΟ:=Χ/Ν; ΤΥΠΩΣΕ(ΜΟ); ΤΕΛΟΣ
Θα δείξουμε την εκτέλεση του αλγόριθμου βήμα προς βήμα χρησιμοποιώντας έναν πίνακα εισόδου P τεσσάρων (4) στοιχείων.
P
1
2
3
4
P[I]
14
5
166
40
Σε κάθε στιγμή της εκτέλεσης του αλγόριθμου η κίτρινη μπάρα μας δείχνει την εντολή που μόλις εκτελέστηκε.
ΑΛΓΟΡΙΘΜΟΣ ΜΟ-ΠΙΝΑΚΑ-1ΧΝ ΔΕΔΟΜΕΝΑ P:ARRAY[1..N] OF INTEGER; N,X,I: INTEGER; MO: REAL; ΑΡΧΗ ΔΙΑΒΑΣΕ(Ν); Χ:=0; ΓΙΑ Ι:=1 ΕΩΣ Ν ΕΠΑΝΕΛΑΒΕ ΤΥΠΩΣΕ (Ρ[Ι]); Χ:=Χ+Ρ[Ι]; ΓΙΑ-ΤΕΛΟΣ ΜΟ:=Χ/Ν; ΤΥΠΩΣΕ(ΜΟ); ΤΕΛΟΣ
Με κόκκινο χρώμα φαίνονται οι τιμές των μεταβλητών που άλλαξαν τιμή στο τρέχον βήμα. Με μπλε χρώμα φαίνονται τα δεδομένα εισόδου
Ν
Χ
Ι
P[I]
ΜΟ
4
14
2
5
?
P
1
2
3
4
P[I]
14
5
166
40
ΟΘΟΝΗ ΕΚΤΥΠΩΣΗΣ
Το κίτρινο χρώμα μας δείχνει το στοιχείο του πίνακα που εξετάζουμε στο τρέχον βήμα του βρόγχου
Δώστε τιμή για το Ν: 4 14
Ξεκινάμε από την ΑΡΧΗ …
… εκτελούμε τις εντολές …
… και τελειώνουμε στο ΤΕΛΟΣ
ΑΛΓΟΡΙΘΜΟΣ ΜΟ-ΠΙΝΑΚΑ-1ΧΝ ΔΕΔΟΜΕΝΑ P:ARRAY[1..N] OF INTEGER; N,X,I: INTEGER; MO: REAL; ΑΡΧΗ ΔΙΑΒΑΣΕ(Ν); Χ:=0; ΓΙΑ Ι:=1 ΕΩΣ Ν ΕΠΑΝΕΛΑΒΕ ΤΥΠΩΣΕ (Ρ[Ι]); Χ:=Χ+Ρ[Ι]; ΓΙΑ-ΤΕΛΟΣ ΜΟ:=Χ/Ν; ΤΥΠΩΣΕ(ΜΟ); ΤΕΛΟΣ
Ν
Χ
Ι
P[I]
ΜΟ
?
?
?
?
?
P
1
2
3
4
P[I]
14
5
166
40
ΟΘΟΝΗ ΕΚΤΥΠΩΣΗΣ
ΑΛΓΟΡΙΘΜΟΣ ΜΟ-ΠΙΝΑΚΑ-1ΧΝ ΔΕΔΟΜΕΝΑ P:ARRAY[1..N] OF INTEGER; N,X,I: INTEGER; MO: REAL; ΑΡΧΗ ΔΙΑΒΑΣΕ(Ν); Χ:=0; ΓΙΑ Ι:=1 ΕΩΣ Ν ΕΠΑΝΕΛΑΒΕ ΤΥΠΩΣΕ (Ρ[Ι]); Χ:=Χ+Ρ[Ι]; ΓΙΑ-ΤΕΛΟΣ ΜΟ:=Χ/Ν; ΤΥΠΩΣΕ(ΜΟ); ΤΕΛΟΣ
Ν
Χ
Ι
P[I]
ΜΟ
4
?
?
?
?
P
1
2
3
4
P[I]
14
5
166
40
ΟΘΟΝΗ ΕΚΤΥΠΩΣΗΣ Δώστε τιμή για το Ν: 4
ΑΛΓΟΡΙΘΜΟΣ ΜΟ-ΠΙΝΑΚΑ-1ΧΝ ΔΕΔΟΜΕΝΑ P:ARRAY[1..N] OF INTEGER; N,X,I: INTEGER; MO: REAL; ΑΡΧΗ ΔΙΑΒΑΣΕ(Ν); Χ:=0; ΓΙΑ Ι:=1 ΕΩΣ Ν ΕΠΑΝΕΛΑΒΕ ΤΥΠΩΣΕ (Ρ[Ι]); Χ:=Χ+Ρ[Ι]; ΓΙΑ-ΤΕΛΟΣ ΜΟ:=Χ/Ν; ΤΥΠΩΣΕ(ΜΟ); ΤΕΛΟΣ
Ν
Χ
Ι
P[I]
ΜΟ
4
0
?
?
?
P
1
2
3
4
P[I]
14
5
166
40
ΟΘΟΝΗ ΕΚΤΥΠΩΣΗΣ Δώστε τιμή για το Ν: 4
ΑΛΓΟΡΙΘΜΟΣ ΜΟ-ΠΙΝΑΚΑ-1ΧΝ ΔΕΔΟΜΕΝΑ P:ARRAY[1..N] OF INTEGER; N,X,I: INTEGER; MO: REAL; ΑΡΧΗ ΔΙΑΒΑΣΕ(Ν); Χ:=0; ΓΙΑ Ι:=1 ΕΩΣ Ν ΕΠΑΝΕΛΑΒΕ ΤΥΠΩΣΕ (Ρ[Ι]); Χ:=Χ+Ρ[Ι]; ΓΙΑ-ΤΕΛΟΣ ΜΟ:=Χ/Ν; ΤΥΠΩΣΕ(ΜΟ); ΤΕΛΟΣ
Ν
Χ
Ι
P[I]
ΜΟ
4
0
1
14
?
P
1
2
3
4
P[I]
14
5
166
40
ΟΘΟΝΗ ΕΚΤΥΠΩΣΗΣ Δώστε τιμή για το Ν: 4
ΑΛΓΟΡΙΘΜΟΣ ΜΟ-ΠΙΝΑΚΑ-1ΧΝ ΔΕΔΟΜΕΝΑ P:ARRAY[1..N] OF INTEGER; N,X,I: INTEGER; MO: REAL; ΑΡΧΗ ΔΙΑΒΑΣΕ(Ν); Χ:=0; ΓΙΑ Ι:=1 ΕΩΣ Ν ΕΠΑΝΕΛΑΒΕ ΤΥΠΩΣΕ (Ρ[Ι]); Χ:=Χ+Ρ[Ι]; ΓΙΑ-ΤΕΛΟΣ ΜΟ:=Χ/Ν; ΤΥΠΩΣΕ(ΜΟ); ΤΕΛΟΣ
Ν
Χ
Ι
P[I]
ΜΟ
4
0
1
14
?
P
1
2
3
4
P[I]
14
5
166
40
ΟΘΟΝΗ ΕΚΤΥΠΩΣΗΣ Δώστε τιμή για το Ν: 4 14
ΑΛΓΟΡΙΘΜΟΣ ΜΟ-ΠΙΝΑΚΑ-1ΧΝ ΔΕΔΟΜΕΝΑ P:ARRAY[1..N] OF INTEGER; N,X,I: INTEGER; MO: REAL; ΑΡΧΗ ΔΙΑΒΑΣΕ(Ν); Χ:=0; ΓΙΑ Ι:=1 ΕΩΣ Ν ΕΠΑΝΕΛΑΒΕ ΤΥΠΩΣΕ (Ρ[Ι]); Χ:=Χ+Ρ[Ι]; ΓΙΑ-ΤΕΛΟΣ ΜΟ:=Χ/Ν; ΤΥΠΩΣΕ(ΜΟ); ΤΕΛΟΣ
Ν
Χ
Ι
P[I]
ΜΟ
4
14
1
14
?
P
1
2
3
4
P[I]
14
5
166
40
ΟΘΟΝΗ ΕΚΤΥΠΩΣΗΣ Δώστε τιμή για το Ν: 4 14
ΑΛΓΟΡΙΘΜΟΣ ΜΟ-ΠΙΝΑΚΑ-1ΧΝ ΔΕΔΟΜΕΝΑ P:ARRAY[1..N] OF INTEGER; N,X,I: INTEGER; MO: REAL; ΑΡΧΗ ΔΙΑΒΑΣΕ(Ν); Χ:=0; ΓΙΑ Ι:=1 ΕΩΣ Ν ΕΠΑΝΕΛΑΒΕ ΤΥΠΩΣΕ (Ρ[Ι]); Χ:=Χ+Ρ[Ι]; ΓΙΑ-ΤΕΛΟΣ ΜΟ:=Χ/Ν; ΤΥΠΩΣΕ(ΜΟ); ΤΕΛΟΣ
Ν
Χ
Ι
P[I]
ΜΟ
4
14
2
5
?
P
1
2
3
4
P[I]
14
5
166
40
ΟΘΟΝΗ ΕΚΤΥΠΩΣΗΣ Δώστε τιμή για το Ν: 4 14
ΑΛΓΟΡΙΘΜΟΣ ΜΟ-ΠΙΝΑΚΑ-1ΧΝ ΔΕΔΟΜΕΝΑ P:ARRAY[1..N] OF INTEGER; N,X,I: INTEGER; MO: REAL; ΑΡΧΗ ΔΙΑΒΑΣΕ(Ν); Χ:=0; ΓΙΑ Ι:=1 ΕΩΣ Ν ΕΠΑΝΕΛΑΒΕ ΤΥΠΩΣΕ (Ρ[Ι]); Χ:=Χ+Ρ[Ι]; ΓΙΑ-ΤΕΛΟΣ ΜΟ:=Χ/Ν; ΤΥΠΩΣΕ(ΜΟ); ΤΕΛΟΣ
Ν
Χ
Ι
P[I]
ΜΟ
4
14
2
5
?
P
1
2
3
4
P[I]
14
5
166
40
ΟΘΟΝΗ ΕΚΤΥΠΩΣΗΣ Δώστε τιμή για το Ν: 4 14 5
ΑΛΓΟΡΙΘΜΟΣ ΜΟ-ΠΙΝΑΚΑ-1ΧΝ ΔΕΔΟΜΕΝΑ P:ARRAY[1..N] OF INTEGER; N,X,I: INTEGER; MO: REAL; ΑΡΧΗ ΔΙΑΒΑΣΕ(Ν); Χ:=0; ΓΙΑ Ι:=1 ΕΩΣ Ν ΕΠΑΝΕΛΑΒΕ ΤΥΠΩΣΕ (Ρ[Ι]); Χ:=Χ+Ρ[Ι]; ΓΙΑ-ΤΕΛΟΣ ΜΟ:=Χ/Ν; ΤΥΠΩΣΕ(ΜΟ); ΤΕΛΟΣ
Ν
Χ
Ι
P[I]
ΜΟ
4
19
2
5
?
P
1
2
3
4
P[I]
14
5
166
40
ΟΘΟΝΗ ΕΚΤΥΠΩΣΗΣ Δώστε τιμή για το Ν: 4 14 5
ΑΛΓΟΡΙΘΜΟΣ ΜΟ-ΠΙΝΑΚΑ-1ΧΝ ΔΕΔΟΜΕΝΑ P:ARRAY[1..N] OF INTEGER; N,X,I: INTEGER; MO: REAL; ΑΡΧΗ ΔΙΑΒΑΣΕ(Ν); Χ:=0; ΓΙΑ Ι:=1 ΕΩΣ Ν ΕΠΑΝΕΛΑΒΕ ΤΥΠΩΣΕ (Ρ[Ι]); Χ:=Χ+Ρ[Ι]; ΓΙΑ-ΤΕΛΟΣ ΜΟ:=Χ/Ν; ΤΥΠΩΣΕ(ΜΟ); ΤΕΛΟΣ
Ν
Χ
Ι
P[I]
ΜΟ
4
19
3
166
?
P
1
2
3
4
P[I]
14
5
166
40
ΟΘΟΝΗ ΕΚΤΥΠΩΣΗΣ Δώστε τιμή για το Ν: 4 14 5
ΑΛΓΟΡΙΘΜΟΣ ΜΟ-ΠΙΝΑΚΑ-1ΧΝ ΔΕΔΟΜΕΝΑ P:ARRAY[1..N] OF INTEGER; N,X,I: INTEGER; MO: REAL; ΑΡΧΗ ΔΙΑΒΑΣΕ(Ν); Χ:=0; ΓΙΑ Ι:=1 ΕΩΣ Ν ΕΠΑΝΕΛΑΒΕ ΤΥΠΩΣΕ (Ρ[Ι]); Χ:=Χ+Ρ[Ι]; ΓΙΑ-ΤΕΛΟΣ ΜΟ:=Χ/Ν; ΤΥΠΩΣΕ(ΜΟ); ΤΕΛΟΣ
Ν
Χ
Ι
P[I]
ΜΟ
4
19
3
166
?
P
1
2
3
4
P[I]
14
5
166
40
ΟΘΟΝΗ ΕΚΤΥΠΩΣΗΣ Δώστε τιμή για το Ν: 4 14 5 166
ΑΛΓΟΡΙΘΜΟΣ ΜΟ-ΠΙΝΑΚΑ-1ΧΝ ΔΕΔΟΜΕΝΑ P:ARRAY[1..N] OF INTEGER; N,X,I: INTEGER; MO: REAL; ΑΡΧΗ ΔΙΑΒΑΣΕ(Ν); Χ:=0; ΓΙΑ Ι:=1 ΕΩΣ Ν ΕΠΑΝΕΛΑΒΕ ΤΥΠΩΣΕ (Ρ[Ι]); Χ:=Χ+Ρ[Ι]; ΓΙΑ-ΤΕΛΟΣ ΜΟ:=Χ/Ν; ΤΥΠΩΣΕ(ΜΟ); ΤΕΛΟΣ
Ν
Χ
Ι
P[I]
ΜΟ
4
185
3
166
?
P
1
2
3
4
P[I]
14
5
166
40
ΟΘΟΝΗ ΕΚΤΥΠΩΣΗΣ Δώστε τιμή για το Ν: 4 14 5 166
ΑΛΓΟΡΙΘΜΟΣ ΜΟ-ΠΙΝΑΚΑ-1ΧΝ ΔΕΔΟΜΕΝΑ P:ARRAY[1..N] OF INTEGER; N,X,I: INTEGER; MO: REAL; ΑΡΧΗ ΔΙΑΒΑΣΕ(Ν); Χ:=0; ΓΙΑ Ι:=1 ΕΩΣ Ν ΕΠΑΝΕΛΑΒΕ ΤΥΠΩΣΕ (Ρ[Ι]); Χ:=Χ+Ρ[Ι]; ΓΙΑ-ΤΕΛΟΣ ΜΟ:=Χ/Ν; ΤΥΠΩΣΕ(ΜΟ); ΤΕΛΟΣ
Ν
Χ
Ι
P[I]
ΜΟ
4
185
4
40
?
P
1
2
3
4
P[I]
14
5
166
40
ΟΘΟΝΗ ΕΚΤΥΠΩΣΗΣ Δώστε τιμή για το Ν: 4 14 5 166
ΑΛΓΟΡΙΘΜΟΣ ΜΟ-ΠΙΝΑΚΑ-1ΧΝ ΔΕΔΟΜΕΝΑ P:ARRAY[1..N] OF INTEGER; N,X,I: INTEGER; MO: REAL; ΑΡΧΗ ΔΙΑΒΑΣΕ(Ν); Χ:=0; ΓΙΑ Ι:=1 ΕΩΣ Ν ΕΠΑΝΕΛΑΒΕ ΤΥΠΩΣΕ (Ρ[Ι]); Χ:=Χ+Ρ[Ι]; ΓΙΑ-ΤΕΛΟΣ ΜΟ:=Χ/Ν; ΤΥΠΩΣΕ(ΜΟ); ΤΕΛΟΣ
Ν
Χ
Ι
P[I]
ΜΟ
4
185
4
40
?
P
1
2
3
4
P[I]
14
5
166
40
ΟΘΟΝΗ ΕΚΤΥΠΩΣΗΣ Δώστε τιμή για το Ν: 4 14 5 166 40
ΑΛΓΟΡΙΘΜΟΣ ΜΟ-ΠΙΝΑΚΑ-1ΧΝ ΔΕΔΟΜΕΝΑ P:ARRAY[1..N] OF INTEGER; N,X,I: INTEGER; MO: REAL; ΑΡΧΗ ΔΙΑΒΑΣΕ(Ν); Χ:=0; ΓΙΑ Ι:=1 ΕΩΣ Ν ΕΠΑΝΕΛΑΒΕ ΤΥΠΩΣΕ (Ρ[Ι]); Χ:=Χ+Ρ[Ι]; ΓΙΑ-ΤΕΛΟΣ ΜΟ:=Χ/Ν; ΤΥΠΩΣΕ(ΜΟ); ΤΕΛΟΣ
Ν
Χ
Ι
P[I]
ΜΟ
4
225
4
40
?
P
1
2
3
4
P[I]
14
5
166
40
ΟΘΟΝΗ ΕΚΤΥΠΩΣΗΣ Δώστε τιμή για το Ν: 4 14 5 166 40
ΑΛΓΟΡΙΘΜΟΣ ΜΟ-ΠΙΝΑΚΑ-1ΧΝ ΔΕΔΟΜΕΝΑ P:ARRAY[1..N] OF INTEGER; N,X,I: INTEGER; MO: REAL; ΑΡΧΗ ΔΙΑΒΑΣΕ(Ν); Χ:=0; ΓΙΑ Ι:=1 ΕΩΣ Ν ΕΠΑΝΕΛΑΒΕ ΤΥΠΩΣΕ (Ρ[Ι]); Χ:=Χ+Ρ[Ι]; ΓΙΑ-ΤΕΛΟΣ ΜΟ:=Χ/Ν; ΤΥΠΩΣΕ(ΜΟ); ΤΕΛΟΣ
Ν
Χ
Ι
P[I]
ΜΟ
4
225
5
?
?
P
1
2
3
4
P[I]
14
5
166
40
ΟΘΟΝΗ ΕΚΤΥΠΩΣΗΣ Δώστε τιμή για το Ν: 4 14 5 166 40
ΑΛΓΟΡΙΘΜΟΣ ΜΟ-ΠΙΝΑΚΑ-1ΧΝ ΔΕΔΟΜΕΝΑ P:ARRAY[1..N] OF INTEGER; N,X,I: INTEGER; MO: REAL; ΑΡΧΗ ΔΙΑΒΑΣΕ(Ν); Χ:=0; ΓΙΑ Ι:=1 ΕΩΣ Ν ΕΠΑΝΕΛΑΒΕ ΤΥΠΩΣΕ (Ρ[Ι]); Χ:=Χ+Ρ[Ι]; ΓΙΑ-ΤΕΛΟΣ ΜΟ:=Χ/Ν; ΤΥΠΩΣΕ(ΜΟ); ΤΕΛΟΣ
Ν
Χ
Ι
P[I]
ΜΟ
4
225
5
?
?
P
1
2
3
4
P[I]
14
5
166
40
ΟΘΟΝΗ ΕΚΤΥΠΩΣΗΣ Δώστε τιμή για το Ν: 4 14 5 166 40
ΑΛΓΟΡΙΘΜΟΣ ΜΟ-ΠΙΝΑΚΑ-1ΧΝ ΔΕΔΟΜΕΝΑ P:ARRAY[1..N] OF INTEGER; N,X,I: INTEGER; MO: REAL; ΑΡΧΗ ΔΙΑΒΑΣΕ(Ν); Χ:=0; ΓΙΑ Ι:=1 ΕΩΣ Ν ΕΠΑΝΕΛΑΒΕ ΤΥΠΩΣΕ (Ρ[Ι]); Χ:=Χ+Ρ[Ι]; ΓΙΑ-ΤΕΛΟΣ ΜΟ:=Χ/Ν; ΤΥΠΩΣΕ(ΜΟ); ΤΕΛΟΣ
Ν
Χ
Ι
P[I]
ΜΟ
4
225
5
?
56,25
P
1
2
3
4
P[I]
14
5
166
40
ΟΘΟΝΗ ΕΚΤΥΠΩΣΗΣ Δώστε τιμή για το Ν: 4 14 5 166 40
ΑΛΓΟΡΙΘΜΟΣ ΜΟ-ΠΙΝΑΚΑ-1ΧΝ ΔΕΔΟΜΕΝΑ P:ARRAY[1..N] OF INTEGER; N,X,I: INTEGER; MO: REAL; ΑΡΧΗ ΔΙΑΒΑΣΕ(Ν); Χ:=0; ΓΙΑ Ι:=1 ΕΩΣ Ν ΕΠΑΝΕΛΑΒΕ ΤΥΠΩΣΕ (Ρ[Ι]); Χ:=Χ+Ρ[Ι]; ΓΙΑ-ΤΕΛΟΣ ΜΟ:=Χ/Ν; ΤΥΠΩΣΕ(ΜΟ); ΤΕΛΟΣ
Ν
Χ
Ι
P[I]
ΜΟ
4
225
5
?
56,25
P
1
2
3
4
P[I]
14
5
166
40
ΟΘΟΝΗ ΕΚΤΥΠΩΣΗΣ Δώστε τιμή για το Ν: 4 14 5 166 40 56,25
ΑΛΓΟΡΙΘΜΟΣ ΜΟ-ΠΙΝΑΚΑ-1ΧΝ ΔΕΔΟΜΕΝΑ P:ARRAY[1..N] OF INTEGER; N,X,I: INTEGER; MO: REAL; ΑΡΧΗ ΔΙΑΒΑΣΕ(Ν); Χ:=0; ΓΙΑ Ι:=1 ΕΩΣ Ν ΕΠΑΝΕΛΑΒΕ ΤΥΠΩΣΕ (Ρ[Ι]); Χ:=Χ+Ρ[Ι]; ΓΙΑ-ΤΕΛΟΣ ΜΟ:=Χ/Ν; ΤΥΠΩΣΕ(ΜΟ); ΤΕΛΟΣ
Ν
Χ
Ι
P[I]
ΜΟ
4
225
5
?
56,25
P
1
2
3
4
P[I]
14
5
166
40
ΟΘΟΝΗ ΕΚΤΥΠΩΣΗΣ Δώστε τιμή για το Ν: 4 14 5 166 40 56,25
ΤΕΛΟΣ