C daugiamatės masyvai (2d ir 3d masyvai)

Šioje pamokoje išmoksite pavyzdžių pagalba dirbti su daugiamatėmis masyvomis (dvimatėmis ir trimatėmis).

Programuodami C, galite sukurti masyvų masyvą. Šie masyvai yra žinomi kaip daugiamačiai masyvai. Pavyzdžiui,

 float x(3)(4);

Čia x yra dvimatis (2d) masyvas. Masyvas gali talpinti 12 elementų. Masyvą galite galvoti kaip lentelę su 3 eilutėmis ir kiekvienoje eilutėje yra 4 stulpeliai.

Panašiai galite deklaruoti trimatį (3d) masyvą. Pavyzdžiui,

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

Čia masyvas y gali turėti 24 elementus.

Daugialypio masyvo inicijavimas

Štai kaip galite inicijuoti dviejų ir trijų matmenų masyvus:

2d masyvo inicijavimas

 // 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); 

3D masyvo inicijavimas

Trimatį masyvą galite inicijuoti panašiai kaip dvimatį masyvą. Štai pavyzdys

 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 pavyzdys: dvimatis masyvas vertybėms išsaugoti ir spausdinti

 // 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; ) 

Rezultatas

 1 miestas, 1 diena: 33 Miestas 1, 2 diena: 34 Miestas 1, 3 diena: 35 Miestas 1, 4 diena: 33 miestas 1, 5 diena: 32 miestas 1, diena 6: 31 Miestas 1, diena 7: 30 Miestas 2, 1 diena: 23 miestas 2, diena 2: 22 Miestas 2, 3 diena: 21 miestas 2, 4 diena: 24 miestas 2, 5 diena: 22 miestas 2, diena 6: 25 Miestas 2, diena 7: 26 Rodomos vertės : 1 miestas, 1 diena = 33, 1 diena, 2 diena = 34, 1 diena, 3 diena = 35 miestas 1, 4 diena = 33 miestas 1, 5 diena = 32 miestas 1, 6 diena = 31 miestas 1, 7 diena = 30 2 Miestas, 1 diena = 23 Miestas 2, 2 diena = 22 Miestas 2, 3 diena = 21 Miestas 2, 4 diena = 24 Miestas 2, 5 diena = 22 Miestas 2, 6 diena = 25 Miestas 2, 7 diena = 26

2 pavyzdys: dviejų matricų suma

 // 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; )

Rezultatas

Įveskite 1-osios matricos elementus Įveskite a11: 2; Įveskite a12: 0,5; Įveskite a21: -1,1; Įveskite a22: 2; Įveskite 2-osios matricos elementus Įveskite b11: 0,2; Įveskite b12: 0; Įveskite b21: 0,23; Įveskite b22: 23; Matricos suma: 2,2 0,5 -0,9 25,0

3 pavyzdys: trimatis masyvas

 // 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; )

Rezultatas

 Įveskite 12 reikšmių: 1 2 3 4 5 6 7 8 9 10 11 12 Rodomos vertės: testas (0) (0) (0) = 1 testas (0) (0) (1) = 2 testas (0) (1) (0) = 3 bandymai (0) (1) (1) = 4 bandymai (0) (2) (0) = 5 bandymai (0) (2) (1) = 6 bandymai (1) (0) (0) ) = 7 bandymas (1) (0) (1) = 8 bandymas (1) (1) (0) = 9 bandymas (1) (1) (1) = 10 bandymas (1) (2) (0) = 11 bandymas (1) (2) (1) = 12

Įdomios straipsniai...