Introduktion till 2-D Arrays i C

En array är en grupp av element med samma (homogena) datatyp. Det kallas också en Derived datatyp. Om vi ​​överväger en primitiv datatyp och tilldelar ett värde som visas nedan,

Och nu, om vi vill lagra ett nytt värde i variabel a, ersätter det nya värdet det gamla värdet. Med en primitiv variabel kan vi bara lagra ett värde i taget, vi kan inte lagra flera värden.

För att lagra mer än ett element i en enda variabel som studentmärken, medarbetar-ID, mobilnummer med en stor mängd data, måste vi skapa 100-tal unika variabler, vilket är en mycket komplex uppgift. Så därför introducerades konceptet Arrays.

Begrepp i 2-D-matriser i C.

Vi kan definiera matriser i

  • Single-Dimensional
  • Dubbel Dimensional

Och så vidare upp till N-Dimensional baserat på kravet. Men här kommer vi att ta itu med 2-D Arrays. Som namnet antyder kan 2-D Arrays vara en matrisrepresentation av data, som skapas för att implementera en relationell databas lookalike datastruktur och kan lagras i tabellform. Det ger enkel att hålla bulkdata som kan skickas till valfritt antal funktioner baserat på kravet. Data i dessa matriser kan nås via rad- och kolumn-id: erna.

Hur kan vi definiera och implementera dem? Var kan vi använda dem? Gå vidare, låt oss förstå dessa koncept.

I C kan dimensionella matriser deklareras enligt följande:

Syntax

Så på samma sätt kan vi förklara 2-D-arrayen som:

Betydelsen av ovanstående representation kan förstås som:

  1. Minne tilldelat variabel b är av datatyp int.
  2. Uppgifterna representeras i form av 2 rader och 3 kolumner.


Data inuti matrisen kan nås genom ovanstående representation. I två-D-matrisrepresentation representerar den första fyrkantiga konsolen antalet rader, och den andra är för antalet kolumner. Indexrepresentationen av arrayen för det första elementet börjar alltid med noll och slutar med storlek-1. Arrayvariabel (här b) har alltid basadressen för minnesblocket och kallas en intern pekvariabel.

Så, till exempel, om antalet rader är 3, kommer indexrepresentationen för åtkomst till data i rader att vara 0, 1 och 2. Samma logik gäller också för kolumnindex. För ovanstående representation, för att få data från den andra raden tredje kolumnen, kan vi få tillgång till b (1) (2).

Initiera Arrays

Vi har två olika metoder för att initialisera värdena i C. Metoderna skiljer sig bara syntaktiskt.

Nedan är en av dem.

Ett annat sätt att initialisera är som följer:

I allmänhet föredrages den första metoden för initialisering eftersom vi tydligt kan förstå och visualisera raderna och kolumnerna i 2-D Arrays i C.

Nedan visas exemplet för bildbilden av element och deras adress för matris b.

Elementen i en matris lagras vanligtvis i på varandra följande minnesplatser baserat på datatypen för elementen.

Infoga element i 2-D-matriser

För att infoga element i 2-D-matriser måste vi infoga data i både rader och kolumner. Så för detta använder vi begreppet slingor. I ovanstående process för initiering av data i en matris hade vi fördefinierat värdena.

Här kan element infogas dynamiskt av användaren enligt kraven. Nedan följer ett exempelkod för att sätta in elementen.

#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 observerats i koden:

  1. Först förklarar vi matrisvariabeln och dimensionerna på matrisen med antalet rader och kolumner.
  2. Vi förklarar sedan två variabler för att iterera över elementen i matrisen.
  3. Sedan används för öglor. Utsidan för slingan är för rader-iterationen och den inre slingan är för kolumnerna.
  4. Scanf-funktionen används för att läsa data som vi matar in och placera sedan värdet som är infogat på dessa positioner i och j.

I exemplet ovan satte vi in ​​data i en matris med 2 rader och 3 kolumner. Utgången från följande kan erhållas enligt nedan:

Eftersom vi inte har använt printf-funktionen för att visa utgången, hade det skrivna programmet bara läst användarens inmatade värden. Efter att du har skrivit utskriftsfunktionen (använder för slingor), visas utdata som:

Uppdatera element i 2-D-matriser

Uppdateringen av element i en matris kan göras genom att antingen specificera ett visst element som ska ersättas eller genom att identifiera en position där ersättningen måste göras. För uppdatering kräver vi i allmänhet följande detaljer.

  1. Delar av en matris
  2. Position / element, där det måste sättas in
  3. Värdet som ska infogas.

För att uppdatera data i en matris genom elementdetaljer måste vi först söka efter det elementet i arrayen, förstå dets position och sedan ersätta det gamla elementet med det nya elementet.

Här har vi gett nedan två exempel på uppdatering av elementet i en 2-D-grupp.

För det första, låt oss gå igenom ett exempel där positionen för elementet som ska uppdateras redan är känt.

#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 ovanstående program väljs elementet i den första raden och den tredje kolumnen och värdet på data i den positionen har uppdaterats.

Output för ovan är enligt följande:

I det andra exemplet kommer vi att visa hur elementets position dynamiskt kan tas som ett användarinmatat värde och uppdatera värdet på elementet vid den specifika positionen.

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

Här använde vi scanf-funktionen för att läsa värdet som användaren gav enligt deras val för positionen för ett element baserat på rad- och kolumnnummer.

Utgången är som följer:

Kan du prova att skriva ett program genom att uppdatera hela raden i matrisen med användarinmatade värden?

Nu, som vi vet, förklarar vi i 2-D-array storleken på matrisen i själva början. Vi är medvetna om storleken på matrisen, men vad händer om användaren ger ett slumpmässigt rad- och kolumnnummer utanför vår arraystorlek?

Lägg märke till att eftersom vi inte hade skrivit några om / annars villkor eller försök / fångstblock förändras matrisen inte. Vi kan dock skriva koden med ovanstående villkor för att visa fel för sådana fall.

Ta bort element i 2-D-matriser

Efter begreppen infogning och uppdatering av data inuti arrayen, låt oss nu se hur vi kan ta bort en hel rad från arrayen.

Vi har skrivit ett program i ett enkelt format så att konceptet med olika operationer i en 2-d array lätt kan förstå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");
)
)

Stegen som följs är:

  1. Tog värdena på en matris dynamiskt
  2. Be användaren att mata in numret (indexet) på raden som måste raderas.
  3. Med hjälp av för loop-iteration jämför vi om radnumret och användarinmatningsnumret matchar eller inte.
  4. Om de stämmer överens och om radnumret är mindre än storleken på en matris skriver vi ut nästa rad. Annars skriver vi ut raden som den är.

Utgången är som följer:

Tänk om jag ger radnumret utanför matrisgränsen?

Den hittar inte raden för att radera och avsluta programmet genom att skriva ut hela matrisen.

Som redan känt kan vi till och med deklarera värdena för rad- och kolumnnumren dynamiskt och skriva programmet i enlighet därmed.

Ser det inte enkelt ut och enkelt att lära sig?

Kan du som en övning försöka ta bort ett visst element för 2-d-arrayen nu?

Slutsats

I det här avsnittet har vi lärt oss de grundläggande operationerna för tvådimensionella matriser. Dessa 2-d-matriser är användbara i realtid med matrisoperationerna och många matematiska beräkningar.

Matriser kan till och med användas för att visa kalendrar, placeringar av parkeringsplatsen, och vi kan till och med ha ett schackspel.

Många andra datastrukturer som Länkade listor, Kö, Grafer, Träd måste använda detta koncept av 2-D-arrayer som det grundläggande kravet för att lagra och få åtkomst till platserna för olika element. Försök lösa de grundläggande operationerna i 2d-arrayerna och ha roligt lärande C.

Rekommenderade artiklar

Detta är en guide till 2-D-matriser i C. Här diskuterar vi introduktionen, initiera matriser, infoga, uppdatera, radera element i en 2-D-matriser. Du kan också titta på följande artiklar för att lära dig mer -

  1. Matriser i R
  2. Fördelar med array
  3. Matriser i C ++
  4. Matriser i JavaScript
  5. Exempel på matriser i C #
  6. Arrays i PHP

Kategori: