Úvod do 3D polí v C

Pole je skupina prvkov s rovnakým (homogénnym) typom údajov. Nazýva sa tiež odvodený typ údajov. Ako už bolo uvedené, 3D pole exponenciálne zväčšuje priestor a pridáva sa ďalšia poloha na lokalizáciu prvku v poli. V tejto téme sa dozvieme o 3D poliach v C.

Napríklad, zvážte 4-úrovňovú budovu s mnohými otvormi pre parkovanie bicyklov. Preto, aby sme dostali perfektné smery slotov bicykla, ktoré je zaparkované, musíme oznámiť číslu úrovne číslom riadka a stĺpca. Keď poviete pole, riadok 7 a stĺpec 4, ktorú úroveň vyhľadáva? Toto 3D pole je určené iba na ukladanie väčšieho množstva údajov a reprezentáciu pozícií.

Ako ich môžeme definovať a implementovať? Poďme ďalej, poďme pochopiť tieto pojmy.

syntaxe:

V časti C je možné deklarovať nasledujúce polia:

Rovnakým spôsobom môžeme deklarovať trojrozmerné pole ako:

Význam vyššie uvedeného znázornenia možno chápať ako:

  1. Pamäť pridelená premennej c je typu údajov int.
  2. Celková kapacita tohto poľa je 2 * 3 * 4, čo sa rovná 24 prvkom.
  3. Dáta sú reprezentované vo forme 2 polí s 3 riadkami a 4 stĺpcami.
stĺpce
c (0) Pole riadkyc (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)
stĺpce
c (1) Pole riadkyc (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)

K údajom vo vnútri poľa je možné pristupovať prostredníctvom vyššie uvedeného znázornenia. V reprezentácii 3D polí predstavuje prvá hranatá zátvorka úroveň poľa, ktoré sa musí brať do úvahy, druhou by mal byť počet riadkov a tretí stĺpec predstavuje počet stĺpcov.

Indexové zobrazenie poľa pre prvý prvok vždy začína nulou a končí veľkosťou-1. Napríklad, ak je počet riadkov 3, potom reprezentácia indexu pre prístup k údajom v riadkoch bude 0, 1 a 2. Rovnaká logika platí aj pre indexy úrovne polí a stĺpcov. Pre vyššie uvedené zobrazenie, na získanie údajov 1. úrovne poľa s 2. riadkom 3. stĺpcom, môžeme pristupovať pomocou c (0) (1) (2).

Inicializácia 3D polí v C

Môžeme inicializovať 3D pole podobné 2-D poli.

Ako je uvedené vyššie, celkový počet prvkov, ktoré sa dajú zmestiť do poľa, by bol arraysize1 * arraysize2 * arraysize3. Tu je to 2 * 4 * 3, čo dáva 24.

Vkladacie prvky:

Podobne ako v 2D poli, na vkladanie prvkov do trojrozmerného poľa je potrebné vkladať údaje do úrovní, riadkov a stĺpcov. Preto na tento účel používame pojem slučky. Vo vyššie uvedenom procese inicializácie údajov v poli sme hodnoty vopred definovali.

Tu môže užívateľ dynamicky vkladať prvky podľa požiadaviek. Nižšie je uvedený príklad kódu na vkladanie prvkov.

kód:

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

Ako je uvedené v kóde:

  1. Najprv deklarujeme premennú poľa a rozmery poľa počtom úrovní poľa, riadkov a stĺpcov.
  2. Potom deklarujeme tri premenné na opakovanie prvkov v poli.
  3. Potom sa používajú slučky. Prvá slučka je pre iteráciu úrovní, druhá pre riadky a tretia slučka pre stĺpce.
  4. Funkcia Scanf sa používa na čítanie údajov pri vstupe a potom vloženie hodnoty vloženej do týchto pozícií i, j a k.

V uvedenom príklade sme údaje vložili do matice, ktorá má 2 úrovne, 4 riadky a 3 stĺpce. Výstup z nasledujúceho možno získať takto:

Pretože sme na zobrazenie výstupu nepoužili funkciu printf, napísaný program čítal iba hodnoty zadané používateľom. Po napísaní tlačovej funkcie (použitie pre slučky) sa výstup zobrazí ako:

Aktualizovať prvky:

Aktualizácia prvkov v poli sa môže vykonať buď špecifikovaním konkrétneho prvku, ktorý sa má nahradiť, alebo identifikáciou polohy, v ktorej sa má nahradiť. Na aktualizáciu zvyčajne požadujeme nasledujúce podrobnosti.

  1. Prvky poľa
  2. Poloha / prvok, do ktorého sa má vložiť
  3. Hodnota, ktorá sa má vložiť.

Na aktualizáciu údajov v poli prostredníctvom podrobností o prvku musíme najskôr vyhľadať tento prvok v poli, porozumieť jeho polohe a potom nahradiť starý prvok novým prvkom.

