Εργαστήριο Τεχνολογίας Λογισμικού
0 votes
287 views

Αν θέλω να ταξινομήσω τα στοιχεία ενός int πίνακα με αναδρομή, όπως γίνεται στη mergeshort, πως πρέπει να τον δηλώσω(τον πίνακα) στην διαδικασία, ώστε να αντιμετωπίζεται στη διαδικασία σαν global, δηλαδή να μπορώ να τυπώσω, αφού ταξινομηθεί ο πίνακας, ένα στοιχείο του στο PROGRAM?Γενικότερα, πως πρέπει να δηλώσω τον πίνακα στη διαδικασία, ώστε όποια αλλαγή επιφέρω σε αυτόν να διατηρείται κατά τη διάρκεια της αναδρομής και στο τέλος της?

in progintro by (220 points) | 287 views

1 Answer

+1 vote
Best answer

Μέχρι να απαντηθεί πιο αναλυτικά, (ή μέχρι να διδαχτείτε για δείκτες),

υπάρχουν διάφοροι τρόποι να το κάνεις, ισως ο πιο ξεκάθαρος αυτή την στιγμή είναι ορίζοντας την συνάρτηση ως

PROC mergeSort(int arr[], int l, int r) {
    \\ your code goes here
}

ΠΡΟΣΟΧΗ: Η συνάρτηση αυτή θα αλλάξει τον πινακα που θέτεις ως παράμετρο. Αν θελεις να κρατησεις και τον αρχικο πίνακα δημιούργησε ένα αντίγραφο του.

Μπορείς να δεις μια υλοποίηση της merge sort σε C ή C++ εδώ.

by (2.2k points)
selected by
0

Εχουμε διδαχτεί δείκτες. Οπότε μπορώ να γράψω PROC megesort(int *arr, int l ,int r){...}?
Στόχος μου είναι οι αλλαγές που θα επιφέρει η PROC στον πίνακα να επιστρέφονται, δηλαδή να μπορεί να εκτυπωθεί ταξινομημένος. Για κάποιο λόγο δεν μπορεί να γίνει compile το πρόγραμμα ,όταν το γράφω όπως είναι στο λινκ. Θα το ξαναπροσπαθήσω ίσως κάτι να μου διαφεύγει. Ευχαριστώ πολύ!

0

Nαι σε αυτη την περιπτωση θα μπορουσες να γραψεις κατι τετοιο. Δεν ειμαι σιγουρος τι εννοεις να επιστρεφονται. Η PROC είναι μια συνάρτηση η οποία δεν επιστρέφει κάτι (μέθοδος). Αυτό που γίνεται είναι ότι οι τιμές του πίνακα αλλάζουν.

Αν θελεις μπορείς να μας πεις τι πρόβλημα βγάζει, αν δεν καταφέρεις να το βρείς μόνος σου. Δοκιμάζοντας να τρέξω τον κώδικα στην σελίδα δεν βλέπω κάποιο λάθος.

0

Ευχαριστώ πολύ!
Μου έχει λυθεί η απορία. Ίσως σε μπέρδεψα, με το να "επιστρέφονται“ , λάθος μου, εννοούσα να μπορεί να αξιοποιήθει ταξινομημένος ο πίνακας. Θα το δοκιμάσω και αν προκύψει κάποιο λάθος θα ρωτήσω.

301 questions

289 answers

288 comments

899 users