Οδηγός Μελέτης - Εισαγωγή στον Προγραμματισμό

Α12.8 · Δυναμική δέσμευση μνήμης για μονοδιάστατο πίνακα

Εργαστήριο 7, Άσκηση 2 · Δυσκολία ★☆☆ · programming · Κεφάλαια: 12, 13

2.1 Κατασκευάστε το πρόγραμμα array.c που να διαβάζει από την είσοδο τη διάσταση ενός μονοδιάστατου πίνακα ακεραίων (έστω N), να δεσμεύει χώρο N θέσεων δυναμικά και έπειτα να τον αρχικοποιεί διαβάζοντας από την είσοδο ακέραιους αριθμούς.

Δυναμική δέσμευση μνήμης για μονοδιάστατο πίνακα

Συνάρτηση void *malloc(size_t size)

Χρήση:

Η malloc επιστρέφει NULL σε περίπτωση αποτυχίας δέσμευσης της αιτούμενης μνήμης.

Αποδέσμευση μνήμης για δυναμικά δεσμευμένους πίνακες

Συνάρτηση void free(void *p)

Χρήση: free(p); όπου p είναι δείκτης σε θέσεις μνήμης που έχουν δεσμευθεί δυναμικά.

Όταν χρησιμοποιούνται οι συναρτήσεις malloc() και free(), πρέπει να γίνεται συμπερίληψη του αρχείου επικεφαλίδας stdlib.h.

Γράψτε μια συνάρτηση print_array που να εκτυπώνει τα στοιχεία του πίνακα σε μία γραμμή χωρισμένα με στηλογνώμονα (tab).

2.2 Κατασκευάστε το αρχείο input.txt το οποίο να περιέχει N+1 ακέραιους αριθμούς ως εξής: Ο πρώτος αριθμός είναι το πλήθος των στοιχείων (N) και ακολουθούν οι N ακέραιοι χωρισμένοι με κενά.

2.3 Εκτελέστε το πρόγραμμα array με ανακατεύθυνση εισόδου από το αρχείο input.txt.

2.4 Επεκτείνετε το πρόγραμμά σας, με μια συνάρτηση print_average ώστε να εκτυπώνεται ο μέσος όρος των στοιχείων του πίνακα.

Υπόδειξη

Διαβάστε πρώτα το N, δεσμεύστε και ελέγξτε αμέσως αν η malloc επέστρεψε NULL. Μετά ο δείκτης χρησιμοποιείται ακριβώς σαν πίνακας (p[i]). Μην ξεχάσετε την free στο τέλος, και τη μετατροπή σε double στον μέσο όρο.

Αριθμός στον οδηγό: Α12.8 (στο κεφάλαιο) · Μόνιμο αναγνωριστικό: lab-lab07-array · Σύνδεσμος: https://progintro.github.io/study/questions/labs/lab-lab07-array.html · Markdown (GitHub)