e-ΜΑΘΗΜΑΤΑ |
Λύσεις ασκήσεων από τον Οδηγό Μελέτης Μαθητών |
ΠΡΟΓΡΑΜΜΑ ΚΛΗΣΗ_ΥΠΟΠΡΟΓΡΑΜΜΑΤΟΣ
! ΑΕΠΠ - Οδηγός Μελέτης Μαθητή
! Μη λυμένες ασκήσεις 5.4.4.5
!
! 5. Να γραφεί υποπρόγραμμα, που να εντοπίζει τους δύο μικρότερους αριθμούς
! από ένα πίνακα Χ[50] με ακέραιους αριθμούς και να τους επιστρέφει.
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: i, x[50], min1, min2
ΑΡΧΗ
! το κύριο πρόγραμμα δεν το ζητάει η εκφώνηση,
! αλλά χρειάζεται για την κλήση του υποπρογράμματος,
! σε περίπτωση που το τρέξετε στον Διερμηνευτή.
ΓΡΑΨΕ 'Δώστε τιμές πίνακα'
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 50
ΔΙΑΒΑΣΕ x[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
! Επειδή το υποπρόγραμμα επιστρέφει 2 τιμές θα καλέσουμε ΔΙΑΔΙΚΑΣΙΑ
ΚΑΛΕΣΕ βρες_2_μικρότερα (x, min1, min2)
ΓΡΑΨΕ min1, min2
ΚΑΛΕΣΕ βρες_2_μικρότερα_αλλιώς (x, min1, min2)
ΓΡΑΨΕ min1, min2
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
ΔΙΑΔΙΚΑΣΙΑ βρες_2_μικρότερα (x, min1, min2)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: x[50], min1, min2, i
ΑΡΧΗ
! 1ος τρόπος.
! βρίσκουμε τα δύο μικρότερα χωρίς να πειράξουμε τον πίνακα
! κάνοντας μόνο μια σάρωση
ΑΝ x[1] < x[2] ΤΟΤΕ
min1 <- x[1]
min2 <- x[2]
ΑΛΛΙΩΣ
min1 <- x[2]
min2 <- x[1]
ΤΕΛΟΣ_ΑΝ
ΓΙΑ i ΑΠΟ 3 ΜΕΧΡΙ 50
ΑΝ x[i] < min1 ΤΟΤΕ
min2 <- min1
min1 <- x[i]
ΑΛΛΙΩΣ_ΑΝ x[i] < min2 ΤΟΤΕ
min2 <- x[i]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
ΔΙΑΔΙΚΑΣΙΑ βρες_2_μικρότερα_αλλιώς (x, min1, min2)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: x[50], min1, min2, i, j, temp
ΑΡΧΗ
! 2ος τρόπος
! ταξινομούμε και επιστρέφουμε τα 2 πρώτα στοιχεία,
! Στη εξωτερική επανάληψη, κάνουμε μόνο δύο επαναλήψης γιατί θέλουμε
! μόνο τα δύο μικρότερα.
! Το πρόβλημα με αυτό τον τρόπο είναι ότι η ταξινόμηση αλλάζει
! και τις τιμές στον πίνακα, κάτι που δεν το ζητάει η εκφώνηση.
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 3
ΓΙΑ j ΑΠΟ 50 ΜΕΧΡΙ i ΜΕ ΒΗΜΑ -1
ΑΝ x[j - 1] > x[j] ΤΟΤΕ
temp <- x[j - 1]
x[j - 1] <- x[j]
x[j] <- temp
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
min1 <- x[1]
min2 <- x[2]
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
|