Úvod do 2D polí v C

Pole je skupina prvkov s rovnakým (homogénnym) typom údajov. Nazýva sa tiež odvodený typ údajov. Ak vezmeme do úvahy primitívny typ údajov a priradíme hodnotu, ako je uvedené nižšie,

A teraz, ak chceme uložiť novú hodnotu do premennej a, nová hodnota nahradí starú hodnotu. Použitím jednej primitívnej premennej dokážeme uložiť súčasne iba jednu hodnotu, nemôžeme uložiť viac hodnôt.

Na ukladanie viac ako jedného prvku do jednej premennej, ako sú známky študentov, identifikačné čísla zamestnancov, mobilné čísla s veľkým množstvom údajov, musíme vytvoriť 100 jedinečných premenných, čo je veľmi zložitá úloha. Preto bol predstavený koncept Arrays.

Koncepty v dvojrozmerných poliach v C

Polia môžeme definovať v

  • Single-Dimensional
  • Double-Dimensional

A tak ďalej až do N-rozmeru podľa požiadavky. Ale tu sa budeme zaoberať dvojrozmernými poliami. Ako už názov napovedá, 2-D polia môžu byť maticovým znázornením údajov, ktoré sú vytvorené na implementáciu vzhľadu podobnej relačnej databázy a môžu byť uložené v tabuľkových formách. Poskytuje jednoduché uchovávanie hromadných údajov, ktoré možno podľa požiadavky preniesť na ľubovoľný počet funkcií. K údajom v týchto poliach je možné pristupovať prostredníctvom riadkov a stĺpcov.

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

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

syntax

Rovnakým spôsobom môžeme deklarovať 2-D pole ako:

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

  1. Pamäť pridelená premennej b je typu údajov int.
  2. Údaje sú reprezentované vo forme 2 riadkov a 3 stĺpcov.


K údajom vo vnútri poľa je možné pristupovať prostredníctvom vyššie uvedeného znázornenia. V znázornení dvojrozmerných polí predstavuje prvá hranatá zátvorka počet riadkov a druhá predstavuje počet stĺpcov. Indexové zobrazenie poľa pre prvý prvok vždy začína nulou a končí veľkosťou-1. Premenná poľa (tu b) vždy drží základnú adresu pamäťového bloku a nazýva sa interná premenná ukazovateľa.

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 stĺpcov. Pre vyššie uvedené zobrazenie, na získanie údajov z 2. riadku, 3. stĺpca, môžeme pristupovať pomocou b (1) (2).

Inicializácia polí

Pri inicializácii hodnôt v C máme dve rôzne metódy. Metódy sa líšia iba syntakticky.

Nižšie je jeden z nich.

Ďalší spôsob inicializácie je nasledujúci:

Všeobecne je výhodný prvý spôsob inicializácie, pretože dokážeme jasne porozumieť a vizualizovať riadky a stĺpce dvojrozmerných polí v C.

Nižšie je uvedený príklad ilustrovaného znázornenia prvkov a ich adresy pre pole b.

Prvky poľa sa zvyčajne ukladajú do po sebe idúcich pamäťových miest na základe dátového typu prvkov.

Vkladanie prvkov do polí 2-D

Na vkladanie prvkov do dvojrozmerných polí je potrebné vložiť údaje do riadkov aj 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.

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

Ako je uvedené v kóde:

  1. Najprv deklarujeme premennú poľa a rozmery poľa počtom riadkov a stĺpcov.
  2. Potom deklarujeme dve premenné na opakovanie prvkov v poli.
  3. Potom sa používajú slučky. Vonkajšia slučka je pre iteráciu riadkov a vnútorná slučka je 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 a j.

V uvedenom príklade sme údaje vložili do matice, ktorá má 2 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:

Aktualizujte prvky v dvojrozmerných poliach

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 musí 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 najprv 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 dvojrozmerného poľa.

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

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

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

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.

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

Tu sme použili funkciu scanf na čítanie hodnoty zadanej používateľom podľa ich výberu pre polohu prvku na základe čísel riadkov a stĺpcov.

Výstup je nasledujúci:

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

Teraz, ako vieme, v 2-D poli deklarujeme veľkosť poľa na samom 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?

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.

Odstraňovanie prvkov v dvojrozmerných poliach

Po koncepciách vkladania a aktualizácie údajov vo vnútri poľa sa teraz 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 v dvojrozmernom 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");
)
)

Nasledujú tieto kroky:

  1. Dynamicky využíval hodnoty poľa
  2. Požiadal používateľa, aby vložil číslo (index) riadku, ktorý sa má vymazať.
  3. Pri iterácii slučky porovnávame, či sa číslo riadka a vstupné číslo používateľa zhodujú alebo nie.
  4. 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.

Výstup je nasledujúci:

Čo keď uvediem čí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 pre čísla riadkov a stĺpcov a podľa toho napísať program.

Vyzerá to jednoducho a ľahko?

Ako cvičenie, môžete skúsiť vymazať konkrétny prvok pre 2-d pole teraz?

záver

V tejto časti sme sa naučili základné operácie na dvojrozmerných poliach. Tieto 2-d polia sú užitočné v reálnom čase s maticovými operáciami a mnohými matematickými výpočtami.

Polia sa dajú použiť dokonca aj na zobrazenie kalendárov, umiestnenia parkoviska a dokonca môžeme mať šachovú hru.

Mnoho ďalších dátových štruktúr, ako sú prepojené zoznamy, fronty, grafy, stromy, musia používať túto koncepciu dvojrozmerných polí ako základnú požiadavku pri ukladaní a prístupe k miestam rôznych prvkov. Skúste vyriešiť základné operácie 2. polia a bavte sa učením C.

Odporúčané články

Toto je sprievodca 2-D maticami v C. Tu diskutujeme o úvodu, inicializácii polí, vkladaní, aktualizácii, mazaní prvkov v 2-d poliach. Ďalšie informácie nájdete aj v nasledujúcich článkoch -

  1. Polia v R.
  2. Výhody poľa
  3. Polia v C ++
  4. Polia v JavaScripte
  5. Príklady polí v C #
  6. Polia v PHP

Kategórie: