Γενικό Λύκειο > Διαδικασίες

ΠΙΝΑΚΕΣ ΣΕ ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

(1/4) > >>

ΑΚ:
Να γράψετε πρόγραμμα που
Στο κυρίως μέρος:
α) διαβάζει 50 ακεραίους και τους αποθηκεύει σε πίνακα με όνομα Α.
β) διαβάζει 1000 ακεραίους και τους αποθηκεύει σε πίνακα με όνομα Β.
γ) καλεί την διαδικασία ταξινόμηση με παράμετρο τον πίνακα
δ) καλεί την διαδικασία ταξινόμηση (ακολουθεί υποερώτημα) με παράμετρο τον πίνακα Β
ε) εμφανίζει τα στοιχεία των πινάκων Α και Β.
στ) να γράψετε την διαδικασία Ταξινόμηση που δέχεται έναν πίνακα και τον επιστρέφει ταξινομημένο (χρήση φυσαλίδας).

Το ερώτημα είναι: πως θα γίνει η δήλωση του πίνακα στην διαδικασία;

AK:
στο τέλος του ερωτήματος γ να προστεθεί: Α
 

evry:
Ο πίνακας ορίζεται κανονικά όπως και στο πρόγραμμα στη λίστα δηλώσεων της διαδικασίας.
Το πρόβλημα εδώ είναι άλλο. Δεν μπορείς να χρησιμοποιήσεις την ίδια διαδικασία ταξινόμησης και για τους δυο πίνακες γιατί είναι διαφορετικού τύπου. Θα πρέπει να ορίσεις άλλη διαδικασία ταξινόμησης για τον Α και άλλη για τον Β.

P.Tsiotakis:
ΔΙΑΔΙΚΑΣΙΑ Ταξινόμηση (Πλήθος, ΠΙΝΑΚΑΣ)
ΣΤΑΘΕΡΕΣ
   Ν = 50000  ! μέγιστο πλήθος
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: ΠΙΝΑΚΑΣ[Ν], βοηθ
  ΑΚΕΡΑΙΕΣ : Πλήθος, i, j
ΑΡΧΗ
  ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ Πλήθος
    ΓΙΑ j ΑΠΟ Πλήθος ΜΕΧΡΙ i ΜΕ ΒΗΜΑ -1
      ΑΝ (ΠΙΝΑΚΑΣ[j-1] > ΠΙΝΑΚΑΣ[j]) ΤΟΤΕ ! αύξουσα ταξινόμηση
         βοηθ <- ΠΙΝΑΚΑΣ[j-1]
         ΠΙΝΑΚΑΣ[j-1] <- ΠΙΝΑΚΑΣ[j]
         ΠΙΝΑΚΑΣ[j] <- βοηθ
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

ερώτημα α.
Πλήθος <- 50
ΚΑΛΕΣΕ Ταξινόμηση (Πλήθος, Α)


ερώτημα β.
Πλήθος <- 1000
ΚΑΛΕΣΕ Ταξινόμηση (Πλήθος, Α)

Δεν μπορούμε στην παραπάνω διαδικασία να δώσουμε ως είσοδο πίνακα μεγαλύτερο από 50.000 θέσεις
Ναι, χαραμίζουμε στην πρώτη περίπτωση 49.950 θέσεις και στην δεύτερη 49.000, ε και τι μ' αυτό;

Με εκτίμηση,

evry:
Συμφωνώ μαζί σου απλά θέλω να σημειώσω ότι το μοναδικό μάθημα, σε όλες τις εκπαιδευτικές βαθμίδες στις οποίες διδάσκεται προγραμματισμός Η/Υ (ΑΕΙ, ΤΕΙ, ΙΕΚ, ΤΕΕ, Λύκειο), στο οποίο το παρακάτω πρόγραμμα θεωρείται σωστό είναι μόνο το μάθημα της Ανάπτυξης Εφαρμογών της Γ' Λύκειου και κανένα άλλο.
   Το να χαραμίζεις τόσες θέσεις μνήμης δε νομίζω ότι έχει μεγάλη διαφορά από το να αλλάζεις το μετρητή μέσα στην επανάληψη ΓΙΑ. Και τα δυο ισχύουν σε όλες τις γλώσσες προγραμματισμού αλλά κανείς δεν τα θεωρεί καλή πρακτική.
Μάλλον είναι από τα πράγματα που θα πρέπει να αλλάξουν στο μάθημα μαζί με κάποια θέματα απόδοσης αλγορίθμων


--- Παράθεση από: ptsiotakis στις 01 Μαρ 2006, 03:46:57 μμ ---ΔΙΑΔΙΚΑΣΙΑ Ταξινόμηση (Πλήθος, ΠΙΝΑΚΑΣ)
ΣΤΑΘΕΡΕΣ
 Ν = 50000 ! μέγιστο πλήθος
ΜΕΤΑΒΛΗΤΕΣ
 ΑΚΕΡΑΙΕΣ: ΠΙΝΑΚΑΣ[Ν], βοηθ
 ΑΚΕΡΑΙΕΣ : Πλήθος, i, j
ΑΡΧΗ
 ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ Πλήθος
 ΓΙΑ j ΑΠΟ Πλήθος ΜΕΧΡΙ i ΜΕ ΒΗΜΑ -1
 ΑΝ (ΠΙΝΑΚΑΣ[j-1] > ΠΙΝΑΚΑΣ[j]) ΤΟΤΕ ! αύξουσα ταξινόμηση
 βοηθ <- ΠΙΝΑΚΑΣ[j-1]
 ΠΙΝΑΚΑΣ[j-1] <- ΠΙΝΑΚΑΣ[j]
 ΠΙΝΑΚΑΣ[j] <- βοηθ
 ΤΕΛΟΣ_ΑΝ
 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

ερώτημα α.
Πλήθος <- 50
ΚΑΛΕΣΕ Ταξινόμηση (Πλήθος, Α)


ερώτημα β.
Πλήθος <- 1000
ΚΑΛΕΣΕ Ταξινόμηση (Πλήθος, Α)

Δεν μπορούμε στην παραπάνω διαδικασία να δώσουμε ως είσοδο πίνακα μεγαλύτερο από 50.000 θέσεις
Ναι, χαραμίζουμε στην πρώτη περίπτωση 49.950 θέσεις και στην δεύτερη 49.000, ε και τι μ' αυτό;

Με εκτίμηση,

--- Τέλος παράθεσης ---

Πλοήγηση

[0] Λίστα μηνυμάτων

[#] Επόμενη σελίδα

Μετάβαση στην πλήρη έκδοση