Introduktion til 2-D Arrays i C

En matrix er en gruppe af elementer med den samme (homogene) datatype. Det kaldes også en afledt datatype. Hvis vi overvejer en primitiv datatype og tildele en værdi som vist nedenfor,

Og nu, hvis vi vil gemme en ny værdi i variabel a, erstatter den nye værdi den gamle værdi. Ved hjælp af en primitiv variabel kan vi kun gemme en værdi ad gangen, vi kan ikke gemme flere værdier.

For at gemme mere end et element i en enkelt variabel som studentmærker, medarbejder-id'er, mobilnumre med en stor mængde data, er vi nødt til at oprette 100'ere af unikke variabler, hvilket er en meget kompleks opgave. Så derfor blev konceptet Arrays introduceret.

Begreber i 2-D Arrays i C.

Vi kan definere arrays i

  • Single-Dimensional
  • Dobbelt-Dimensional

Og så videre op til N-Dimensional baseret på kravet. Men her skal vi beskæftige os med 2-D Arrays. Som navnet antyder, kan 2-D Arrays være en matrixrepræsentation af data, der oprettes for at implementere en relationel databas lookalike datastruktur og kan gemmes i tabelformer. Det giver lethed med at opbevare bulkdataene, der kan overføres til ethvert antal funktioner baseret på kravet. Dataene i disse arrays er tilgængelige gennem række- og kolonne-id'erne.

Hvordan kan vi definere og implementere dem? Hvor kan vi bruge dem? Gå videre, lad os forstå disse begreber.

I C kan dimensionelle arrays deklareres som følger:

Syntaks

Så på samme måde kan vi erklære 2-D array som:

Betydningen af ​​ovenstående repræsentation kan forstås som:

  1. Hukommelsen tildelt variabel b er af datatype int.
  2. Dataene er repræsenteret i form af 2 rækker og 3 kolonner.


Dataene inde i arrayet kan fås adgang til gennem ovenstående repræsentation. I repræsentation af to-arrays repræsenterer den første firkantede beslag antallet af rækker, og den anden er for antallet af kolonner. Indeksrepræsentationen af ​​matrixen for det første element starter altid med nul og slutter med størrelse-1. Array-variabel (her b) holder altid baseadressen til hukommelsesblokken og kaldes en intern markørvariabel.

Så hvis antallet af rækker for eksempel er 3, så er indeksrepræsentationen for adgang til dataene i rækkerne 0, 1 og 2. Den samme logik gælder også for kolonneindekserne. For at få ovenstående repræsentation kan vi få adgang til b (1) (2) for at få dataene fra den 2. række 3. søjle.

Initialisering af arrays

Vi har to forskellige metoder til at initialisere værdierne i C. Metoderne afviger kun syntaktisk.

Nedenfor er en af ​​dem.

En anden måde at initialisere er som følger:

Generelt foretrækkes den første metode til initialisering, da vi klart kan forstå og visualisere rækkerne og kolonnerne i 2-D Arrays i C.

Nedenfor er eksemplet til billedlig gengivelse af elementer og deres adresse til matrix b.

Elementerne i en matrix gemmes normalt i på hinanden følgende hukommelsesplaceringer baseret på datatypen for elementerne.

Indsættelse af elementer i 2-D arrays

For at indsætte elementer i 2-D arrays skal vi indsætte dataene i både rækker og kolonner. Så for dette bruger vi begrebet løkker. I ovenstående proces til initialisering af dataene i en matrix havde vi foruddefineret værdierne.

Her kan elementer indsættes dynamisk af brugeren i henhold til kravene. Nedenfor er et eksempel på kode til indsættelse af elementerne.

#include
int main()
(
int b(2)(3);
int i, j, num;
printf("Enter elements into 2-D array: ");
for(i=0;i<2;i++)
(
for(j=0;j<3;j++)
(
scanf("%d", &b(i)(j));
)
)
)

Som observeret i koden:

  1. Først erklærer vi arrayvariablen og dimensionerne på arrayet med antallet af rækker og kolonner.
  2. Vi erklærer derefter to variabler til at itereere over elementerne i matrixen.
  3. Derefter bruges for løkker. Den udvendige for sløjfe er for rader-iterationen, og den indvendige sløjfe er til kolonnerne.
  4. Scanf-funktion bruges til at læse dataene, som vi indtaster, og derefter placere værdien indsat på disse positioner i og j.

I ovenstående eksempel indsatte vi dataene i en matrix med 2 rækker og 3 kolonner. Outputet fra følgende kan fås som nedenfor:

Da vi ikke har brugt printf-funktionen til at vise output, havde det skrevne program kun læst de indlæste værdier. Efter skrivning af udskrivningsfunktionen (ved hjælp af loops) vises output som:

Opdater elementer i 2-D arrays

Opdateringen af ​​elementer i en matrix kan udføres ved enten at specificere et bestemt element, der skal udskiftes, eller ved at identificere en position, hvor udskiftningen skal udføres. Til opdatering kræver vi generelt følgende oplysninger.

  1. Elementer af en matrix
  2. Position / element, hvor det skal indsættes
  3. Den værdi, der skal indsættes.

For at opdatere dataene i en matrix gennem elementdetaljer, skal vi først søge efter det element i arrayet, forstå dets placering og derefter erstatte det gamle element med det nye element.

Her har vi givet to eksempler på opdatering af elementet i en 2-D array nedenfor.

For det første, lad os gennemgå et eksempel, hvor placeringen af ​​det element, der skal opdateres, allerede er kendt.

#include
int main()
(
int b(2)(3);
int i, j, num;
printf("Enter elements into 2-D array: ");
for(i=0;i<2;i++)
(
for(j=0;j<3;j++)
(
scanf("%d", &b(i)(j));
)
)
b(0)(2)=10;
for(i=0;i<2;i++)
(
for(j=0;j<3;j++)
(
printf("\t%d", b(i)(j));
)
printf("\n");
)
return 0;
)

I ovenstående program vælges elementet i 1. række og 3. kolonne, og værdien af ​​dataene i denne position er blevet opdateret.

Output for ovenfor er som følger:

I det andet eksempel skal vi vise, hvordan elementets position dynamisk kan tages som en bruger-indlæst værdi og opdatere værdien af ​​elementet på den bestemte position.

#include
int main()
(
int b(2)(3);
int i, j, num;
printf("Enter elements into 2-D array: ");
for(i=0;i<2;i++)
(
for(j=0;j<3;j++)
(
scanf("%d", &b(i)(j));
)
)
printf("Enter the value of row and coulmn number :");
scanf("%d %d", &i, &j);
printf("Enter the number you want to update with: ");
scanf("%d", &num);
b(i)(j)=num;
for(i=0;i<2;i++)
(
for(j=0;j<3;j++)
(
printf("\t%d", b(i)(j));
)
printf("\n");
)
return 0;
)

Her brugte vi scanf-funktionen til at læse den værdi, som brugeren har givet i henhold til deres valg for placeringen af ​​et element baseret på række- og kolonnumre.

Outputet er som følger:

Kan du som en øvelse prøve at skrive et program ved at opdatere hele række af matrixen med brugerinput-værdier?

Som vi ved, angiver vi i 2-D array størrelsen på array i selve begyndelsen. Vi er opmærksomme på størrelsen på array, men hvad nu hvis brugeren giver et tilfældigt række- og kolonnenummer uden for vores array-størrelse?

Bemærk, at da vi ikke havde skrevet nogen hvis / andet betingelse eller prøve / fangst blokke, ændres matrixens output ikke. Vi kan dog skrive koden ved hjælp af de ovennævnte betingelser for at vise fejl i sådanne tilfælde.

Sletning af elementer i 2-D arrays

Efter begreberne indsættelse og opdatering af dataene inde i arrayet, lad os nu se, hvordan vi kan slette en hel række fra matrixen.

Vi har skrevet et program i et simpelt format, så begrebet forskellige operationer i en 2-d array let kan forstås.

#include
int main()
(
int b(2)(3), i, j, num, x;
printf("Enter elements into 2-D array: ");
for(i=0;i<2;i++)
(
for(j=0;j<3;j++)
(
scanf("%d", &b(i)(j));
)
)
printf("Enter the value of row number :");
scanf("%d", &x);
for(i=0;i<2;i++)
(
if(i==x)
(
for(j=0;j<3;j++)
(
if((i+1)<2)
(
printf("\t%d", b(i+1)(j));
)
)
i++;)
else
(
for(j=0;j<3;j++)
(
printf("\t%d", b(i)(j));
)
)
printf("\n");
)
)

De følgende trin er:

  1. Tog værdierne for en matrix dynamisk
  2. Spurgte brugeren om at indtaste nummeret (indekset) på den række, der skal slettes.
  3. Ved brug af loop-iteration sammenligner vi, om rækkenummeret og brugerinputnummeret matcher eller ej.
  4. Hvis de stemmer overens, og hvis rækkenummeret er mindre end størrelsen på en matrix, udskriver vi den næste række. Ellers udskriver vi rækken, som den er.

Outputet er som følger:

Hvad hvis jeg giver rækkenummeret uden for matrixgrænsen?

Det vil ikke finde rækken, der skal slettes og afslutte programmet ved at udskrive hele matrixen.

Som allerede kendt kan vi endda erklære værdierne for række- og kolonnumre dynamisk og skrive programmet i overensstemmelse hermed.

Ser dette ikke enkelt ud og let at lære?

Kan du som en øvelse prøve at slette et bestemt element til 2-d array nu?

Konklusion

I dette afsnit har vi lært de grundlæggende operationer på 2-dimensionelle arrays. Disse 2-d arrays er nyttige i realtid med matrixoperationer og mange matematiske beregninger.

Arrays kan endda bruges til visning af kalendere, placering af parkeringspladsen, og vi kan endda have et skakspil.

Mange andre datastrukturer som lænkede lister, kø, grafer, træer skal bruge dette koncept af 2-D arrays som det grundlæggende krav til lagring og adgang til placeringerne af forskellige elementer. Prøv at løse de grundlæggende operationer i 2d arrays og have det sjovt at lære C.

Anbefalede artikler

Dette er en guide til 2-D arrays i C. Her diskuterer vi introduktion, initialisering af arrays, indsættelse, opdatering, sletning af elementer i en 2-D arrays. Du kan også se på de følgende artikler for at lære mere -

  1. Arrays i R
  2. Fordele ved Array
  3. Arrays i C ++
  4. Arrays i JavaScript
  5. Eksempler på matriser i C #
  6. Arrays i PHP

Kategori: