Συνάδελφοι,
πως ταξινομείται ένας μονοδιάστατος πίνακας και ταυτόχρονα ένας δισδιάστατος πίνακας; :o
Μπορούμε να έχουμε ένα παράδειγμα;
thanks :angel:
Αν ο μονοδιάστατος είναι παράλληλος με τις γραμμές του δισδιάστατου, τότε κάθε φορά που αντιμετατίθενται 2 στοιχεία του μονοδιάστατου, θα πρέπει να αντιμετατίθενται και οι αντίστοιχες γραμμές του δισδιάστατου
Καλημέρα σε όλους
υποθέτω συνάδελφε ζητάς κάτι τέτοιο ?? έστω έχουμε 100 πωλητές σε μία εταιρία με τις μηνιαίες πωλήσεις τους σε ένα χρόνο
σε πωλ[100,12] και παράλληλο πίνακα με τα ονόματα των μηνών μήνες[12] .. ζητάμε τις 5 μεγαλύτερες πωλήσεις κάθε πωλητή και σε ποιους μήνες τις πέτυχε .. κατά την αντιμετάθεση στοιχείων των γραμμών "χαλάει η παραλληλότητα" με τους μήνες και κατά συνέπεια με όλες τις άλλες γραμμές, οπότε χρειάζονται αρκετές αντιμετεθέσεις για να παραμείνουν παράλληλες οι επόμενες γραμμές με τους μήνες για τις ταξινομήσεις των επόμενων γραμμών
Αλγόριθμος ταξινόμηση_δισδιάστατου
Δεδομένα //πωλ, μήνες//
Για γρ από 1 μέχρι 100
Για i από 2 μέχρι 12
Για j από 12 μέχρι i με_βήμα -1
Αν πωλ[γρ, j-1]<πωλ[γρ, j] τότε
! αντιμετάθεσε τους μήνες
Αντιμετάθεσε μην[j-1], μην[j]
! και όλες τις γραμμές για να παραμείνουν παράλληλες
Για κ από 1 μέχρι 100
Αντιμετάθεσε πωλ[κ, j-1], πωλ[κ,j]
Τέλος_επανάληψης
Τέλος_αν
Τέλος_επανάληψης
Τέλος_επανάληψης
Για λ από 1 μέχρι 5 ! εμφάνισε τα 5 πρώτα στοιχεία και μήνες
Εμφάνισε πωλ[γρ, λ], μην[λ]
Τέλος_επανάληψης
Τέλος_επανάληψης
Τέλος ταξινόμηση_δισδιάστατου
Καλημέρα :)
Ακριβώς αυτό ζητούσα, έτσι το σκέφτηκα!
Και έχω να πω πως κάτι τέτοιο είναι πολύ χρήσιμο και αποτελεί καλή άσκηση για τους μαθητές μας.
Ευχαριστώ!
μια λύση για αυτή την άσκηση;
Μερικές φορές είναι βολικό να χρησιμοποιείς αντίγραφα των δεδομένων που χρειάζεσαι.
Με την προϋπόθεση οτι δεν είναι όλες άκυρες και όλες οι δεύτερες επιδόσεις είναι διαφορετικές, μια
πρόχειρη λύση για τα δυο τελευταία ερωτήματα είναι η παρακάτω:
max1 <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 12
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 6
αντΕπ[j] <- Επίδοση[i,j]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ταξινόμηση ΚΑΙ εκτύπωση του αντΕπ
ΑΝ αντΕπ[1] > max1 ΤΟΤΕ
max1 <- αντΕπ[1]
max2 <- αντΕπ[2]
νικητής <- ΟΝ[i]
ΑΛΛΙΩΣ_ΑΝ αντΕπ[1] = max1 ΤΟΤΕ
ΑΝ αντΕπ[2]>max2 ΤΟΤΕ
max2 <- αντΕπ[2]
νικητής <- ΟΝ[i]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Μια ολοκληρωμένη λύση είναι η παρακάτω
(τελικά δεν χρειάζεται αντίγραφο. Όταν έγραψα το προηγούμενο post έφτιαχνα μια άσκηση που είχε έναν πίνακα από πάνω και
παρασύρθηκα...)
ΠΡΟΓΡΑΜΜΑ Άλμα_εις_μήκος
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: i, j, γρ
ΠΡΑΓΜΑΤΙΚΕΣ: Επίδοση[12, 6], tmp, max1, max2
ΧΑΡΑΚΤΗΡΕΣ: ON[12], νικητής
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 12
ΓΡΑΨΕ 'Όνομα ', i, 'ου αθλητή'
ΔΙΑΒΑΣΕ ON[i]
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 6
ΓΡΑΨΕ 'Επίδοση στο ', j, 'o άλμα'
ΔΙΑΒΑΣΕ Επίδοση[i, j]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ γρ ΑΠΟ 1 ΜΕΧΡΙ 12
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 6
ΓΙΑ j ΑΠΟ 6 ΜΕΧΡΙ i ΜΕ_ΒΗΜΑ -1
ΑΝ Επίδοση[γρ, j] > Επίδοση[γρ, j - 1] ΤΟΤΕ
tmp <- Επίδοση[γρ, j]
Επίδοση[γρ, j] <- Επίδοση[γρ, j - 1]
Επίδοση[γρ, j - 1] <- tmp
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ ON[γρ]
j <- 1
ΟΣΟ j <= 6 ΕΠΑΝΑΛΑΒΕ
ΑΝ Επίδοση[γρ, j] > 0 ΤΟΤΕ
ΓΡΑΨΕ Επίδοση[γρ, j]
j <- j + 1
ΑΛΛΙΩΣ
j <- 7
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
max1 <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 12
ΑΝ Επίδοση[i, 1] > max1 ΤΟΤΕ
max1 <- Επίδοση[i, 1]
max2 <- Επίδοση[i, 2]
νικητής <- ON[i]
ΑΛΛΙΩΣ_ΑΝ Επίδοση[i, 1] = max1 ΤΟΤΕ
ΑΝ Επίδοση[i, 2] > max2 ΤΟΤΕ
max2 <- Επίδοση[i, 2]
νικητής <- ON[i]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Νικητής ο ', νικητής
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