Úvod do 2D polí v C

Pole je skupina prvků se stejným (homogenním) datovým typem. Nazývá se také odvozený datový typ. Pokud vezmeme v úvahu primitivní datový typ a přiřadíme hodnotu, jak je uvedeno níže,

A nyní, pokud chceme uložit novou hodnotu do proměnné a, nová hodnota nahradí původní hodnotu. Pomocí jedné primitivní proměnné můžeme uložit pouze jednu hodnotu najednou, nemůžeme uložit více hodnot.

Pro uložení více než jednoho prvku do jedné proměnné, jako jsou studentské značky, ID zaměstnanců, mobilní čísla s velkým množstvím dat, musíme vytvořit 100 jedinečných proměnných, což je velmi složitý úkol. Proto byl představen koncept Arrays.

Koncepty ve dvojrozměrných polích v C

Můžeme definovat pole v

  • Jednorozměrné
  • Dvourozměrné

A tak dále až do N-dimenzionálu na základě požadavku. Ale tady se budeme zabývat 2-D poli. Jak už název napovídá, 2-D pole mohou být maticovou reprezentací dat, která jsou vytvořena k implementaci relační datové struktury relační databáze a mohou být uložena v tabulkových formách. Poskytuje snadné uchovávání hromadných dat, které lze na základě požadavku předat libovolnému počtu funkcí. K datům v těchto polích lze přistupovat prostřednictvím ID řádků a sloupců.

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

V C lze dimenzionální pole deklarovat takto:

Syntax

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

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

  1. Paměť přidělená proměnné b je typu dat int.
  2. Data jsou reprezentována ve formě 2 řádků a 3 sloupců.


K datům uvnitř pole lze přistupovat prostřednictvím výše uvedené reprezentace. Ve znázornění dvojrozměrných polí představuje první hranatá závorka počet řádků a druhá pro počet sloupců. Indexová reprezentace pole pro první prvek vždy začíná nulou a končí velikostí-1. Proměnná pole (zde b) vždy drží základní adresu paměťového bloku a nazývá se interní proměnná ukazatele.

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 sloupců. Pro výše uvedené znázornění, abychom získali data druhého řádku, třetí sloupec, můžeme přistupovat pomocí b (1) (2).

Inicializace polí

Při inicializaci hodnot v C. máme dvě různé metody. Metody se liší pouze syntakticky.

Níže je jeden z nich.

Další způsob inicializace je následující:

Obecně je upřednostňována první metoda inicializace, protože můžeme jasně porozumět a vizualizovat řádky a sloupce 2D polí v C.

Níže je uveden příklad znázornění prvků a jejich adresa pro pole b.

Prvky pole jsou obvykle uloženy v po sobě jdoucích paměťových místech na základě datového typu prvků.

Vkládání prvků do 2D polí

Pro vkládání prvků do 2D polí potřebujeme vložit data do řádků i sloupců. Pro tento účel používáme koncept smyček. Ve výše uvedeném procesu inicializace dat v poli jsme předdefinovali hodnoty.

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

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

Jak je uvedeno v kódu:

  1. Nejprve deklarujeme proměnnou pole a rozměry pole počtem řádků a sloupců.
  2. Poté deklarujeme dvě proměnné pro iteraci prvků v poli.
  3. Pak se pro smyčky používají. Vnější smyčka je pro iteraci řádků a vnitřní smyčka je 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 a j.

Ve výše uvedeném příkladu jsme vložili data do matice, která měla 2 řá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:

Aktualizujte prvky ve dvojrozměrných polích

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 matici pomocí podrobností o prvku musíme nejprve hledat tento prvek v poli, porozumět jeho poloze a poté nahradit starý prvek novým prvkem.

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

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

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

Ve výše uvedeném programu je vybrán prvek v 1. řádku a ve 3. 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.

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

Zde jsme použili funkci scanf ke čtení hodnoty dané uživatelem podle jejich volby pro polohu prvku na základě čísel řádků a sloupců.

Výstup je následující:

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

Nyní, jak víme, v 2-D 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?

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.

Odstranění prvků ve 2D polích

Po pojmech vkládání a aktualizace dat uvnitř 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 koncept různých operací ve 2-d poli.

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

Následují se tyto kroky:

  1. Dynamicky převzal hodnoty pole
  2. Požádal uživatele o zadání čísla (indexu) řádku, který má být vymazán.
  3. Pomocí iterace smyčky porovnáváme, zda se číslo řádku a vstupní číslo uživatele shodují nebo ne.
  4. Pokud se shodují a pokud je číslo řádku menší než velikost pole, tiskneme další řádek. Jinak tiskneme řádek tak, jak je.

Výstup je následující:

Co když dám čí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 pro čísla řá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 2-d pole nyní?

Závěr

V této části jsme se naučili základní operace na dvojrozměrných polích. Tato 2-d pole jsou užitečná v reálném čase s maticovými operacemi a mnoha matematickými výpočty.

Pole lze použít i při zobrazování kalendářů, umístění parkoviště a dokonce můžeme mít šachovou hru.

Mnoho dalších datových struktur, jako jsou propojené seznamy, fronty, grafy, stromy, musí používat tento koncept 2D polí jako základní požadavek při ukládání a přístupu k umístění různých prvků. Zkuste vyřešit základní operace 2d polí a bavte se učení C.

Doporučené články

Toto je průvodce 2-D poli v C. Zde diskutujeme Úvod, Inicializace polí, Vkládání, Aktualizace, Mazání Prvků do 2-D polí. Další informace naleznete také v následujících článcích -

  1. Pole v R.
  2. Výhody pole
  3. Pole v C ++
  4. Pole v JavaScriptu
  5. Příklady polí v C #
  6. Pole v PHP

Kategorie: