Inleiding tot 2D-reeksen in C

Een array is een groep elementen met hetzelfde (homogene) gegevenstype. Het wordt ook een afgeleid gegevenstype genoemd. Als we een primitief gegevenstype overwegen en een waarde toewijzen zoals hieronder wordt weergegeven,

En nu, als we een nieuwe waarde in variabele a willen opslaan, vervangt de nieuwe waarde de oude waarde. Met behulp van één primitieve variabele kunnen we slechts één waarde tegelijk opslaan, we kunnen niet meerdere waarden opslaan.

Voor het opslaan van meer dan één element in een variabele, zoals studentcijfers, werknemers-ID's, mobiele nummers met een grote hoeveelheid gegevens, moeten we honderden unieke variabelen maken, wat een zeer complexe taak is. Daarom is het concept van Arrays geïntroduceerd.

Concepten in 2D-arrays in C

We kunnen arrays definiëren in

  • Single-Dimensional
  • Double-Dimensional

En zo verder tot N-Dimensionaal op basis van de vereiste. Maar hier gaan we om met 2D-arrays. Zoals de naam al doet vermoeden, kunnen 2D-arrays een matrixrepresentatie van gegevens zijn, die zijn gemaakt om een ​​relationele database-achtige datastructuur te implementeren en kunnen worden opgeslagen in tabelvorm. Het biedt de mogelijkheid om bulkgegevens te bewaren die kunnen worden doorgegeven aan een willekeurig aantal functies op basis van de vereiste. De gegevens in deze arrays zijn toegankelijk via de rij- en kolom-id's.

Hoe kunnen we ze definiëren en implementeren? Waar kunnen we ze gebruiken? Laten we die concepten verder gaan.

In C kunnen dimensionele arrays als volgt worden verklaard:

Syntaxis

Op dezelfde manier kunnen we de 2D-array dus verklaren als:

De betekenis van de bovenstaande weergave kan worden opgevat als:

  1. Het geheugen dat is toegewezen aan variabele b is van het gegevenstype int.
  2. De gegevens worden weergegeven in de vorm van 2 rijen en 3 kolommen.


De gegevens in de array zijn toegankelijk via de bovenstaande weergave. In 2D-arrays representeert de eerste vierkante haak het aantal rijen, en de tweede is voor het aantal kolommen. De indexweergave van de array voor het eerste element begint altijd met nul en eindigt met maat-1. Matrixvariabele (hier b) bevat altijd het basisadres van het geheugenblok en wordt een interne pointervariabele genoemd.

Als het aantal rijen bijvoorbeeld 3 is, is de indexrepresentatie voor toegang tot de gegevens in rijen 0, 1 en 2. Dezelfde logica is ook van toepassing op de kolomindexen. Voor de bovenstaande weergave hebben we toegang tot b (1) (2) om de gegevens van de 2e rij 3e kolom te krijgen.

Arrays initialiseren

We hebben twee verschillende methoden om de waarden in C te initialiseren. De methoden verschillen alleen syntactisch.

Hieronder is een van hen.

Een andere manier om te initialiseren is als volgt:

Over het algemeen heeft de eerste initialisatiemethode de voorkeur omdat we de rijen en kolommen van 2D-arrays in C duidelijk kunnen begrijpen en visualiseren.

Hieronder ziet u het voorbeeld voor de grafische weergave van elementen en hun adres voor array b.

De elementen van een array worden meestal opgeslagen in opeenvolgende geheugenlocaties op basis van het gegevenstype van de elementen.

Elementen invoegen in 2D-arrays

Voor het invoegen van elementen in 2D-arrays moeten we de gegevens in zowel rijen als kolommen invoegen. Daarom gebruiken we het concept van lussen. In het bovenstaande proces voor het initialiseren van de gegevens in een array hadden we de waarden vooraf gedefinieerd.

Hier kunnen elementen dynamisch worden ingevoegd door de gebruiker, volgens de vereisten. Hieronder staat een voorbeeldcode voor het invoegen van de 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));
)
)
)

Zoals waargenomen in de code:

  1. Eerst declareren we de matrixvariabele en de afmetingen van de matrix met het aantal rijen en kolommen.
  2. We declareren vervolgens twee variabelen voor het herhalen van de elementen in de array.
  3. Vervolgens worden lussen gebruikt. De buitenste lus is voor de rijen iteratie en de binnenste lus is voor de kolommen.
  4. De Scanf-functie wordt gebruikt om de gegevens te lezen die we invoeren en plaatst vervolgens de ingevoegde waarde op die posities van i en j.

In het bovenstaande voorbeeld hebben we de gegevens ingevoegd in een matrix met 2 rijen en 3 kolommen. De output van het volgende kan als volgt worden verkregen:

Omdat we de printf-functie niet hebben gebruikt om de uitvoer weer te geven, had het geschreven programma alleen de door de gebruiker ingevoerde waarden gelezen. Na het schrijven van de afdrukfunctie (met behulp van lussen) zou de uitvoer worden weergegeven als:

Werk elementen bij in 2D-arrays

Het bijwerken van elementen in een array kan worden gedaan door een specifiek element te specificeren dat moet worden vervangen of door een positie te identificeren waar de vervanging moet worden uitgevoerd. Voor het bijwerken hebben we meestal de volgende gegevens nodig.

  1. Elementen van een array
  2. Positie / element, waar het moet worden ingevoegd
  3. De in te voegen waarde.

Voor het bijwerken van de gegevens in een array via elementdetails, moeten we eerst naar dat element in de array zoeken, de positie ervan begrijpen en vervolgens het oude element vervangen door het nieuwe element.

Hier hebben we hieronder twee voorbeelden gegeven van het bijwerken van het element van een 2D-array.

Laten we eerst een voorbeeld doornemen waarvan de positie van het bij te werken element al bekend is.

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

In het bovenstaande programma zijn het element op de eerste rij en de derde kolom geselecteerd en is de waarde van de gegevens op die positie bijgewerkt.

De output voor bovenstaande is als volgt:

In het tweede voorbeeld laten we zien hoe de positie van het element dynamisch kan worden ingenomen als een door de gebruiker ingevoerde waarde en werken we de waarde van het element op die specifieke positie bij.

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

Hier hebben we de scanf-functie gebruikt om de door de gebruiker opgegeven waarde te lezen volgens hun keuze voor de positie van een element op basis van rij- en kolomnummers.

De output is als volgt:

Kun je als oefening proberen een programma te schrijven om de hele rij van de matrix bij te werken met door de gebruiker ingevoerde waarden?

Zoals we weten, geven we in de 2D-array de grootte van de array aan het begin zelf aan. We zijn ons bewust van de grootte van de array, maar wat als de gebruiker een willekeurig rij- en kolomnummer buiten onze arraygrootte opgeeft?

Merk op dat, aangezien we geen if / else-voorwaarde of try / catch-blokken hadden geschreven, de uitvoer van de matrix niet verandert. We kunnen de code echter schrijven met behulp van de bovengenoemde voorwaarden om fouten voor dergelijke gevallen weer te geven.

Elementen verwijderen in 2D-arrays

Na de concepten van invoegen en bijwerken van de gegevens in de array, laten we nu kijken hoe we een hele rij uit de array kunnen verwijderen.

We hebben een programma geschreven in een eenvoudig formaat, zodat het concept van verschillende bewerkingen in een 2D-array gemakkelijk kan worden begrepen.

#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 gevolgde stappen zijn:

  1. De waarden van een array dynamisch overgenomen
  2. Heeft de gebruiker gevraagd het nummer (index) van de rij in te voeren die moet worden verwijderd.
  3. Met behulp van lusherhaling vergelijken we of het rijnummer en het gebruikersinvoernummer overeenkomen of niet.
  4. Als ze overeenkomen en als het rijnummer kleiner is dan de grootte van een array, drukken we de volgende rij af. Anders drukken we de rij af zoals deze is.

De output is als volgt:

Wat als ik het rijnummer buiten de matrixgrens geef?

Het zal de rij niet vinden om te verwijderen en het programma te verlaten door de hele array af te drukken.

Zoals reeds bekend, kunnen we zelfs de waarden voor de rij- en kolomnummers dynamisch declareren en het programma dienovereenkomstig schrijven.

Ziet dit er niet eenvoudig en gemakkelijk uit om te leren?

Kun je als oefening proberen een bepaald element voor de 2D-array nu te verwijderen?

Conclusie

In dit gedeelte hebben we de basisbewerkingen op tweedimensionale arrays geleerd. Deze 2D-arrays zijn handig in realtime met de matrixbewerkingen en veel wiskundige berekeningen.

Arrays kunnen zelfs worden gebruikt voor het weergeven van kalenders, plaatsingen op de parkeerplaats en we kunnen zelfs een schaakspel spelen.

Veel andere gegevensstructuren zoals gekoppelde lijsten, wachtrijen, grafieken en bomen moeten dit concept van 2D-arrays gebruiken als basisvereiste voor het opslaan en openen van de locaties van verschillende elementen. Probeer de basisbewerkingen van de 2d-arrays op te lossen en leer plezier C.

Aanbevolen artikelen

Dit is een gids voor 2D-arrays in C. Hier bespreken we de introductie, initialiseren van arrays, invoegen, bijwerken, verwijderen van elementen in een 2D-arrays. U kunt ook de volgende artikelen bekijken voor meer informatie -

  1. Arrays in R
  2. Voordelen van Array
  3. Arrays in C ++
  4. Arrays in JavaScript
  5. Voorbeelden van arrays in C #
  6. Arrays in PHP