C-2-D-massiivide sissejuhatus

Massiiv on sama (homogeense) andmetüübiga elementide rühm. Seda nimetatakse ka tuletatud andmetüübiks. Kui arvestame primitiivse andmetüübiga ja omistame väärtuse, nagu allpool näidatud,

Ja kui tahame uue väärtuse salvestada muutujasse a, siis uus väärtus asendab vana väärtuse. Kasutades ühte primitiivset muutujat, saame korraga salvestada ainult ühe väärtuse, mitut väärtust ei saa salvestada.

Rohkem kui ühe elemendi (nt õpilaste hinnete, töötajate ID-de ja suure andmemahuga mobiilinumbrite) salvestamiseks ühes muutujas peame looma 100 ainulaadsete muutujate arvu, mis on väga keeruline ülesanne. Seetõttu tutvustati massiivide kontseptsiooni.

C-2-massiivide kontseptsioonid

Võime massiive määratleda

  • Ühemõõtmeline
  • Kahemõõtmeline

Ja nii edasi kuni N-dimensioonini vastavalt nõudele. Kuid siin käsitleme 2-D massiive. Nagu nimest järeldada võib, võivad 2-D-massiivid olla maatrikskujundus, mis on loodud andmebaaside sarnaste andmete struktuuri rakendamiseks ja mida saab salvestada tabelina. See võimaldab hõlpsalt hoida hulgiandmeid, mida saab nõude alusel edastada mis tahes arvule funktsioonidele. Nende massiivide andmetele pääseb ligi rea ja veeru ID kaudu.

Kuidas saaksime neid määratleda ja rakendada? Kus saame neid kasutada? Läheme kaugemale, mõistame neid mõisteid.

C-s saab mõõtmete massiive deklareerida järgmiselt:

Süntaks

Niisiis, samal viisil, võime kuulutada kahemõõtmelise massiivi järgmiselt:

Ülaltoodud kujutise tähendust võib mõista järgmiselt:

  1. Muutujale b eraldatud mälu on andmetüüp int.
  2. Andmed on esitatud 2 rida ja 3 veergu.


Massiivi kuuluvatele andmetele pääseb juurde ülaltoodud kujutise kaudu. Kahemõõtmeliste massiivide esitamisel tähistab esimene nurksulg ridade arvu ja teine ​​veergude arvu. Esimese elemendi massiivi indeksi esitus algab alati nulliga ja lõpeb suurusega-1. Massiivi muutuja (siin b) hoiab alati mäluploki baasaadressi ja seda nimetatakse sisemiseks osuti muutujaks.

Näiteks kui ridade arv on 3, siis on indeksi esitus ridade andmetele juurdepääsuks 0, 1 ja 2. Sama loogika kehtib ka veergude indeksite kohta. Ülaltoodud kujutise jaoks saame 2. rea 3. veeru andmete saamiseks juurdepääsu b abil (1) (2).

Massiivide lähtestamine

C-väärtuste lähtestamiseks on kaks erinevat meetodit. Meetodid erinevad ainult süntaktiliselt.

Allpool on üks neist.

Teine viis initsialiseerimiseks on järgmine:

Üldiselt eelistatakse esimest lähtestamismeetodit, kuna suudame selgelt mõista ja visualiseerida C-3D-massiivide ridu ja veerge.

Allpool on toodud näide elementide piltlikust esitamisest ja nende aadressist massiivi b jaoks.

Massiivi elemendid salvestatakse tavaliselt järjestikustesse mälupesadesse vastavalt elementide andmetüübile.

Elementide sisestamine 2-D massiividesse

Elementide sisestamiseks 2-D-massiividesse peame sisestama andmed nii ridadesse kui ka veergudesse. Seetõttu kasutame selleks silmuste mõistet. Ülaltoodud protsessis massiivi andmete initsialiseerimisel olime väärtused eelnevalt määranud.

Siin saab kasutaja elemente vastavalt nõuetele dünaamiliselt sisestada. Allpool on näidiskood elementide sisestamiseks.

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

Nagu koodis täheldatud:

  1. Esiteks deklareerime massiivi muutuja ja massiivi mõõtmed ridade ja veergude arvuga.
  2. Seejärel kuulutame massiivi elementide iteratsiooniks kaks muutujat.
  3. Seejärel kasutatakse silmuseid. Silmuse väliskülg on ridade iteratsiooni jaoks ja sisemine silmus veergude jaoks.
  4. Funktsiooni Scanf kasutatakse andmete lugemiseks meie sisestatud kujul ja seejärel sisestatud väärtus i ja j nendesse kohtadesse.

Ülaltoodud näites lisasime andmed maatriksisse, millel on 2 rida ja 3 veergu. Järgmise väljundi võib saada järgmiselt:

Kuna me pole väljundi kuvamiseks funktsiooni printf kasutanud, oli kirjutatud programm lugenud ainult kasutaja sisestatud väärtusi. Pärast printimisfunktsiooni kirjutamist (kasutades silmuseid) kuvatakse väljund järgmiselt:

Uuendage elemente kahemõõtmelistes massiivides

Massiivi elementide värskendamist saab teha kas konkreetse elemendi täpsustamisega, mis tuleb asendada, või tuvastades positsiooni, kus asendamine tuleb teha. Uuendamiseks vajame tavaliselt järgmisi üksikasju.

  1. Massiivi elemendid
  2. Asend / element, kuhu see tuleb sisestada
  3. Sisestatav väärtus.

Massiivi andmete värskendamiseks elementide üksikasjade kaudu peame esmalt otsima selle elemendi massiivist, mõistma selle asukohta ja seejärel asendama vana elemendi uuega.

Allpool on toodud kaks näidet 2-D-massiivi elemendi värskendamise kohta.

Esiteks vaatame läbi näite, kus värskendatava elemendi asukoht on juba teada.

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

Ülaltoodud programmis valitakse 1. rea ja 3. veeru element ja selles positsioonis olevate andmete väärtus on uuendatud.

Eespool toodud väljund on järgmine:

Teises näites näeme, kuidas elemendi positsiooni saab dünaamiliselt võtta kasutaja sisestatud väärtusena, ja värskendada elemendi väärtust selles konkreetses asukohas.

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

Siin kasutasime funktsiooni scanf, et lugeda kasutaja antud väärtus vastavalt elemendi asukohale rea ja veeru numbrite alusel.

Väljund on järgmine:

Kas saate proovida programmi kirjutamist maatriksi terve rea värskendamisel kasutaja sisestatud väärtustega?

Nüüd, nagu me teame, deklareerime 2-D-massiivis massiivi suuruse alguses. Oleme teadlikud massiivi suurusest, kuid mis saab siis, kui kasutaja annab juhusliku rea ja veeru numbri väljaspool meie massiivi suurust?

Pange tähele, et kuna me polnud kirjutanud ühtegi tingimust / muud tingimust või proovimise / püüdmise plokki, ei muutu maatriksi väljund. Kuid selliste juhtumite vigade kuvamiseks võime koodi kirjutada ülalnimetatud tingimuste abil.

Elementide kustutamine 2-D massiivides

Pärast massiivi sisestamise ja andmete värskendamise kontseptsioone vaatame nüüd, kuidas saaksime massiivist terve rea kustutada.

Oleme kirjutanud programmi lihtsas vormingus, nii et kahemõõtmeliste massiivide erinevate toimingute kontseptsiooni saaks hõlpsalt mõista.

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

Järgmised sammud on järgmised:

  1. Võtsid massiivi väärtused dünaamiliselt
  2. Palus kasutajal sisestada kustutatava rea ​​number (register).
  3. Silmuse iteratsiooni abil võrreldakse, kas rea number ja kasutaja sisestusnumber on sobivad või mitte.
  4. Kui need sobivad ja rea ​​number on väiksem kui massiivi suurus, prindime järgmise rea. Muud, trükime rea nii, nagu see on.

Väljund on järgmine:

Mis siis, kui ma annan rea numbri väljaspool massiivi piiri?

Kogu massiivi printimisel ei leia see programmi kustutamise ja väljumise rida.

Nagu juba teada, võime isegi ridade ja veergude numbrid dünaamiliselt deklareerida ja vastavalt sellele programmi kirjutada.

Kas see ei tundu lihtne ja kerge õppida?

Kas saate proovida kustutada konkreetne element kahesuunalise massiivi jaoks?

Järeldus

Selles jaotises oleme õppinud kahemõõtmeliste massiivide põhitoiminguid. Need 2-d massiivid on kasulikud reaalajas maatriksi toimingute ja paljude matemaatiliste arvutuste abil.

Massiive saab kasutada isegi kalendrite kuvamiseks, parkimisplatside paigutamiseks ja meil on isegi malemäng.

Paljud muud andmestruktuurid, nagu lingitud loendid, järjekord, graafikud ja puud, peavad seda 2-D-massiivi mõistet kasutama põhinõudena erinevate elementide asukohtade salvestamisel ja neile juurdepääsu saamiseks. Proovige lahendada 2d massiivi põhitoimingud ja nautige C õppimist.

Soovitatavad artiklid

See on juhend 2-D-massiivide jaoks C-s. Siin käsitleme sissejuhatust, massiivide initsialiseerimist, elementide sisestamist, värskendamist ja kustutamist kahemõõtmelistes massiivides. Lisateabe saamiseks võite vaadata ka järgmisi artikleid -

  1. Massiivid R
  2. Massiivi eelised
  3. Massiivid C ++
  4. Massiivid JavaScriptis
  5. C-massiivide näited
  6. Massiivid PHP-s

Kategooria: