Η συνάρτηση compute (15 Μονάδες)
int *compute(const int *a, size_t na, const int *b, size_t nb) {
size_t i = 0, j = 0, k = 0;
int * out = malloc((na + nb) * sizeof(int));
while (i < na && j < nb) {
if (a[i] <= b[j])
out[k++] = a[i++];
else
out[k++] = b[j++];
}
while (i < na)
out[k++] = a[i++];
while (j < nb)
out[k++] = b[j++];
return out;
}
Ποιο θα είναι το περιεχόμενο της μεταβλητής result μετά την εκτέλεση της παρακάτω ακολουθίας εντολών και σε ποια κατηγορία μνήμης είναι αποθηκευμένο;
int arg1[] = {71, 111, 111, 100, 32, 0};
int arg2[5] = {'j', 111, 98, '!', 0};
int * result = compute(arg1, 3, arg2, 2);
Στο τέλος του φυλλαδίου δίνεται πίνακας ASCII ως βοήθημα.
Δείτε το βήμα που επαναλαμβάνεται: συγκρίνει τα δύο “τρέχοντα” στοιχεία και παίρνει το
μικρότερο· σε ποιον αλγόριθμο ταξινόμησης είναι αυτό το βασικό βήμα και τι υποθέτει για
τις εισόδους; Για το result προσέξτε ότι χρησιμοποιούνται μόνο τα πρώτα na και nb
στοιχεία, και ξεχωρίστε πού ζει ο δείκτης από πού ζουν τα δεδομένα στα οποία δείχνει. Για
το σφάλμα, σκεφτείτε τι μπορεί να επιστρέψει η malloc.
Αριθμός στον οδηγό: Α17.13
(στο κεφάλαιο) ·
Μόνιμο αναγνωριστικό: exam-2026-jan-q2 ·
Σύνδεσμος: https://progintro.github.io/study/questions/exams/exam-2026-jan-q2.html ·
Markdown (GitHub)