Tu uvádzame dva príklady aktualizácie prvku 3D poľa.

Po prvé, poďme sa pozrieť na príklad, kde je už známa pozícia prvku, ktorý sa má aktualizovať.

kód

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

Vo vyššie uvedenom programe sa vyberie prvok na 1. úrovni, 1. riadku a 1. stĺpci a hodnota údajov v tejto polohe sa aktualizuje.

Výstup vyššie je nasledujúci:

V druhom príklade ukážeme, ako možno pozíciu prvku dynamicky považovať za hodnotu vloženú používateľom a aktualizovať hodnotu prvku v tejto konkrétnej polohe.

kód:

#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ýstup je nasledujúci. Tu sme použili funkciu scanf na čítanie hodnoty zadanej používateľom podľa ich výberu pre polohu prvku na základe počtu polí, riadkov a stĺpcov.

Ako cvičenie, môžete skúsiť napísať program na aktualizáciu celého stĺpca matice užívateľsky zadanými hodnotami?

Teraz, ako vieme, v 3D poli deklarujeme veľkosť poľa na samotnom začiatku. Sme si vedomí veľkosti poľa, ale čo keď používateľ zadá náhodný počet riadkov a stĺpcov mimo veľkosti poľa?

Čo ak do poľa vložíme viac prvkov, ako je potrebné?

Všimnite si, že keďže sme nenapísali žiadne podmienky if / else alebo try / catch bloky, výstup matice sa nezmení. Môžeme však napísať kód pomocou vyššie uvedených podmienok na zobrazenie chýb v takýchto prípadoch.

Ako posledný príklad nie ste zvedaví, čo sa stane, ak medzi nimi preskočíme niektoré prvky? Čo robí môj program?

Ako je uvedené vo vyššie uvedenom výstupe:

  1. Zmeškali sme 4 hodnoty na vstupe, len tak, že sme dali medzeru a stlačili Enter
  2. Mali sme však tento priestor na vstup do 4 zvyšných prvkov.
  3. Potom sme zadali poslednú úroveň, posledný riadok a prvok posledného stĺpca, ktorý sa má zmeniť na 78. A výstup je podľa očakávania, nie?

Odstraňovanie prvkov

Po koncepciách vkladania a aktualizácie údajov do 3D poľa sa pozrime, ako môžeme z poľa odstrániť celý riadok.

Napísali sme program v jednoduchom formáte, aby bolo možné ľahko pochopiť pojem rôzne operácie.

kód:

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

inak
(
k (k = 0, k <3, k ++)
(
printf („\ t% d“, c (i) (j) (k));
)
)
printf ( "\ n");
)
printf ( "\ n");
)
)

Dynamicky využívali hodnoty poľa. Nasledujú tieto kroky:

  1. Požiadaný užívateľ o vloženie čísla (indexu) riadku, ktorý má byť vymazaný.
  2. Používa sa na iteráciu slučiek úrovní polí, riadkov a stĺpcov. Porovnávame, či sa číslo riadka a vstupné číslo používateľa zhodujú alebo nie.
  3. Ak sa zhodujú a ak je číslo riadku menšie ako veľkosť poľa, tlačíme nasledujúci riadok. Inak tlačíme riadok tak, ako je.
  4. Pretože na úrovni poľa sme nemali žiadnu podmienku, zadaný počet riadkov sa z oboch úrovní polí odstráni.

Výstup je nasledujúci:

Čo keď zadáme číslo riadku mimo hranice poľa?

Nenájde riadok na odstránenie a ukončenie programu vytlačením celého poľa.

Ako už bolo známe, môžeme dynamicky deklarovať hodnoty počtu riadkov a stĺpcov a podľa toho napísať program.

Vyzerá to jednoducho a ľahko?

Ako cvičenie, môžete skúsiť odstrániť konkrétny prvok pre 3D pole teraz?

záver

V tejto časti sme sa naučili základné operácie na trojrozmerných poliach.

3D pole obsahuje mnoho sád dvojrozmerných polí. Ako sme videli šachovnicu ako príklad 2D poľa, ak by sme spolu umiestnili veľa šachovníc, 3D pole nám môže pomôcť vybrať si šachovnicu, s ktorou chcete hrať, a potom vyhľadať riadky a stĺpce tejto šachovnice.

Skúste vyriešiť základné operácie 3d polí a bavte sa učením C.

Odporúčané články

Toto je príručka pre 3D polia v C. Tu diskutujeme o inicializácii 3D poľa podobného 2D poli a prvkom poľa. Viac informácií nájdete aj v nasledujúcom článku -

  1. Polia v R.
  2. Typy údajov v MATLABe
  3. Ako vytvoriť pole v C #?
  4. Ako sú definované 3D polia v Jave?
  5. Polia v PHP

Kategórie: