Πίνακας & Υποπρόγραμμα

Ξεκίνησε από EleniK, 19 Φεβ 2007, 10:36:21 ΜΜ

« προηγούμενο - επόμενο »

EleniK

Συνάδελφοι μου έχει δημιουργηθεί η εξής απορία:

Έστω ότι γράφω ένα υποπρόγραμμα που έχει ώς όρισμα έναν πίνακα και τη διάστασή του. Μπορώ να κάνω δήλωση πίνακα σε σχέση με την παράμετρο που ορίζει τη διάστασή του  ??? δηλ. γίνεται το παρακάτω?

ΔΙΑΔΙΚΑΣΙΑ Πίνακας (Α,Ν)
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ:Α[Ν]
ΑΚΕΡΑΙΕΣ:Ν
ΑΡΧΗ
ΜΑΧ <- Α[1]
ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ Ν
ΑΝ Α[Ι]>ΜΑΧ ΤΟΤΕ
......


ή πρέπει να λάβω υπόψη τη μέγιστη πιθανή διάστασή του? π.χ.


ΔΙΑΔΙΚΑΣΙΑ Πίνακας (Α,Ν)
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ:Α[1000]
ΑΚΕΡΑΙΕΣ:Ν
ΑΡΧΗ
ΜΑΧ <- Α[1]
ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ Ν
ΑΝ Α[Ι]>ΜΑΧ ΤΟΤΕ
......
κλπ. όπου Ν<=1000

Ευχαριστώ
Ελένη Κοκκίνου
Καθηγήτρια Πληροφορικής, ΠΕ19

evry


   Δυστυχώς το 2ο, γιατί ο αριθμός που ορίζει το μέγεθος του πίνακα πρέπει να είναι σταθερά, αφού η δέσμευση μνήμης γίνεται κατά το χρόνο μεταγλώττισης.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

alkisg

Ελένη δες και σχετική παλιότερη συζήτηση εδώ:
https://alkisg.mysch.gr/steki/index.php?topic=302.0

Δεν είναι τόσο θέμα υλοποίησης, όσο θέμα ορισμού... Π.χ. η fortran το υποστηρίζει, αλλά η ΓΛΩΣΣΑ με τον copy in - copy out (ή copy by value result, πώς τον λένε) μηχανισμό όχι...

EleniK

Μάλιστα κατάλαβα. Ευχαριστώ για τη σχετική αναφορά. Το διάβασα και μάλλον επηρεάστηκα και εγώ από τη C. Δλδ θα πρέπει να φτιάξω έτσι την άσκηση  ώστε να εχω τετραγωνικό πίνακα προκειμένου να έχω ένα υποπρόγραμμα που να μπορώ να το χρησιμοποιήσω και σε κάθε γραμμή και σε κάθε στήλη του πίνακα. Κρίμα   :(
Ευχαριστώ
Ελένη Κοκκίνου
Καθηγήτρια Πληροφορικής, ΠΕ19

alkisg

Γιατί αυτό; Αφού έτσι κι αλλιώς θα περνάς παράμετρο όλον τον πίνακα, μπορεί κάλλιστα να μην είναι τετραγωνικός...
Το δύσκολο είναι στο υποπρόγραμμα να κάνεις κάτι είτε με γραμμή είτε με στήλη (π.χ. εύρεση μεγίστου)... Ουσιαστικά θες δύο διαφορετικούς κώδικες μέσα σε ΑΝ, δεν επιτρέπει κάποια άλλη σύνταξη η ΓΛΩΣΣΑ.

EleniK

Ναι Άλκη το σκέφτηκα αυτό δλδ να παίρνει ως παράμετρο το "Γραμμή" ή "Στήλη" και να εκτελεί ανάλογα. Απλά ήθελα να δείξω τη γενικότητα των υποπρογραμμάτων με πιο κομψό τρόπο, χωρίς δλδ τη χρήση της ΑΝ. Μάλλον όμως αυτό θα κάνω στην  ασκηση την οποία θα δέιτε σύντομα στα διαγωνίσματα. :-)
Ελένη Κοκκίνου
Καθηγήτρια Πληροφορικής, ΠΕ19

andreas_p

Ελένη , καλημέρα.

Το  2ο τρόπο.

Θα δουλέψουμε με το πολύ Ν στοιχεία . δεσμεύοντας  έναν πίνακα  Α[1000]

όπου  Ν>0 και  Ν<=1000

Ανδρέας