Introduktion til multidimensional Array i C

Denne artikel fokuserer på det multidimensionelle array i c, der overvejende bruges til computer- og forskningsanalyse. Generelt fokuserer en matrix lineært et stykke information, der siges at være en-dimensionelt. Enkeltdimension lagrer kun data, som de studerendes regno. I nogle situationer er det nødvendigt at gemme data i et tabelformat, der omfatter rækker og kolonner eller at håndtere komplekse data. For at visualisere det har vi brug for et matrixformat, som vi kaldte som to-dimensionelle arrays, hvor arrangementerne kræver pixels af billedet, grafik. Dataene gemmes tabulært. Arraymanipulationer udføres ved at omorganisere et element ved hjælp af funktioner som omformning, klemme.

Hvordan erklæres en flerdimensionel matrix i C?

Syntaks:

Den generelle erklæring om flerdimensionel matrix er angivet som:

type name ( size) (size)……. N;

  • Her datatypenavn - Det angiver typen af ​​elementer (heltal, flyder).
  • Array name - Angiver navn, der er tildelt den dimensionelle matrix.
  • Rækkestørrelse - Antal rækkeelementer eks. række-størrelse = 8, derefter har matrix 8 rækker.
  • Kolonnestørrelse - Antal søjleelementer.

Sådan initialiseres det flerdimensionelle array i C?

Størrelsen på de multidimensionelle arrays forudsiges ved at multiplicere størrelsen på forskellige dimensioner. Og de gemmer værdier i form af to måder som række-hoved og kolonne-hoved. Og hukommelsesallokationen validerer både længde- og rangegenskaber.

I C har multidimensionel matrix tre typer:

  1. To-dimensionelt array
  2. Tredimensionel Array
  3. Firedimensionel Array

1. To-dimensionelt array

To-dimensionel array er struktureret som matrixer og implementeret ved hjælp af rækker og kolonner, også kendt som en matrix af arrays. Hukommelsesallokering udføres enten i række-hoved og kolonne-hoved. Og standardformatet er Row-Major. Når man tager en 2-D-matrix, betragtes hvert element som sig selv som en 1-D-matrix eller kendt for at være en samling af en 1-D-matrix. Den to-d-array bruger to til sløjfer eller indlejrede sløjfer, hvor ydre sløjfer udføres fra 0 til det første underskrift.

Syntaks:

type array name ( no. of rows) ( no. of Columns);

Eksempel:

int td (4)(3);

her 4 er nej. af rækker og 3 er nr. af kolonner.

Initialisering af to-dimensionelle array

Initialisering i 2-D array udføres på flere måder, det vises her.

int m (3)(2) = ((10, 3) (4, 2) (6, 4) (5, 4) (3, 4));
int di (2)(4) = (10, 5, 8, 12, 45, 13, 11, 61);

Her har vi nævnt nej. af rækker og kolonner i boksen Det er obligatorisk at tildele det andet indeks for at forstå kompilatoren om slutningen og starten af ​​rækken. Nedenstående tabel viser hukommelsesfordelingen af ​​2-D array.

Antallet af elementer bestemmes ved at manipulere et antal rækker og kolonner og multiplicere nr. af henholdsvis rækker og kolonner. for eksempel, nr. af elementer, som en matrix har B (-2 … 4, -3, 6). Det beregnes af undergrænse og øvre grænse.

No. of rows= UB-LB +1
=4-(-2) +1 = 4+2+1= 7
No. of columns = UB-LB +1
= 6-(-3) + 1= 11
No. of elements = Rows * columns = 7 * 11 =77 elements

Implementering

Det gøres ved hjælp af Row major og column-major Implementations

Row-Major:
Formlen til adressemanipulation er angivet som:
= B +W ( n(I-1) +(J-1))
Hvor b- er baseadressen og n- Antal kolonner for W-bytes.
Kolonne Major:
= B +W ( r(j-1) +(i-1))
hvor r - er nej. af rækker.

Eksempler på todimensional array

Eksempler på todimensional array er:

Eksempel 1

Hvert element i en matrix A (-10.10, 20 … 35) har brug for 1 byte hukommelse. Og matrisen passer i kolonne-hoved på adressen 400, Find placeringen af ​​A (0, 30).

Løsning

BA =400, W=1
R = no. of rows -> 10-(-10) +1 = 21
I= -10; J= 20
Address A (0, 30) = 400 + 1((0-(-10) +21(30-20))) =400 +(10+21*10)
=400 +(10+210) = 620

En velkendt operation, der udføres i 2-d-matrixen, er Algebra for matrixer med m * n Matrix af B. Det matematiske koncept af matrixen implementeres på samme måde som i programmering.

Nedenstående eksempel gemmer et element i matrixformatet og udskriver det samme.

Kode:

#include
int main ()
(
int a(3)(4), i, j;
for(i = 0; i < 3; i++)
(
for(j = 0; j < 4; j++)
(
printf("Enter arr(%d)(%d): ", i, j);
scanf("%d", &a(i)(j));
)
)
printf("\nEntered 2-D array is: \n\n");
for(i = 0; i < 3; i++)
(
for(j = 0; j < 4; j++)
(
printf("%3d ", a(i)(j) );
)
printf("\n");
)
return 0;
)

Produktion:

Eksempel 2

C-program, der udfører summen af ​​to matrixer.

Kode:

#include
int main()
(
int mat(20)(20);
int i, j, r, c;
int s;
printf("Enter number of Rows :");
scanf("%d", &r);
printf("Enter number of Cols :");
scanf("%d", &c);
printf("\nEnter matrix elements :\n");
for(i=0;i< r;i++)
( for(j=0;j< c;j++)
(
printf("Enter the number of inputs (%d, %d) : ", i+1, j+1);
scanf("%d", &mat(i)(j));
)
)
printf("\n");
for(i=0;i< r;i++)
(
s=0;
for(j=0;j< c;j++)
(
printf("%d\t", mat(i)(j));
s+=mat(i)(j);
)
printf("\tSUM : %d", s);
printf("\n");
)
)

Ovenstående program beregner summen af ​​to matrixer A (20, 20) B (20, 20), forudsat at de har to identiske matrixer. Gennem for loop kræver det to inputmatrix og loops for at acceptere matrix.

Produktion:

Eksempel 3

Transponering af en matrix

Udskiftning af rækker og kolonner for at danne en ny matrix, der er kendt som transponering af en matrix.

Eksempel:

Derefter transponerer give,

Matrix Transpose Brug af C-program

Kode:

#include
int main()
(
int T(5)(5), i, j, a, b;
printf(" No.of rows?");
scanf("%d", &a);
printf("No.of columns?");
scanf("%d", &b);
printf("\nEnter the elements in matrix:\n");
for(i=0;i for(j=0;j scanf("%d", &T(i)(j));
printf("\nTranspose matrix is given as:\n");
for(i=0;i (
for(j=0;j printf("%d ", T(j)(i));
printf("\n");
)
return 0;
)
#include
int main()
(
int T(5)(5), i, j, a, b;
printf(" No.of rows?");
scanf("%d", &a);
printf("No.of columns?");
scanf("%d", &b);
printf("\nEnter the elements in matrix:\n");
for(i=0;i for(j=0;j scanf("%d", &T(i)(j));
printf("\nTranspose matrix is given as:\n");
for(i=0;i (
for(j=0;j printf("%d ", T(j)(i));
printf("\n");
)
return 0;
)
#include
int main()
(
int T(5)(5), i, j, a, b;
printf(" No.of rows?");
scanf("%d", &a);
printf("No.of columns?");
scanf("%d", &b);
printf("\nEnter the elements in matrix:\n");
for(i=0;i for(j=0;j scanf("%d", &T(i)(j));
printf("\nTranspose matrix is given as:\n");
for(i=0;i (
for(j=0;j printf("%d ", T(j)(i));
printf("\n");
)
return 0;
)
#include
int main()
(
int T(5)(5), i, j, a, b;
printf(" No.of rows?");
scanf("%d", &a);
printf("No.of columns?");
scanf("%d", &b);
printf("\nEnter the elements in matrix:\n");
for(i=0;i for(j=0;j scanf("%d", &T(i)(j));
printf("\nTranspose matrix is given as:\n");
for(i=0;i (
for(j=0;j printf("%d ", T(j)(i));
printf("\n");
)
return 0;
)
#include
int main()
(
int T(5)(5), i, j, a, b;
printf(" No.of rows?");
scanf("%d", &a);
printf("No.of columns?");
scanf("%d", &b);
printf("\nEnter the elements in matrix:\n");
for(i=0;i for(j=0;j scanf("%d", &T(i)(j));
printf("\nTranspose matrix is given as:\n");
for(i=0;i (
for(j=0;j printf("%d ", T(j)(i));
printf("\n");
)
return 0;
)

I ovenstående program For at læse en matrix havde vi brugt to til løkker og til at udskrive dens transponering bruges den indlejrede for loop til at vise output. Her har vi brugt 3 * 3 matrix.

Produktion:

2. Tredimensionel matrix

Det kaldes en matrix af matrixelementer eller en matrix af matrixer. Det er temmelig spændende, men når du først får praksis mod logikken, gør det lettere at implementere. og denne 3D-array kræver mere end tre dimensioner og kræver, at hukommelsesmængden opbevares.

Det kan erklæres som:

data_type array_name (table name) ( no. of row) ( no. of column) int L(m)(n) (p);

int L (3) (4) (2); Her kan matrix L indeholde 24 elementer. Og alle disse kan initialiseres under kompilationsprocessen, men når de ikke initialiseres, sættes de i en affaldsværdi.

Initialisering kan udføres på samme måde som en to-dimensionel matrix. Her er en prøve,

int L (2)(3)(4) = (((2, 2, 1, 3), (1, 6, 5, 11), (22, 11, 13, 5)), ((13, 5, 77, 8), (6, 8, 2, 4), (3, 2, 7, 8)));

Eksempler på tredimensionel matrix

Her er nogle eksempler på den tredimensionelle matrix, der er givet nedenfor:

Eksempel 1

Nedenfor kommer et simpelt eksempel i C-programmering, der illustrerer tredimensionel Array. Det gøres ved hjælp af en løkke ved at overveje 3 til løkker til 3d-elementer.

Kode:

#include
void main()
(
printf("three dimensional array!\n\n");
int i, j, k, s(2)(1)(2), siz;
siz=2*1*2;
printf("Enter %d elements: \n", siz);
for(i = 0; i < 2; ++i)
(
for (j = 0; j < 1; ++j)
(
for(k = 0; k < 2; ++k )
(
scanf("%d", &s(i)(j)(k));
)
)
)
printf("The stored values are:\n\n");
for(i = 0; i < 2; i++)
(
for (j = 0; j < 1; j++)
(
for(k = 0; k < 2; k++)
(
printf("sample(%d)(%d)(%d) = %d\n", i, j, k, s(i)(j)(k));
)
)
)
)

Produktion:

Eksempel 2

Et andet eksempel på en 3D-array til automatisk at udskrive elementer.

Kode:

#include
int main()
(
int m(2)(3)(2) =
(
( (1, 2), (3, 5), (6, 5) ),
( (8, 3), (8, 7), (9, 11) )
);
for (int i = 0; i <2; ++i)
(
for (int j = 0; j <3; ++j)
(
for (int k = 0; k <2; ++k)
printf("Value at m(%d)(%d)(%d) = %d\n", i, j, k, m(i)(j)(k));
)
)
)
return 0;
)

Produktion:

3. Firedimensionel matrix

Det er en matrix med tredimensionel matrix, og det er meget vanskeligt at styre dimensionerne. Det ses som en flok terninger sammen og gælder for rumvektorer.

Erklæring om 4-D Array:

Skriv array-navn (1) (2) (3) (4) ……. (n) hvor 1, 2 angiver dimensioner og n indebærer nth dimensioner.

Eksempel:

int state (5)(6)(7)(8);

Eksempel på firedimensionel matrix

C-program til implementering af 4- D-matrix.

Kode:

#include
int main()
(
int i, j, k, l, s;
int d(2)(2)(2)(2);
s = 2;
d(0)(0)(0)(0) = 4;
d(0)(0)(0)(1) = 3;
d(0)(0)(1)(0) = 2;
d(0)(0)(1)(1) = 6;
d(0)(1)(0)(0) = 6;
d(0)(1)(0)(1) = 8;
d(0)(1)(1)(0) = 1;
d(0)(1)(1)(1) = 2;
d(1)(0)(0)(0) = 6;
d(1)(0)(0)(1) = 9;
d(1)(0)(1)(0) = 5;
d(1)(0)(1)(1) = 1;
d(1)(1)(0)(0) = 9;
d(1)(1)(0)(1) = 7;
d(1)(1)(1)(0) = 5;
d(1)(1)(1)(1) = 7;
for (i = 0; i < s; i++) (
for (j = 0; j < s; j++) (
for (k = 0; k < s; k++) (
for (l = 0; l < s; l++) (
printf("Value of stdio(%d)(%d)(%d)(%d): %d ", i, j, k, l, d(i)(j)(k)(l));
printf("\n");
)
)
)
)
return 0;
)

Produktion:

Konklusion

Til sidst diskuterede vi i denne artikel multidimensionelle arrays og deres undertyper i C-programmering. Og også deres erklæring og adgang til elementerne i et matrixformat. Disse teknikker anvendes i konceptet som binær søgning og sortering implementering. Her spiller et indeks en nøglerolle, da de specificerer et element i matrixstrukturen.

Anbefalede artikler

Dette er en vejledning til multidimensionel matrix i C. Her diskuterer vi, hvordan man initialiserer den flerdimensionelle array i C sammen med eksempler. Du kan også se på de følgende artikler for at lære mere-

  1. Bedste C-kompilatorer
  2. 2D-arrays i C #
  3. 2-D Arrays i C.
  4. C Opbevaringsklasser
  5. C Programmering af matrixmultiplikation
  6. 3 forskellige typer arrays i PHP (eksempler)
  7. Hvordan fungerer array i Unix med syntaks?

Kategori: