Εισαγωγή στους πίνακες
Πίνακες Ένας πίνακας (array) είναι μια συλλογή μεμονωμένων τιμών με τα παρακάτω χαρακτηριστικά: Διατεταγμένος Ομοιογενής Κάθε τιμή ενός πίνακα ονομάζεται στοιχείο (element) του πίνακα.
Ιδιότητες πίνακα Δήλωση πίνακα Ιδιότητες πίνακα Ο τύπος των στοιχείων του πίνακα Το μέγεθος του πίνακα Δήλωση πίνακα τύπος_στοιχείου όνομα_πίνακα[μέγεθος]; Παραδείγματα int intarray[10]; double darray[5];
Αριθμοδείκτης (index) Κάθε στοιχείο ενός πίνακα προσδιορίζεται από μια αριθμητική τιμή που ορίζει τη θέση του στοιχείου αυτού στον πίνακα και ονομάζεται αριθμοδείκτης (index). 0 1 2 3 4
Επιλογή στοιχείου πίνακα Αναφερόμαστε στο i-οστό στοιχείο ενός πίνακα a ως εξής: a[i] Η γενική μορφή μιας παράστασης για την επιλογή ενός στοιχείου πίνακα είναι: όνομα_πίνακα[αριθμοδείκτης]; Με αυτό τον τρόπο μπορούμε να διαβάσουμε ή να αναθέσουμε τιμή σε αυτό το στοιχείο.
Επιλογή στοιχείου πίνακα (συνέχ.) Παράδειγμα: int a[5], val; /* Ανάθεση τιμής στο τρίτο στοιχείο του πίνακα */ a[2] = 12;? 0 1 2 3 4 12 0 1 2 3 4 /* Ανάγνωση της τιμής του τρίτου στοιχείου του πίνακα a */ val = a[2]; 12 0 1 2 3 4 val
Παράδειγμα βιβλίου (σ. 449) Ένα πρόγραμμα για την εμφάνιση του μέσου βαθμού μιας αθλήτριας ρυθμικής γυμναστικής από τη βαθμολογία 5 κριτών. Έστω NJudges ο αριθμός των κριτών (5) gymnasticscores[njudges] ο πίνακας με τις βαθμολογίες.
Συνέχεια Παραδείγματος Εισαγωγή της βαθμολογίας printf("please enter a score for each judge.\n"); for (i = 0; i < NJudges; i++) { printf("score for judge #%d: ", i); /* Ανάθεση τιμής στο i-οστό στοιχείο του πίνακα * gymnasticscores[i] = GetReal(); } Υπολογισμός του μέσου όρου total = 0.0; for (i = 0; i < NJudges; i++) { /* Ανάγνωση του i-οστού στοιχείου του πίνακα */ total += gymnasticscores[i]; } average = total / NJudges;
Το πλήρες πρόγραμμα Πρόγραμμα Βαθμολογίας Κριτών
Αναπαράσταση διανυσμάτων ως πίνακες Ένα διάνυσμα [α 1, α 2,..., α n ] του R n μπορεί να αναπαρασταθεί από έναν πίνακα με n στοιχεία. Εφαρμογή: Πρόγραμμα που υπολογίζει το εσωτερικό γινόμενο δύο διανυσμάτων. Κώδικας υπολογισμού του εσωτερικού γινομένου δύο διανυσμάτων a και b /* Ypologismos eswterikoy ginomenoy */ vproduct = 0.0; for (i=0; i < N; i++){ vproduct += a[i] * b[i]; }
Πλήρες πρόγραμμα υπολογισμού εσωτερικού γινομένου διανυσμάτων Το πλήρες Πρόγραμμα υπολογισμού εσωτερικού γινομένου δια
Πέρασμα πίνακα ως παραμέτρου σε συνάρτηση Ένας πίνακας είναι δυνατόν να αποτελεί όρισμα μιας συνάρτησης. Η μορφή του πρωτοτύπου μιας συνάρτησης με όρισμα έναν μονοδιάστατο πίνακα είναι η εξής: int f(int a[], int n); Ενώ η κλήση της συνάρτησης γίνεται ως εξής: int myarray[10]; f(myarray, 10);
Πέρασμα πίνακα ως παραμέτρου σε συνάρτηση Προσοχή: οι πίνακες περνιούνται ως παράμετροι με αναφορά, δηλαδή είναι δυνατή η αλλαγή των στοιχείων του πίνακα που αποτελεί όρισμα στην κλήση μιας συνάρτηση.
Συνάρτηση υπολογισμού του εσωτερικού γινομένου αριθμών double mmult(double x[], double y[], int n); double mmult(double x[], double y[], int n) { double sprod = 0.0; int i; } for (i=0; i < n; i++) { sprod += x[i] * y[i]; } return sprod;
Συνάρτηση για την ανάγνωση των στοιχείων πίνακα void InsertTableData(double x[], int n) { int i; for (i=0; i < n; i++) { } } printf("[%d]= ",i + 1); x[i] = GetReal();
Πλήρες πρόγραμμα Το πλήρες πρόγραμμα υπολογισμού του εσωτερικού γινομένου με χρήση συνάρτησης.
Ανάθεση αρχικών τιμών σε πίνακα Κατά τη δήλωση ενός πίνακα είναι δυνατόν να δώσουμε αρχικές τιμές στα στοιχεία του πίνακα, σύμφωνα με το παρακάτω παράδειγμα: double t[4] = {2.0, 3.2, 1.4, 4.1}; Το παραπάνω είναι ισοδύναμο με το double t[4]; t[0] = 2.0; t[1] = 3.2; t[2] = 1.4; t[3] = 4.1;
Ασκήσεις 3 και 4, Κεφ. 11 Υπολογισμός της μέσης τιμής και της τυπικής απόκλισης των (πραγματικών) στοιχείων ενός πίνακα. Υπολογισμός μέσης τιμής x= x i n Υπολογισμός τυπικής απόκλισης σ = x x i 2 n
Συνάρτηση υπολογισμού μέσης τιμής double mt(double x[], int n) { double sum; int i; } sum = 0; for (i=0; i < n; i++){ sum = sum + x[i]; } return (sum / n);
Συνάρτηση υπολογισμού τυπικής απόκλισης double ta(double x[], int n) { double m, sum; int i; m = mt(x,n); sum = 0; for (i =0; i < n; i++) { sum = sum + (m - x[i]) * (m - x[i]); } sum = sum / n; sum = sqrt (sum); } return sum;
Πλήρες πρόγραμμα Το πλήρες πρόγραμμα υπολογισμού μέσων τιμών και τυπικών αποκλίσεων.
Αναπαράσταση πολυωνύμου ως πίνακα Έστω το πολυώνυμο βαθμού n α n x n a n 1 x n 1... a 1 x a 0 Το παραπάνω πολυώνυμο είναι δυνατόν να αναπαρασταθεί από έναν πίνακα a μεγέθους n + 1 τέτοιον ώστε a[n] = α n a[n-1] = α n-1... a[1] = a 1 a[0] = a
Υπολογισμός της τιμής πολυωνύμων βαθμού n Ένα πολυώνυμο βαθμού n είναι δυνατόν να γραφεί ως εξής: α n x n a n 1 x n 1... a 1 x a 0 = α n x a n 1 x... a 1 x a 0 Για παράδειγμα 5 x 3 3 x 2 x 4= 5 x 3 x 1 x 4
Συνάρτηση υπολογισμού της τιμής πολυωνύμου /* Προσοχή: Το μέγεθος του πίνακα πρέπει να είναι n + 1 */ double polyvalue(double p[], int n, int x) { double value; int i; } value = p[n]; for (i = n - 1; i >= 0; i--) { value = value * x + p[i]; } return value;
Άλλα παραδείγματα Εκτύπωση στοιχείων πίνακα Αντιστροφή πίνακα
Περαιτέρω μελέτη: Ενότητα 11.1 του βιβλίου