Πολυδιάστατες συστοιχίες (2d και 3d Array)

Σε αυτό το σεμινάριο, θα μάθετε να εργάζεστε με πολυδιάστατους πίνακες (δισδιάστατες και τρισδιάστατες συστοιχίες) με τη βοήθεια παραδειγμάτων.

Στον προγραμματισμό C, μπορείτε να δημιουργήσετε μια σειρά από πίνακες. Αυτές οι συστοιχίες είναι γνωστές ως πολυδιάστατες συστοιχίες. Για παράδειγμα,

 float x(3)(4);

Εδώ, το x είναι ένας δισδιάστατος (2d) πίνακας. Ο πίνακας μπορεί να περιέχει 12 στοιχεία. Μπορείτε να θεωρήσετε τον πίνακα ως πίνακα με 3 σειρές και κάθε σειρά έχει 4 στήλες.

Ομοίως, μπορείτε να δηλώσετε έναν τρισδιάστατο (3δ) πίνακα. Για παράδειγμα,

 float y(2)(4)(3);

Εδώ, ο πίνακας y μπορεί να χωρέσει 24 στοιχεία.

Αρχικοποίηση πολυδιάστατου πίνακα

Δείτε πώς μπορείτε να προετοιμάσετε δισδιάστατες και τρισδιάστατες συστοιχίες:

Αρχικοποίηση ενός 2d πίνακα

 // Different ways to initialize two-dimensional array int c(2)(3) = ((1, 3, 0), (-1, 5, 9)); int c()(3) = ((1, 3, 0), (-1, 5, 9)); int c(2)(3) = (1, 3, 0, -1, 5, 9); 

Αρχικοποίηση ενός τρισδιάστατου πίνακα

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

 int test(2)(3)(4) = ( ((3, 4, 2, 3), (0, -3, 9, 11), (23, 12, 23, 2)), ((13, 4, 56, 3), (5, 9, 3, 5), (3, 1, 4, 9)));

Παράδειγμα 1: Δισδιάστατος πίνακας για αποθήκευση και εκτύπωση τιμών

 // C program to store temperature of two cities of a week and display it. #include const int CITY = 2; const int WEEK = 7; int main() ( int temperature(CITY)(WEEK); // Using nested loop to store values in a 2d array for (int i = 0; i < CITY; ++i) ( for (int j = 0; j < WEEK; ++j) ( printf("City %d, Day %d: ", i + 1, j + 1); scanf("%d", &temperature(i)(j)); ) ) printf("Displaying values: "); // Using nested loop to display vlues of a 2d array for (int i = 0; i < CITY; ++i) ( for (int j = 0; j < WEEK; ++j) ( printf("City %d, Day %d = %d", i + 1, j + 1, temperature(i)(j)); ) ) return 0; ) 

Παραγωγή

 Πόλη 1, Ημέρα 1: 33 Πόλη 1, Ημέρα 2: 34 Πόλη 1, Ημέρα 3: 35 Πόλη 1, Ημέρα 4: 33 Πόλη 1, Ημέρα 5: 32 Πόλη 1, Ημέρα 6: 31 Πόλη 1, Ημέρα 7: 30 Πόλη 2, Ημέρα 1: 23 Πόλη 2, Ημέρα 2: 22 Πόλη 2, Ημέρα 3: 21 Πόλη 2, Ημέρα 4: 24 Πόλη 2, Ημέρα 5: 22 Πόλη 2, Ημέρα 6: 25 Πόλη 2, Ημέρα 7: 26 Εμφάνιση τιμών : Πόλη 1, Ημέρα 1 = 33 Πόλη 1, Ημέρα 2 = 34 Πόλη 1, Ημέρα 3 = 35 Πόλη 1, Ημέρα 4 = 33 Πόλη 1, Ημέρα 5 = 32 Πόλη 1, Ημέρα 6 = 31 Πόλη 1, Ημέρα 7 = 30 Πόλη 2, Ημέρα 1 = 23 Πόλη 2, Ημέρα 2 = 22 Πόλη 2, Ημέρα 3 = 21 Πόλη 2, Ημέρα 4 = 24 Πόλη 2, Ημέρα 5 = 22 Πόλη 2, Ημέρα 6 = 25 Πόλη 2, Ημέρα 7 = 26

Παράδειγμα 2: Άθροισμα δύο πινάκων

 // C program to find the sum of two matrices of order 2*2 #include int main() ( float a(2)(2), b(2)(2), result(2)(2); // Taking input using nested for loop printf("Enter elements of 1st matrix"); for (int i = 0; i < 2; ++i) for (int j = 0; j < 2; ++j) ( printf("Enter a%d%d: ", i + 1, j + 1); scanf("%f", &a(i)(j)); ) // Taking input using nested for loop printf("Enter elements of 2nd matrix"); for (int i = 0; i < 2; ++i) for (int j = 0; j < 2; ++j) ( printf("Enter b%d%d: ", i + 1, j + 1); scanf("%f", &b(i)(j)); ) // adding corresponding elements of two arrays for (int i = 0; i < 2; ++i) for (int j = 0; j < 2; ++j) ( result(i)(j) = a(i)(j) + b(i)(j); ) // Displaying the sum printf("Sum Of Matrix:"); for (int i = 0; i < 2; ++i) for (int j = 0; j < 2; ++j) ( printf("%.1f ", result(i)(j)); if (j == 1) printf(""); ) return 0; )

Παραγωγή

Εισαγάγετε στοιχεία του 1ου πίνακα Εισάγετε a11: 2; Πληκτρολογήστε a12: 0.5; Πληκτρολογήστε a21: -1.1; Πληκτρολογήστε a22: 2; Εισαγάγετε στοιχεία 2ης μήτρας Εισάγετε b11: 0.2; Πληκτρολογήστε b12: 0; Πληκτρολογήστε b21: 0.23; Πληκτρολογήστε b22: 23; Άθροισμα Matrix: 2.2 0.5 -0.9 25.0

Παράδειγμα 3: Τρισδιάστατος πίνακας

 // C Program to store and print 12 values entered by the user #include int main() ( int test(2)(3)(2); printf("Enter 12 values: "); for (int i = 0; i < 2; ++i) ( for (int j = 0; j < 3; ++j) ( for (int k = 0; k < 2; ++k) ( scanf("%d", &test(i)(j)(k)); ) ) ) // Printing values with proper index. printf("Displaying values:"); for (int i = 0; i < 2; ++i) ( for (int j = 0; j < 3; ++j) ( for (int k = 0; k < 2; ++k) ( printf("test(%d)(%d)(%d) = %d", i, j, k, test(i)(j)(k)); ) ) ) return 0; )

Παραγωγή

 Εισαγάγετε 12 τιμές: 1 2 3 4 5 6 7 8 9 10 11 12 Εμφανίζοντας τιμές: δοκιμή (0) (0) (0) = 1 δοκιμή (0) (0) (1) = 2 δοκιμή (0) (1) (0) = 3 δοκιμή (0) (1) (1) = 4 δοκιμή (0) (2) (0) = 5 δοκιμή (0) (2) (1) = 6 δοκιμή (1) (0) (0 ) = 7 δοκιμή (1) (0) (1) = 8 δοκιμή (1) (1) (0) = 9 δοκιμή (1) (1) (1) = 10 δοκιμή (1) (2) (0) = 11 δοκιμή (1) (2) (1) = 12

ενδιαφέροντα άρθρα...