Inleiding tot multidimensionale array in C

Dit artikel richt zich op de multidimensionale array in c die voornamelijk wordt gebruikt in computer- en onderzoeksanalyses. Over het algemeen focust een array lineair een stuk informatie waarvan wordt gezegd dat het eendimensionaal is. Eéndimensionaal slaat alleen gegevens op, zoals regno van de studenten. In sommige situaties is het noodzakelijk om gegevens op te slaan in een tabelindeling die rijen en kolommen omvat of om complexe gegevens te verwerken. Om het te visualiseren, hebben we een matrixindeling nodig die we tweedimensionale arrays hebben genoemd, waarbij de arrangementen pixels van de afbeelding of afbeeldingen vereisen. De gegevens worden in tabelvorm opgeslagen. Matrixmanipulaties worden uitgevoerd door een element te herschikken met behulp van functies zoals hervormen, knijpen.

Hoe een multidimensionale array in C declareren?

Syntaxis:

De algemene verklaring van Multidimensional array wordt gegeven als:

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

  • Hier, gegevenstypenaam - het geeft het type elementen aan (geheel getal, zwevend).
  • Array name - Geeft de naam aan die is toegewezen aan de dimensionale array.
  • Rijgrootte - Aantal rij-elementen ex. row-size = 8, dan heeft array 8 rijen.
  • Kolomgrootte - aantal kolomelementen.

Hoe de multidimensionale array in C te initialiseren?

De grootte van de multidimensionale arrays wordt voorspeld door de grootte van verschillende dimensies te vermenigvuldigen. En ze slaan waarden op in de vorm van twee manieren, zoals rij-majeur en kolom-majeur. En de geheugentoewijzing valideert zowel lengte- als rangeigenschappen.

In C heeft Multidimensional array drie typen:

  1. Tweedimensionale reeks
  2. Driedimensionale array
  3. Vierdimensionale array

1. Tweedimensionale array

Tweedimensionale array is gestructureerd als matrices en geïmplementeerd met behulp van rijen en kolommen, ook bekend als een array van arrays. De geheugentoewijzing gebeurt in rij-majeur en kolom-majeur. En het standaardformaat is Row-Major. Bij het nemen van een 2D-reeks wordt elk element zelf beschouwd als een 1-D reeks of bekend als een verzameling van een 1-D reeks. De tweed-array gebruikt twee voor lussen of geneste lussen waar buitenste lussen worden uitgevoerd van 0 tot het initiële subscript.

Syntaxis:

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

Voorbeeld:

int td (4)(3);

hier 4 is het nee. van rijen en 3 is het nee. van kolommen.

Initialisatie van tweedimensionale array

Initialisatie in de 2D-array gebeurt op meerdere manieren, het wordt hier getoond.

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

Hier hebben we het nee genoemd. van rijen en kolommen in het vak Het is verplicht om de tweede index toe te wijzen om de compiler duidelijk te maken over het einde en het begin van de rij. De onderstaande tabel toont de geheugentoewijzing van de 2D-array.

Het aantal elementen wordt bepaald door een aantal rijen en kolommen te manipuleren en nee te vermenigvuldigen. van rijen en kolommen respectievelijk. bijvoorbeeld het nee. van elementen bevat een array B (-2 … 4, -3.6). Het wordt berekend door ondergrens en bovengrens.

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

Implementatie

Het wordt gedaan met behulp van Rij-majeur en kolom-majeur-implementaties

Row-Major:
De formule voor adresmanipulatie wordt gegeven als:
= B +W ( n(I-1) +(J-1))
Waar b- het basisadres is en het aantal kolommen voor W bytes.
Kolom Major:
= B +W ( r(j-1) +(i-1))
waar r - is het nee. van rijen.

Voorbeelden van tweedimensionale array

Voorbeelden van tweedimensionale matrix zijn:

Voorbeeld 1

Elk element van array A (-10.10, 20 … 35) heeft 1 byte geheugen nodig. En de reeks past in Kolommajeur op het adres 400, Vind de locatie van A (0, 30).

Oplossing

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

Een bekende bewerking in de 2D-array is Algebra van matrices met m * n Matrix van B. Het wiskundige concept van de matrix wordt op dezelfde manier geïmplementeerd als bij het programmeren.

In het onderstaande voorbeeld wordt een element opgeslagen in de matrixindeling en wordt hetzelfde afgedrukt.

Code:

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

Output:

Voorbeeld 2

C-programma dat de som van twee matrices uitvoert.

Code:

#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");
)
)

Het bovenstaande programma berekent de som van twee matrices A (20, 20) B (20, 20) op voorwaarde dat ze twee identieke matrices hebben. Door middel van voor lus zijn twee invoermatrix en lussen nodig om matrix te accepteren.

Output:

Voorbeeld # 3

Transponeren van een matrix

Het uitwisselen van rijen en kolommen om een ​​nieuwe matrix te vormen die bekend staat als het transponeren van een matrix.

Voorbeeld:

Vervolgens transponeren geven,

Matrix transponeren met behulp van C-programma

Code:

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

In het bovenstaande programma Om een ​​matrix te lezen hadden we twee voor lussen gebruikt en om de transpositie af te drukken, wordt de geneste voor lus gebruikt om de uitvoer weer te geven. Hier hebben we 3 * 3 matrix gebruikt.

Output:

2. Driedimensionale matrix

Het wordt een matrix van matrixelementen of een matrix van matrices genoemd. Het is nogal een Buzzy, maar als je eenmaal oefenen naar de logica, is de implementatie ervan eenvoudiger. en deze 3D-array vereist meer dan drie dimensies en vereist de meeste geheugenruimte om op te slaan.

Het kan worden verklaard als:

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

int L (3) (4) (2); Hier kan de array L 24 elementen bevatten. En al deze kunnen tijdens het compilatieproces worden geïnitialiseerd, maar wanneer ze niet worden geïnitialiseerd, worden ze in een afvalwaarde geplaatst.

Initialisatie kan op dezelfde manier worden gedaan als een tweedimensionale array. Hier is een voorbeeld,

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

Voorbeelden van driedimensionale array

Hier zijn enkele voorbeelden van de driedimensionale array die hieronder worden gegeven:

Voorbeeld 1

Hieronder volgt een eenvoudig voorbeeld in C-programmering ter illustratie van driedimensionale array. Het wordt gedaan met behulp van een lus door 3 te overwegen voor lussen voor 3D-elementen.

Code:

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

Output:

Voorbeeld 2

Een ander voorbeeld van een 3D-array om elementen automatisch af te drukken.

Code:

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

Output:

3. Vierdimensionale matrix

Het is een array van driedimensionale array en het is erg moeilijk om de dimensies te beheren. Het wordt gezien als een groep kubussen samen en toepasbaar voor ruimtevectoren.

Verklaring van 4-D Array:

Typ de reeksnaam (1) (2) (3) (4) ……. (n) waar 1, 2 de dimensies aangeeft en n de nde dimensies impliceert.

Voorbeeld:

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

Voorbeeld van vierdimensionale reeks

C-programma om 4- D array te implementeren.

Code:

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

Output:

Conclusie

Tot het einde hebben we in dit artikel multidimensionale arrays en hun subtypen in C-programmering besproken. En ook hun verklaring en toegang tot de elementen in een matrixformaat. Deze technieken worden toegepast in het concept, zoals de implementatie van binair zoeken en sorteren. Hier speelt een index een sleutelrol omdat deze een element in de matrixstructuur specificeren.

Aanbevolen artikelen

Dit is een gids voor Multidimensional Array in C. Hier bespreken we hoe de multidimensionale array in C kan worden geïnitialiseerd, samen met voorbeelden. U kunt ook de volgende artikelen bekijken voor meer informatie-

  1. Beste C-compilers
  2. 2D-arrays in C #
  3. 2D-reeksen in C
  4. C Opslagklassen
  5. C Matrixvermenigvuldiging programmeren
  6. 3 verschillende soorten arrays in PHP (voorbeelden)
  7. Hoe werkt Array in Unix met Syntax?