Αποστολέας Θέμα: Άθροισμα κατά γραμμές και κατά στήλες σε πίνακα με Συναρτηση  (Αναγνώστηκε 4616 φορές)

Κωστας τζιαννης

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 201
Σπάω το κεφάλι εδώ και πολύ ώρα για να μπορέσω να βρω μια καλή λύση για τον υπολογισμό του αθροίσματος κατά γραμμές και κατά στήλες σε δισδιάστατο πίνακα καλώντας την ίδια Συνάρτηση.
Κώδικας: [Επιλογή]
ΣΥΝΑΡΤΗΣΗ ΑΘΡ(Π, I): ΑΚΕΡΑΙΑ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: I, J, S, Π[4, 4]
ΑΡΧΗ
  S <- 0
  ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 4
    S <- S + Π[I, J]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΑΘΡ <- S
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
 

Στον κώδικα υπάρχει ένας πίνακας Π[4,4] και θα ήθελα με διαφορετική κλήση να υπολογίσω το άθροισμα κατά γραμμές και το άθροισμα κατά στήλες. Ή η λύση είναι μπροστά στα μάτια μου ή ....
Παίζει κάτι με καμία αντιμετάθεση παραμέτρων ή κάτι παρόμοιο στη ΓΛΩΣΣΑ; ???

νικο για δες αυτη τη λογικη.οταν θες αθροισμα γραμμης πχ της γραμμης 2 δινεις 2.5 ενω αν θες τη στηλη 2 δινεις 2.

ΠΡΟΓΡΑΜΜΑ αθροισμαγρστ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: ι, ξ, πιν[4, 4]
  ΠΡΑΓΜΑΤΙΚΕΣ: γραμμη, σαμ
ΑΡΧΗ
  ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 4
    ΓΙΑ ξ ΑΠΟ 1 ΜΕΧΡΙ 4
      ΔΙΑΒΑΣΕ πιν[ι, ξ]
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

                                                !θα βρω το αθροισμα καθε γραμμης
  ΓΡΑΨΕ "αθροισμα καθε γραμμης"
  ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 4
    γραμμη <- ι + 0.5
    σαμ <- ΑΘΡ(πιν, γραμμη)
    ΓΡΑΨΕ σαμ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
                                                 !θα βρω το αθροισμα καθε στηλης
  ΓΡΑΨΕ "αθροισμα καθε στηλης"
  ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 4
    γραμμη <- ι
    σαμ <- ΑΘΡ(πιν, γραμμη)
    ΓΡΑΨΕ σαμ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ


ΣΥΝΑΡΤΗΣΗ ΑΘΡ(Π, χ): ΑΚΕΡΑΙΑ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: κ, σ, Π[4, 4], θεση
  ΠΡΑΓΜΑΤΙΚΕΣ: χ
ΑΡΧΗ
  σ <- 0
  θεση <- Α_Μ(χ)
  ΓΙΑ κ ΑΠΟ 1 ΜΕΧΡΙ 4
    σ <- σ + Π[(1 - Α_Μ(θεση/χ))*θεση + κ*Α_Μ(θεση/χ), Α_Μ(θεση/χ)*θεση + κ*(1 - Α_Μ(θεση/χ))]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΑΘΡ <- σ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ


nikolasmer

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 570
  • There can be only one...may it be AEPP.
Κώδικας: [Επιλογή]
ΣΥΝΑΡΤΗΣΗ ΑΘΡ(Π, I): ΑΚΕΡΑΙΑ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: I, J, K, S, Π[4, 4]
ΑΡΧΗ
  K <- ((I - 1) div 4 + 1) mod 2
  S <- 0
  ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 4
    S <- S + K* Π[(I - 1) mod 4 + 1, J] + (1 - K)* Π[J, (I - 1) mod 4 + 1]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΑΘΡ <- S
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
Ναι αυτό είναι. Ευχαριστώ.
Ευχαριστώ για τις απαντήσεις όλους.
Μερεντίτης Νικόλαος
Πληροφορικός

thaaanos

  • Θαμώνας
  • ***
  • Μηνύματα: 43
Κώδικας: [Επιλογή]
ΣΥΝΑΡΤΗΣΗ ΑΘΡ_ΠΙΝ(A, k): ΑΚΕΡΑΙΑ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: i, k, A[4, 4], sum
ΑΡΧΗ
  sum <- 0
  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 4 ΜΕ ΒΗΜΑ k div Α_Τ(k)
    sum <- sum + A[ i, k]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 4 ΜΕ ΒΗΜΑ -k div Α_Τ(k)
    sum <- sum + A[-k, i]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΑΘΡ_ΠΙΝ <- sum
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

use as  ΑΘΡ_ΠΙΝ(A, k) ή  ΑΘΡ_ΠΙΝ(A, -k) για άθροισμα γραμμών

ΥΓ εντάξει άργησα αλλα τώρα το είδα να μην δώσω και εγώ μια απάντηση;

batikiotis

  • Νέος
  • *
  • Μηνύματα: 1
Καλησπέρα σε όλους,
μια ερώτηση σχετικά με τη σύνταξη συνάρτησης. Η χρήση του ονόματος της συνάρτησης για εκχώρηση σε αυτό του επιστρεφόμενου αποτελέσματος γίνεται μια φορά στο τέλος ή δύναται να αναφέρεται όσες φορές χρειάζεται; πχ σε κάποια επιλογή ή σε κάποιο άθροισμα που υπολογίζεται με επανάληψη.
ευχαριστώ πολύ

petrosp13

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 2339
Μπορεί να εμφανίζεται όσες φορές θέλουμε, αρκεί να μην υπάρχει δεξιά από το βελάκι γιατί προκαλεί αναδρομή
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

Λαμπράκης Μανώλης

  • Ομάδα διαγωνισμάτων 2017
  • *
  • Μηνύματα: 842
Καλησπέρα σε όλους

είχα και εγώ μάι παρόμοια απορία .. όσες φορές θέλουμε υποθέτω μπορούμε σίγουρα αν έχουμε πχ

ΣΥΝΑΡΤΗΣΗ Φ(Α): ΧΑΡΑΚΤΗΡΑΣ
ΜΕΤΑΒΛΗΤΕΣ
  ΠΡΑΓΜΑΤΙΚΕΣ:Α
ΑΡΧΗ
   ΑΝ Α<0 ΤΟΤΕ
      Φ<--'ΑΡΝΗΤΙΚΟΣ'
   ΑΛΛΙΩΣ_ΑΝ Α=0 ΤΟΤΕ
      Φ<--'ΜΗΔΕΝ'
   ΑΛΛΙΩΣ
      Φ<--'ΘΕΤΙΚΟΣ'
   ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

θα μπορούμε όμως να έχουμε κάτι σαν το παρακάτω ??

ΣΥΝΑΡΤΗΣΗ Φ(Α): ΧΑΡΑΚΤΗΡΑΣ
ΜΕΤΑΒΛΗΤΕΣ
  ΠΡΑΓΜΑΤΙΚΕΣ:Α
ΑΡΧΗ
   ΑΝ Α<0 ΤΟΤΕ
      Φ<--'ΑΡΝΗΤΙΚΟΣ'
   ΑΛΛΙΩΣ_ΑΝ Α=0 ΤΟΤΕ
      Φ<--'ΜΗΔΕΝ'
   ΑΛΛΙΩΣ
      Φ<--'ΘΕΤΙΚΟΣ'
   ΤΕΛΟΣ_ΑΝ
   φ<--'ΑΚΥΡΟ'
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

Δηλαδή να πάρει τιμή και μετά να πάρει διαφορετική τιμή ?? δεν έχω δει κάπου τέτοιο παράδειγμα και νόμιζα πως δε γίνεται , αλλά δεν υπάρχει και κάπου

petrosp13

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 2339
Δεν υπάρχει λόγος να απαγορεύεται κάτι τέτοιο
Η συνάρτηση αποθηκεύει μια τιμή στο όνομα της σαν μια κοινή μεταβλητή, οπότε μπορείς να αλλάξεις τιμή όπως νομίζεις
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

Λαμπράκης Μανώλης

  • Ομάδα διαγωνισμάτων 2017
  • *
  • Μηνύματα: 842
απόλυτα λογικό μου ακούγεται, απλά μου έκανε εντύπωση πως δεν εχω δει  κάτι παρόμοιο σαν παράδειγμα

pgrontas

  • Ομάδα διαγωνισμάτων 2016
  • *
  • Μηνύματα: 1441
  • There are always possibilities...
Μπορεί να εμφανίζεται όσες φορές θέλουμε, αρκεί να μην υπάρχει δεξιά από το βελάκι γιατί προκαλεί αναδρομή

Το λέει κάπου αυτό στο βιβλίο; Αναδρομή θα προκαλούσε αν υπήρχε κλήση της συνάρτησης με παρενθέσεις, παραμέτρους και όχι απλή χρήση του ονόματος.
Προσωπικά θα δεχόμουν χρήση του ονόματος της συνάρτησης οπουδήποτε θα μπορούσε να μπει μεταβλητή.
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson