Τρίτη, 5 Μαΐου 2009

Πράξεις σε μέρος ενός Πίνακα

Όταν χρησιμοποιούμε έναν Πίνακα, μπορεί να υποχρεωθούμε να κάνουμε πράξεις με ένα υποσύνολο των στοιχείων του.

Γενικά, ο Πίνακας έχει ένα όνομα, έστω Πιν.
Ορίζουμε έναν δείκτη γρα, που θα μας δείχνει σε ποιά γραμμή του πίνακα είμαστε, και μια μέγιστη τιμή αυτού του δείκτη : γραμαξ.
Ορίζουμε έναν δείκτη στη, που θα μας δείχνει σε ποιά στήλη του πίνακα είμαστε, και μια μέγιστη τιμή αυτού του δείκτη : στημαξ.
Ο πίνακας έχει πλήθος στοιχείων (γραμαξ x στημαξ), και αν είναι τετραγωνικός θα έχουμε γραμαξ=στημαξ.

Το πρόβλημα που δίνουμε σήμερα είναι το εξής : Σε έναν τετραγωνικό πίνακα 20x20 βάζουμε κατά γραμμές τους αριθμούς 1, 2, 3, ..., 400. Ο πίνακας έχει μια διαγώνιο από Πιν[1,1] μέχρι Πιν[20,20]. Θέλουμε να φτιάξουμε ένα πρόγραμμα σε ΓΛΩΣΣΑ που θα τυπώνει τον μέσο αριθμητικό των στοιχείων του πίνακα που βρίσκονται κάτω από την διαγώνιο αυτή, τον μέσο αριθμητικό των στοιχείων που ορίζουν την διαγώνιο, και τον μέσο αριθμητικό των στοιχείων του πίνακα που είναι πάνω από την διαγώνιο.

Για να βάλουμε τις αρχικές τιμές, χρησιμοποιούμε τιμές γραμμο-δείκτη γρα από 1 μέχρι γραμαξ, και τιμές στηλο-δείκτη στη από 1 μέχρι στημαξ. Όταν όμως προχωρήσουμε σε πράξεις σε μέρη του πίνακα, προσέχουμε πολύ στον καθορισμό των ορίων μεταβολής του καθενός δείκτη. Παρακάτω γράφουμε το πρόγραμμα και την απάντηση.
Φτιάξτε το δικό σας πρόγραμμα ως άσκηση, βρείτε τους τρεις μέσους όρους, και μετά συγκρίνετε τα προγράμματα και τις απαντήσεις.

ΠΡΟΓΡΑΜΜΑ μο3
! Βάζουμε ακέραιους αριθμούς (1, 2, 3, ...) σε έναν τετραγωνικό πίνακα κατά γραμμές
! και βρίσκουμε τους μέσους όρους στο αριστερό κάτω τριγωνικό μέρος, στην διαγώνιο,
! και στο δεξιό πάνω τριγωνικό μέρος του πίνακα

ΜΕΤΑΒΛΗΤΕΣ
__ΑΚΕΡΑΙΕΣ: Πιν[20, 20], γρα, γραμαξ, στη, στημαξ, πλήθος, άθροισμα
__ΠΡΑΓΜΑΤΙΚΕΣ: ΜΟαριστερά, ΜΟδιαγώνια, ΜΟδεξιά
ΑΡΧΗ
γραμαξ <- 20
στημαξ <- 20

! τοποθέτηση αρχικών τιμών στον Πίνακα κατά γραμμές

πλήθος <- 0
ΓΙΑ γρα ΑΠΟ 1 ΜΕΧΡΙ γραμαξ
__ΓΙΑ στη ΑΠΟ 1 ΜΕΧΡΙ στημαξ
____πλήθος <- πλήθος + 1
____Πιν[γρα, στη] <- πλήθος
__ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

! εύρεση του μέσου όρου των αριστερών

πλήθος <- 0
άθροισμα <- 0
ΓΙΑ γρα ΑΠΟ 2 ΜΕΧΡΙ γραμαξ
__ΓΙΑ στη ΑΠΟ 1 ΜΕΧΡΙ γρα - 1
____πλήθος <- πλήθος + 1
____άθροισμα <- άθροισμα + Πιν[γρα, στη]
__ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΜΟαριστερά <- άθροισμα/πλήθος

! εύρεση του μέσου όρου των διαγωνίων

πλήθος <- 0
άθροισμα <- 0
ΓΙΑ γρα ΑΠΟ 1 ΜΕΧΡΙ γραμαξ
__πλήθος <- πλήθος + 1
__άθροισμα <- άθροισμα + Πιν[γρα, γρα]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΜΟδιαγώνια <- άθροισμα/πλήθος

! εύρεση του μέσου όρου των δεξιών

πλήθος <- 0
άθροισμα <- 0
ΓΙΑ γρα ΑΠΟ 1 ΜΕΧΡΙ γραμαξ - 1
__ΓΙΑ στη ΑΠΟ γρα + 1 ΜΕΧΡΙ στημαξ
____πλήθος <- πλήθος + 1
____άθροισμα <- άθροισμα + Πιν[γρα, στη]
__ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΜΟδεξιά <- άθροισμα/πλήθος

! εκτύπωση των τριών μέσων όρων

ΓΡΑΨΕ 'Μέσοι όροι : Αριστερών=', ΜΟαριστερά, ', Διαγωνίων=', ΜΟδιαγώνια, ' και Δεξιών=', ΜΟδεξιά
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Όταν εκτελεστεί το πρόγραμμα αυτό, δίνει απάντηση :

Μέσοι όροι : Αριστερών=267.00, Διαγωνίων=200.50 και Δεξιών=134.00

Δεν υπάρχουν σχόλια: