Συνένωση Αλφαριθμητικών - join [20 Μονάδες]
Γράψτε μία συνάρτηση join η οποία να λαμβάνει ως ορίσματα έναν πίνακα elements από
αλφαριθμητικά (strings) και ένα delimiter αλφαριθμητικό (string) και να επιστρέφει ένα νέο
αλφαριθμητικό με όλα τα αλφαριθμητικά συνενωμένα μεταξύ τους με το αλφαριθμητικό
delimiter. Για παράδειγμα, αν δώσουμε ως elements τον πίνακα {"hall", "oates"} και ως
delimiter το " & ", τότε η συνάρτηση θέλουμε να μας επιστρέψει το αλφαριθμητικό
"hall & oates". Αντίστοιχα, αν δώσουμε ως elements τον πίνακα {"A", "Bing", "Boom"}
και ως delimiter το "Bada", τότε πρέπει να μας επιστρέψει "ABadaBingBadaBoom". Η
συνάρτηση μπορεί να έχει οποιαδήποτε διεπαφή (τύπο επιστροφής / επιπλέον ορίσματα)
επιθυμείτε. Τι χρονική και χωρική πολυπλοκότητα έχει ο αλγόριθμός σας (5/20 της
βαθμολογίας);
Η συνάρτηση πρέπει να ξέρει πόσα στοιχεία έχει ο πίνακας, οπότε περάστε το πλήθος ως
επιπλέον όρισμα. Υπολογίστε πρώτα το ακριβές μήκος του αποτελέσματος (τα μήκη των
στοιχείων, n - 1 φορές τον delimiter και τον τερματικό χαρακτήρα), κάντε μία
malloc και μετά αντιγράψτε κρατώντας έναν δείκτη στο τέλος. Προσέξτε ότι επαναλαμβανόμενη
strcat από την αρχή του αποτελέσματος χαλάει την πολυπλοκότητα, και σκεφτείτε την
περίπτωση άδειου πίνακα.
Αριθμός στον οδηγό: Α14.21
(στο κεφάλαιο) ·
Μόνιμο αναγνωριστικό: exam-2025-jan-q5 ·
Σύνδεσμος: https://progintro.github.io/study/questions/exams/exam-2025-jan-q5.html ·
Markdown (GitHub)