Skip to content

Latest commit

 

History

History
57 lines (47 loc) · 3.08 KB

lab-lab07-array.md

File metadata and controls

57 lines (47 loc) · 3.08 KB
id lab-lab07-array
kind lab
title Δυναμική δέσμευση μνήμης για μονοδιάστατο πίνακα
source
title url years
Εργαστήριο 7, Άσκηση 2
2025
chapters
12
13
topics
dynamic-memory
arrays
redirection
difficulty 1
type programming

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

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

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

Χρήση:

  • ΤΔ *p; — δήλωση ενός δείκτη σε στοιχεία τύπου ΤΔ
  • p = malloc(N * sizeof(ΤΔ)); — δέσμευση μνήμης για N στοιχεία τύπου ΤΔ

Η 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 στον μέσο όρο.