Úvod do 3D polí v C

Pole je skupina prvků se stejným (homogenním) datovým typem. Nazývá se také odvozený datový typ. Jak jsme si již všimli, 3D pole exponenciálně zvětšuje prostor a přidala se další poloha k nalezení prvku v poli. V tomto tématu se dozvíme o 3D polích v C.

Například zvažte parkování na úrovni 4 úrovní s mnoha sloty pro parkování kol. Tady, abychom získali perfektní směry slotu zaparkovaného kola, musíme sdělit číslu úrovně číslo řádku a sloupce. Když řeknete matici, řádek 7 a sloupec 4, jakou úroveň vyhledává? Toto 3D pole slouží pouze k ukládání většího množství dat a reprezentaci pozic.

Jak je můžeme definovat a implementovat? Jdeme-li dále, pojďme porozumět těmto pojmům.

Syntax:

V C lze dimenzionální pole deklarovat takto:

Stejně tak můžeme deklarovat 3D pole jako:

Význam výše uvedeného znázornění lze chápat jako:

  1. Paměť přidělená proměnné c je datového typu int.
  2. Celková kapacita, kterou může toto pole pojmout, je 2 * 3 * 4, což se rovná 24 prvkům.
  3. Data jsou reprezentována ve formě 2 polí se 3 řadami a 4 sloupci.
Sloupce
c (0) Pole Řádkyc (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)
Sloupce
c (1) Pole Řádkyc (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 datům uvnitř pole lze přistupovat prostřednictvím výše uvedené reprezentace. V reprezentaci 3D polí představuje první hranatá závorka úroveň pole, které je třeba brát v úvahu, druhá by měla být počet řádků a třetí je pro počet sloupců.

Indexová reprezentace pole pro první prvek vždy začíná nulou a končí velikostí-1. Například, pokud je počet řádků 3, pak reprezentace indexu pro přístup k datům v řádcích bude 0, 1 a 2. Stejná logika platí také pro indexy úrovně pole a sloupců. Pro výše uvedené znázornění získáme data 1. úrovně pole s 2. řádkem 3. sloupcem, můžeme přistupovat pomocí c (0) (1) (2).

Inicializace 3D polí v C

Můžeme inicializovat 3D pole podobné 2-D poli.

Jak bylo uvedeno výše, celkový počet prvků, které lze do pole zapadnout, bude arraysize1 * arraysize2 * arraysize3. Zde je to 2 * 4 * 3, což dává 24.

Vložení prvků:

Podobně jako 2D pole, pro vkládání prvků do 3D pole musíme vložit data do úrovní, řádků a sloupců. Pro tento účel používáme koncept smyček. Ve výše uvedeném procesu inicializace dat v poli jsme hodnoty předdefinovali.

Zde může uživatel prvky dynamicky vkládat podle požadavků. Níže je ukázkový kód pro vkládání prvků.

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

Jak je uvedeno v kódu:

  1. Nejprve deklarujeme proměnnou pole a rozměry pole s počtem úrovní pole, řádků a sloupců.
  2. Poté deklarujeme tři proměnné pro iteraci prvků v poli.
  3. Pak se pro smyčky používají. První smyčka je pro iteraci úrovní, druhá je pro řádky a třetí smyčka pro sloupce.
  4. Funkce Scanf se používá ke čtení dat, když vstupujeme, a pak umístěte hodnotu vloženou do těchto pozic i, j a k.

Ve výše uvedeném příkladu jsme vložili data do matice, která měla 2 úrovně, 4 řádky a 3 sloupce. Následující výstup lze získat následujícím způsobem:

Protože jsme k zobrazení výstupu nepoužili funkci printf, psaný program přečetl pouze hodnoty zadané uživatelem. Po zápisu funkce tisku (pro smyčky) se výstup zobrazí jako:

Aktualizovat prvky:

Aktualizace prvků v poli může být provedena buď specifikováním konkrétního prvku, který má být nahrazen, nebo určením pozice, kde musí být nahrazení provedeno. Pro aktualizaci obvykle vyžadujeme následující podrobnosti.

  1. Prvky pole
  2. Pozice / prvek, kam má být vložen
  3. Hodnota, která má být vložena.

Pro aktualizaci dat v poli prostřednictvím podrobností o prvku musíme nejprve hledat tento prvek v poli, porozumět jeho poloze a poté starý prvek nahradit novým prvkem.

Níže uvádíme dva příklady aktualizace prvku 3D pole.

Nejprve si ukážeme příklad, kde je již známa pozice prvku, který má být aktualizován.

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

Ve výše uvedeném programu je vybrán prvek na 1. úrovni, 1. řádku a 1. sloupci a hodnota dat v této poloze byla aktualizována.

Výstup výše je následující:

Ve druhém příkladu ukážeme, jak lze pozici prvku dynamicky brát jako hodnotu vloženou uživatelem a aktualizovat hodnotu prvku v této konkrétní poloze.

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 následující. Zde jsme použili funkci scanf ke čtení hodnoty dané uživatelem podle jejich volby pro polohu prvku na základě úrovně pole, řádku a sloupce.

Jako cvičení můžete zkusit napsat program v aktualizaci celého sloupce matice uživatelsky zadanými hodnotami?

Nyní, jak víme, v 3D poli deklarujeme velikost pole na samotném začátku. Jsme si vědomi velikosti pole, ale co když uživatel dá náhodný počet řádků a sloupců mimo naši velikost pole?

Co když do pole vložíme více prvků, než je požadováno?

Všimněte si, že jelikož jsme nenapsali žádnou podmínku if / else nebo try / catch bloky, výstup matice se nezmění. Můžeme však napsat kód pomocí výše uvedených podmínek k zobrazení chyb v takových případech.

Jako poslední příklad vás nezajímá, co se stane, pokud mezi nimi přeskočíme některé prvky? Co dělá můj program?

Jak je uvedeno ve výše uvedeném výstupu:

  1. Zmeškali jsme 4 hodnoty ve vstupu, jen dali mezeru a stiskli Enter
  2. Ale dostali jsme tento prostor pro vstup do zbývajících 4 prvků.
  3. Pak jsme určili, že poslední úroveň, poslední řádek a prvek posledního sloupce mají být změněny na 78. A výstup je podle očekávání, že?

Odstranění prvků

Po koncepcích vkládání a aktualizace dat uvnitř 3D pole se nyní podívejme, jak můžeme vymazat celý řádek z pole.

Napsali jsme program v jednoduchém formátu, aby bylo možné snadno pochopit pojem různých operací.

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

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

Dynamicky se pohybovaly hodnoty pole. Následovaly následující kroky:

  1. Požádán o zadání čísla (indexu) řádku, který má být vymazán.
  2. Používá se pro iteraci smyček úrovní polí, řádků a sloupců. Porovnáme, zda se číslo řádku a vstupní číslo uživatele shodují nebo ne.
  3. Pokud se shodují a pokud je číslo řádku menší než velikost pole, tiskneme další řádek. Jinak tiskneme řádek tak, jak je.
  4. Tady, protože jsme neměli žádnou podmínku na úrovni pole, je číslo řádku odstraněno z obou úrovní pole.

Výstup je následující:

Co když dáme číslo řádku mimo hranice pole?

Nenajde řádek k odstranění a ukončení programu vytištěním celého pole.

Jak již bylo známo, můžeme dynamicky deklarovat hodnoty počtu řádků a sloupců a podle toho psát program.

Nevypadá to jednoduše a snadno?

Jako cvičení můžete zkusit odstranit konkrétní prvek pro 3D pole nyní?

Závěr

V této části jsme se naučili základní operace na trojrozměrných polích.

3D pole obsahuje mnoho sad 2D polí. Jak jsme viděli šachovnici jako příklad 2D pole, pokud bychom dali dohromady mnoho šachovnic dohromady, 3D pole nám může pomoci nejprve vybrat šachovnici, se kterou chcete hrát, a poté jít na řádky a sloupce této šachovnice.

Zkuste vyřešit základní operace 3d polí a bavte se učení C.

Doporučené články

Toto je průvodce 3D poli v C. Zde diskutujeme inicializaci 3D pole podobného 2D poli a elementům pole. Další informace naleznete také v následujícím článku -

  1. Pole v R.
  2. Typy dat v MATLABu
  3. Jak vytvořit pole v C #?
  4. Jak jsou definována 3D pole v Javě?
  5. Pole v PHP

Kategorie: