Sissejuhatus 3D massiividesse

Massiiv on sama (homogeense) andmetüübiga elementide rühm. Seda nimetatakse ka tuletatud andmetüübiks. Nagu juba märganud, suurendab 3D-massiiv ruumi plahvatuslikult ja elemendi paiknemiseks massiivi lisati lisapositsioon. Selles teemas tutvume 3D-massiividega C-s.

Näiteks kaaluge 4-astmelist hoonet, kus on palju pilusid jalgratta parkimiseks. Nii et pargitud jalgratta täiuslike pesasuundade saamiseks peame siin ütlema taseme numbri koos rea ja veeru numbriga. Kui ütlete lihtsalt massiivi, 7. rida ja 4. veergu, millist taset see otsib? See 3D-massiiv on mõeldud ainult suurema hulga andmete salvestamiseks ja positsioonide kuvamiseks.

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

Süntaks:

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

Nii võime samamoodi kuulutada 3D-massiivi järgmiselt:

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

  1. Muutujale c eraldatud mälu on andmetüüp int.
  2. Selle massiivi koguvõimsus on 2 * 3 * 4, mis võrdub 24 elemendiga.
  3. Andmed on esitatud 2 massiivi kujul, igaüks 3 rida ja 4 veergu.
Veerud
c (0) massiiv Ridadc (0) (0)c (0) (1)c (0) (2)c (0) (3)
c (1) (0)c (1) (1)c (1) (2)c (1) (3)
c (2) (0)c (2) (1)c (2) (2)c (2) (3)
Veerud
c (1) massiiv Ridadc (0) (0)c (0) (1)c (0) (2)c (0) (3)
c (1) (0)c (1) (1)c (1) (2)c (1) (3)
c (2) (0)c (2) (1)c (2) (2)c (2) (3)

Massiivi kuuluvatele andmetele pääseb juurde ülaltoodud kujutise kaudu. 3D-massiivide esitamisel tähistab esimene nurksulg massiivi taset, mida tuleb arvestada, teine ​​oleks ridade arv ja kolmas - veergude arv.

Esimese elemendi massiivi indeksi esitus algab alati nulliga ja lõpeb suurusega-1. Nii näiteks, kui ridade arv on 3, siis on indeksi esitus ridade andmetele juurdepääsuks 0, 1 ja 2. Sama loogika kehtib ka massiivi taseme ja veeru indeksite kohta. Ülaltoodud kujunduse jaoks saame massiivi 1. taseme andmete saamiseks 2. rea 3. veeru abil c (0) (1) (2).

3D-massiivide lähtestamine C-s

Saame lähtestada 3D-massiivi, mis sarnaneb 2-D massiiviga.

Nagu eespool mainitud, oleks massiivi sobivate elementide koguarv massiivi suurus1 * massiivi suurus2 * massiivi suurus3. Siin on see 2 * 4 * 3, mis annab 24.

Elementide sisestamine:

Sarnaselt 2D-massiiviga peame ka 3D-massiivi elementide sisestamiseks sisestama andmed tasemetes, ridades ja veergudes. Seetõttu kasutame selleks silmuste mõistet. Ülaltoodud massiivi andmete initsialiseerimise protsessis olime väärtused eelnevalt määranud.

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

Kood:

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

Nagu koodis täheldatud:

  1. Esiteks deklareerime massiivi muutuja ja massiivi mõõtmed massiivi, ridade ja veergude taseme arvuga.
  2. Seejärel kuulutame massiivi elementide iteratsiooniks kolm muutujat.
  3. Seejärel kasutatakse silmuseid. Esimene silmus on tasandite iteratsiooni jaoks, teine ​​ridade jaoks ja kolmas silmus veergude jaoks.
  4. Funktsiooni Scanf kasutatakse andmete lugemiseks meie sisestatud kujul ja seejärel sisestatud väärtus i, j ja k kohtadesse.

Ülaltoodud näites lisasime andmed maatriksisse, millel on 2 taset, 4 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:

Uuenda elemente:

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 3D-massiivi elemendi värskendamise kohta.

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

Kood

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

Ülaltoodud programmis on valitud 1. taseme, 1. rea ja 1. veeru element ning 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.

Kood:

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

Väljund on järgmine. Siin kasutasime funktsiooni scanf, et lugeda väärtust, mille kasutaja andis vastavalt elemendi asukohale massiivi taseme, rea ja veeru numbrite põhjal.

Kas saate proovida programmi kirjutamist maatriksi kogu veeru värskendamisel kasutaja sisestatud väärtustega?

Nüüd, nagu me teame, deklareerime 3D-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?

Mis siis, kui sisestame massiivi sisse rohkem elemente kui vaja?

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.

Viimase näitena: kas te pole uudishimulik, mis juhtub, kui jätame mõned elemendid vahele? Mida minu programm teeb?

Nagu ülaltoodud väljundis täheldatud:

  1. Sisestusse jäi 4 väärtust, jättes lihtsalt tühiku ja vajutades sisestusklahvi
  2. Kuid meil oli see ulatus, et sisestada ülejäänud 4 elementi.
  3. Seejärel täpsustasime viimast taset, viimast rida ja viimast veeru elementi, mis tuleb muuta 78-ks. Ja väljund on ootuspärane, kas pole?

Elementide kustutamine

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

Oleme kirjutanud programmi lihtsas vormis, et erinevate toimingute kontseptsioon oleks hõlpsasti arusaadav.

Kood:

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

)
j ++;
)

muud
(
jaoks (k = 0; k <3; k ++)
(
printf (“\ t% d”, c (i) (j) (k));
)
)
printf (“\ n”);
)
printf (“\ n”);
)
)

Võtsid massiivi väärtused dünaamiliselt sisse. Järgnevad sammud on järgmised:

  1. Palus kasutajal sisestada kustutatava rea ​​number (register).
  2. Kasutades massiivi tasemete, ridade ja veergude silmuste kordamiseks. Võrdleme, kas rea number ja kasutaja sisestusnumber on sobivad või mitte.
  3. Kui need sobivad ja rea ​​number on väiksem kui massiivi suurus, prindime järgmise rea. Muud, trükime rea nii, nagu see on.
  4. Kuna massiivi tasemel meil tingimusi polnud, kustutatakse täpsustatud rea number mõlemalt massiivi tasemelt.

Väljund on järgmine:

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

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

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

Kas see ei tundu lihtne ja kerge õppida?

Kas võite proovida kustutada 3D-massiivi konkreetse elemendi nüüd?

Järeldus

Selles jaotises oleme õppinud kolmemõõtmeliste massiivide põhitoiminguid.

3D-massiiv sisaldab palju 2-D-massiivide komplekte. Nagu oleme näinud malelauda 2D-massiivi näitena, kui oleksime palju malelaudu kokku pannud, võib 3D-massiiv aidata meil kõigepealt valida malelaua, millega soovite mängida, ja siis minna selle malelaua ridade ja veergude juurde.

Proovige lahendada 3d massiivide põhitoimingud ja nautige C õppimist.

Soovitatavad artiklid

See on juhend 3D massiivide kohta C-s. Siin käsitleme 3D-massiivi lähtestamist, mis on sarnane 2D-massiivile ja massiivi elementidele. Lisateabe saamiseks võite vaadata ka järgmist artiklit -

  1. Massiivid R
  2. Andmetüübid MATLAB-is
  3. Kuidas luua massiive C # -s?
  4. Kuidas 3D-massiivid Java-s määratletakse?
  5. Massiivid PHP-s

Kategooria: