Johdanto 3D-ryhmiin C

Taulukko on ryhmä elementtejä, joilla on sama (homogeeninen) tietotyyppi. Sitä kutsutaan myös johdettuksi tietotyypiksi. Kuten jo huomasin, 3D-taulukko lisää tilaa eksponentiaalisesti, ja ylimääräinen sijainti lisätään elementin paikantamiseksi ryhmässä. Tässä aiheesta aiomme oppia 3D-ryhmistä C.

Harkitse esimerkiksi 4-tason rakennusta, jossa on monia lähtöpaikkoja pyöräparkkimiseen. Joten täällä pysäköityn pyörän täydellisten aukko-ohjeiden saamiseksi meidän on kerrottava tasonumero rivin ja sarakkeen numerolla. Kun kerrot vain taulukon, rivit 7 ja sarakkeet 4, mitä tasoa se etsii? Tämä 3D-taulukko on tarkoitettu vain lisää tietomäärien tallentamiseen ja paikkojen esittämiseen.

Kuinka voimme määritellä ja toteuttaa ne? Ymmärretään nuo käsitteet.

Syntaksi:

C-luokassa mittasuhteet voidaan ilmoittaa seuraavasti:

Joten samalla tavalla voimme julistaa kolmiulotteisen taulukon seuraavasti:

Yllä olevan esityksen merkitys voidaan ymmärtää seuraavasti:

  1. Muuttujalle c allokoitu muisti on tyyppiä int.
  2. Kokonaiskapasiteetti, jota tämä taulukko voi pitää, on 2 * 3 * 4, joka on yhtä suuri kuin 24 elementtiä.
  3. Tiedot esitetään kahden taulukon muodossa, joissa on 3 riviä ja 4 saraketta.
pylväät
c (0) taulukko riviäc (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)
pylväät
c (1) taulukko riviäc (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)

Matriisin sisällä olevaan tietoon pääsee yllä olevan esityksen kautta. 3D-taulukkojen esityksessä ensimmäinen hakasulke edustaa sen taulukon tasoa, joka on otettava huomioon, toinen olisi rivien lukumäärä ja kolmas sarakkeiden lukumäärä.

Ensimmäisen elementin taulukon indeksiesitys alkaa aina nollalla ja päättyy koosta-1. Joten esimerkiksi jos rivien lukumäärä on 3, niin indeksiesitys rivitietoihin pääsemiseksi on 0, 1 ja 2. Sama logiikka pätee taulukotason ja sarakkeen hakemistoihin. Edellä olevaa esitystä varten saadaan taulukon 1. tason tiedot 2. rivin 3. sarakkeella, käyttämällä c (0) (1) (2).

3D-ryhmien alustaminen C: ssä

Voimme alustaa 3D-taulukon, joka on samanlainen kuin 2-D-taulukko.

Kuten edellä mainittiin, matriisiin mahtuvien elementtien kokonaismäärä olisi matriisin koko1 * matriisin koko2 * matriisin koko3. Tässä se on 2 * 4 * 3, mikä antaa 24.

Elementtien lisääminen:

Samoin kuin 2D-taulukko, elementtien lisäämiseksi kolmiulotteiseen taulukkoon meidän on lisättävä tiedot tasoihin, riveihin ja sarakkeisiin. Joten tässä käytämme silmukoiden käsitettä. Edellä mainitussa taulukon datan alustusprosessissa olimme määrittäneet arvot ennalta.

Täällä käyttäjä voi asettaa elementit dynaamisesti vaatimusten mukaisesti. Alla on esimerkki koodista elementtien lisäämiseksi.

Koodi:

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

Kuten koodissa havaitaan:

  1. Ensin julistetaan taulukon muuttuja ja taulukon mitat taulukon tasojen, rivien ja sarakkeiden lukumäärällä.
  2. Julistamme sitten kolme muuttujaa iteratoimiseksi taulukon elementtien yli.
  3. Sitten silmukoita varten käytetään. Ensimmäinen silmukka on tasojen iteraatiolle, toinen riveille ja kolmas silmukka sarakkeille.
  4. Scanf-toimintoa käytetään tietojen lukemiseen syöttäessämme ja aseta sitten lisätty arvo i, j ja k kohtaan.

Yllä olevassa esimerkissä lisäsimme tiedot matriisiin, jossa on 2 tasoa, 4 riviä ja 3 saraketta. Seuraavien tulokset voidaan saada seuraavasti:

Koska emme ole käyttäneet printf-toimintoa tulosteen näyttämiseen, kirjoitettu ohjelma oli lukenut vain käyttäjän syöttämät arvot. Tulostustoiminnon kirjoittamisen jälkeen (silmukoiden kanssa) tulosteet näytetään seuraavasti:

Päivitä elementit:

Järjestelmän elementtien päivitys voidaan tehdä joko määrittelemällä tietty korvattava elementti tai yksilöimällä paikka, jossa korvaaminen on tehtävä. Päivittämistä varten me yleensä vaadimme seuraavia tietoja.

  1. Matriisin elementit
  2. Paikka / elementti, johon se on asetettava
  3. Lisättävä arvo.

Päivittääksesi taulukon tiedot elementtien yksityiskohtaisesti, ensin täytyy etsiä kyseinen elementti taulukosta, ymmärtää sen sijainti ja korvata sitten vanha elementti uudella.

Tässä on annettu alla kaksi esimerkkiä 3D-taulukon elementin päivittämisestä.

Ensinnäkin, käydään läpi esimerkki, jossa päivitettävän elementin sijainti on jo tiedossa.

Koodi

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

Yllä olevassa ohjelmassa 1. tason, 1. rivin ja 1. sarakkeen elementti valitaan ja datan arvo kyseisessä paikassa on päivitetty.

Edellä olevan tuotos on seuraava:

Toisessa esimerkissä aiomme osoittaa, kuinka elementin sijainti voidaan ottaa dynaamisesti käyttäjän syöttämäksi arvoksi, ja päivittää elementin arvo kyseisessä paikassa.

Koodi:

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

Tulos on seuraava. Täällä käyimme skannaustoimintoa käyttäjän luoman arvon lukemiseen käyttäjän valitseman elementin sijainnin perusteella taulukkotason, rivin ja sarakkeen numeroiden perusteella.

Voitko yrittää kirjoittaa ohjelman päivittääksesi matriisin koko sarakkeen käyttäjän syöttämillä arvoilla?

Nyt, kuten tiedämme, 3D-taulukossa ilmoitamme taulukon koon alussa. Tiedämme taulukon koon, mutta entä jos käyttäjä antaa satunnaisen rivin ja sarakkeen numeron taulukkomokoomme ulkopuolella?

Entä jos syötetään enemmän elementtejä kuin tarvitaan taulukon sisällä?

Huomaa, että koska emme ollut kirjoittaneet yhtään ehtoa / ehtoa tai yrittä / saalislohkoa, matriisin lähtö ei muutu. Voimme kuitenkin kirjoittaa koodin yllä mainittujen ehtojen avulla virheiden näyttämiseksi tällaisissa tapauksissa.

Viimeisenä esimerkkinä, etkö ole utelias, mitä tapahtuu, jos ohitamme joitain elementtejä välillä? Mitä ohjelma tekee?

Kuten yllä olevassa tuotossa havaittiin:

  1. Meillä jäi 4 arvoa tuloon vain antamalla välilyönti ja painamalla Enter
  2. Mutta meillä oli mahdollisuus päästä 4 jäljellä olevaan elementtiin.
  3. Sitten määrittelimme viimeisen tason, viimeisen rivin ja viimeisen sarakeelementin, joka vaihdetaan arvoon 78. Ja tulos on odotetulla tavalla, eikö niin?

Elementtien poistaminen

3D-taulukon sisällä olevien tietojen lisäämisen ja päivittämisen käsitteiden jälkeen katsotaan nyt, kuinka voimme poistaa kokonaisen rivin taulukosta.

Olemme kirjoittaneet ohjelman yksinkertaisessa muodossa, jotta eri toimintojen käsite voidaan ymmärtää helposti.

Koodi:

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

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

Otti taulukon arvot dynaamisesti. Seuraavat vaiheet ovat:

  1. Pyydettiin käyttäjää syöttämään poistettavan rivin numero (hakemisto).
  2. Käyttämällä taulukkotason, rivien ja sarakkeiden silmukkatoistoa. Vertaamme sitä, vastaavatko rivinumerot ja käyttäjän syöttämät numerot vai eivät.
  3. Jos ne vastaavat ja jos rivinumero on pienempi kuin taulukon koko, tulostamme seuraavan rivin. Muuta, tulostamme rivin sellaisena kuin se on.
  4. Koska meillä ei ollut ehtoja taulukon tasolla, määritetty rivinumero poistetaan molemmista taulukotasoista.

Tuotos on seuraava:

Entä jos annamme rivinumeron taulukon rajan ulkopuolelle?

Se ei löydä riviä poistaa tai poistua ohjelmasta tulostamalla koko taulukko.

Kuten jo tiedettiin, voimme jopa ilmoittaa rivien ja sarakkeiden arvot dynaamisesti ja kirjoittaa ohjelman vastaavasti.

Eikö tämä näytä yksinkertaiselta ja helppo oppia?

Voitko yrittää poistaa tietyn elementin kolmiulotteisesta taulukosta nyt?

johtopäätös

Tässä osassa olemme oppineet 3-ulotteisten taulukkojen perustoiminnot.

3D-taulukko sisältää monia 2-D-taulukkojoukkoja. Kuten olemme nähneet shakkilaudan esimerkkinä 2D-ryhmästä, jos olisimme sijoittaneet useita shakkilautoja yhteen, 3D-taulukko voi auttaa meitä ensin valitsemaan shakkilaudan, jonka kanssa haluat pelata, ja siirtyä sitten kyseisen shakkilaudan riveihin ja sarakkeisiin.

Kokeile ratkaista kolmiulotteisten taulukkojen perustoiminnot ja pidä hauskaa C.

Suositellut artikkelit

Tämä on opas 3D-matriiseihin C. Tässä keskustellaan 2D-taulukkoa ja array-elementtejä muistuttavan 3D-taulukon alustamisesta. Voit myös tarkastella seuraavaa artikkelia saadaksesi lisätietoja -

  1. Ryhmät R
  2. Tietotyypit MATLABissa
  3. Kuinka luoda taulukot C #: een?
  4. Kuinka 3D-taulukot määriteltiin Java-sovelluksessa?
  5. Taulukot PHP: ssä