Úvod do viacrozmerného poľa v C

Tento článok sa zameriava na viacrozmerné pole vc, ktoré sa používa hlavne v počítačovej a výskumnej analýze. Zvyčajne sa pole lineárne zameriava na informácie, o ktorých sa hovorí, že sú jednorozmerné. Jednorozmerné ukladá údaje iba jednotlivé informácie, ako napríklad regno študentov. V niektorých situáciách je potrebné ukladať údaje vo formáte tabuľky, ktorý obsahuje riadky a stĺpce, alebo aby sa spracovali komplexné údaje. Na jeho vizualizáciu potrebujeme maticový formát, ktorý sme nazvali dvojrozmernými poliami, kde usporiadanie vyžaduje pixely obrázka, grafiky. Dáta sa ukladajú do tabuľky. Manipulácia s poľami sa vykonáva preusporiadaním prvku pomocou funkcií, ako je zmena tvaru, stlačenie.

Ako deklarovať viacrozmerné pole v C?

syntaxe:

Všeobecné vyhlásenie o viacrozmernom poli sa uvádza ako:

type name ( size) (size)……. N;

  • Tu je názov typu údajov - Označuje typ prvkov (celé číslo, float).
  • Názov poľa - označuje názov priradený k rozmerovému poli.
  • Veľkosť riadku - počet prvkov riadka napr. row-size = 8, potom pole má 8 riadkov.
  • Veľkosť stĺpca - počet prvkov stĺpca.

Ako inicializovať viacrozmerné pole v C?

Veľkosť viacrozmerných polí sa predpovedá vynásobením veľkosti rôznych rozmerov. Hodnoty ukladajú dvoma spôsobmi, ako napríklad riadok-rad a stĺpec-major. Alokácia pamäte potvrdzuje vlastnosti dĺžky aj poradia.

V C má viacrozmerné pole tri typy:

  1. Dvojrozmerné pole
  2. Trojrozmerné pole
  3. Štvorrozmerné pole

1. Dvojrozmerné pole

Dvojrozmerné pole je štruktúrované ako matice a implementované pomocou riadkov a stĺpcov, známych tiež ako pole polí. Priradenie pamäte sa vykonáva buď v riadkoch main a column-major. A predvolený formát je Row-Major. Keď sa vezme 2-D pole, každý prvok sa považuje za samotný 1-D pole alebo je známy ako súbor 1-D poľa. Pole dvoch d používa dve pre slučky alebo vnorené slučky, kde sa vonkajšie slučky vykonávajú od 0 do počiatočného indexu.

syntaxe:

type array name ( no. of rows) ( no. of Columns);

Príklad:

int td (4)(3);

tu 4 je č. z riadkov a 3 je číslo. stĺpcov.

Inicializácia dvojrozmerného poľa

Inicializácia v 2-D poli sa vykonáva niekoľkými spôsobmi, je tu zobrazená.

int m (3)(2) = ((10, 3) (4, 2) (6, 4) (5, 4) (3, 4));
int di (2)(4) = (10, 5, 8, 12, 45, 13, 11, 61);

Tu sme spomenuli nie. riadkov a stĺpcov v kolónke Je povinné priradiť druhý index, aby kompilátor pochopil koniec a začiatok riadku. Nasledujúca tabuľka ukazuje pridelenie pamäte 2-D poľa.

Počet prvkov sa určuje manipuláciou s počtom riadkov a stĺpcov a vynásobením č. riadkov a stĺpcov. napríklad č. prvkov obsahuje pole B (-2… 4, -3, 6). Vypočítava sa podľa dolnej a hornej hranice.

No. of rows= UB-LB +1
=4-(-2) +1 = 4+2+1= 7
No. of columns = UB-LB +1
= 6-(-3) + 1= 11
No. of elements = Rows * columns = 7 * 11 =77 elements

uskutočnenie

Uskutočňuje sa pomocou riadkových a stĺpcových implementácií

Row-Major:
Vzorec pre manipuláciu s adresou je uvedený ako:
= B +W ( n(I-1) +(J-1))
Kde b- je základná adresa a počet stĺpcov pre W bajtov.
Stĺpec Major:
= B +W ( r(j-1) +(i-1))
kde r - je číslo č. riadkov.

Príklady dvojrozmerného poľa

Príklady dvojrozmerného poľa sú:

Príklad č. 1

Každý prvok poľa A (-10, 10, 20 … 35) potrebuje 1 bajt pamäte. A pole sa zmestí do stĺpca major na adresu 400, Nájdite umiestnenie A (0, 30).

Riešenie

BA =400, W=1
R = no. of rows -> 10-(-10) +1 = 21
I= -10; J= 20
Address A (0, 30) = 400 + 1((0-(-10) +21(30-20))) =400 +(10+21*10)
=400 +(10+210) = 620

Známa operácia vykonávaná v dvojrozmernom poli je Algebra matíc s m * n Maticou B. Matematická koncepcia matice je implementovaná rovnako ako v programovaní.

Nižšie uvedený príklad uloží prvok do maticového formátu a vytlačí ho rovnako.

kód:

#include
int main ()
(
int a(3)(4), i, j;
for(i = 0; i < 3; i++)
(
for(j = 0; j < 4; j++)
(
printf("Enter arr(%d)(%d): ", i, j);
scanf("%d", &a(i)(j));
)
)
printf("\nEntered 2-D array is: \n\n");
for(i = 0; i < 3; i++)
(
for(j = 0; j < 4; j++)
(
printf("%3d ", a(i)(j) );
)
printf("\n");
)
return 0;
)

Výkon:

Príklad č. 2

Program C vykonávajúci súčet dvoch matíc.

kód:

#include
int main()
(
int mat(20)(20);
int i, j, r, c;
int s;
printf("Enter number of Rows :");
scanf("%d", &r);
printf("Enter number of Cols :");
scanf("%d", &c);
printf("\nEnter matrix elements :\n");
for(i=0;i< r;i++)
( for(j=0;j< c;j++)
(
printf("Enter the number of inputs (%d, %d) : ", i+1, j+1);
scanf("%d", &mat(i)(j));
)
)
printf("\n");
for(i=0;i< r;i++)
(
s=0;
for(j=0;j< c;j++)
(
printf("%d\t", mat(i)(j));
s+=mat(i)(j);
)
printf("\tSUM : %d", s);
printf("\n");
)
)

Vyššie uvedený program počíta súčet dvoch matíc A (20, 20) B (20, 20) za predpokladu, že majú dve rovnaké matice. Pre cyklus to vyžaduje dve vstupné matice a slučky, aby akceptovali maticu.

Výkon:

Príklad č. 3

Transpozícia matice

Výmena riadkov a stĺpcov do novej matrice, ktorá je známa ako transpozícia matice.

Príklad:

Potom transponujte,

Maticová transpozícia pomocou programu C.

kód:

#include
int main()
(
int T(5)(5), i, j, a, b;
printf(" No.of rows?");
scanf("%d", &a);
printf("No.of columns?");
scanf("%d", &b);
printf("\nEnter the elements in matrix:\n");
for(i=0;i for(j=0;j scanf("%d", &T(i)(j));
printf("\nTranspose matrix is given as:\n");
for(i=0;i (
for(j=0;j printf("%d ", T(j)(i));
printf("\n");
)
return 0;
)
#include
int main()
(
int T(5)(5), i, j, a, b;
printf(" No.of rows?");
scanf("%d", &a);
printf("No.of columns?");
scanf("%d", &b);
printf("\nEnter the elements in matrix:\n");
for(i=0;i for(j=0;j scanf("%d", &T(i)(j));
printf("\nTranspose matrix is given as:\n");
for(i=0;i (
for(j=0;j printf("%d ", T(j)(i));
printf("\n");
)
return 0;
)
#include
int main()
(
int T(5)(5), i, j, a, b;
printf(" No.of rows?");
scanf("%d", &a);
printf("No.of columns?");
scanf("%d", &b);
printf("\nEnter the elements in matrix:\n");
for(i=0;i for(j=0;j scanf("%d", &T(i)(j));
printf("\nTranspose matrix is given as:\n");
for(i=0;i (
for(j=0;j printf("%d ", T(j)(i));
printf("\n");
)
return 0;
)
#include
int main()
(
int T(5)(5), i, j, a, b;
printf(" No.of rows?");
scanf("%d", &a);
printf("No.of columns?");
scanf("%d", &b);
printf("\nEnter the elements in matrix:\n");
for(i=0;i for(j=0;j scanf("%d", &T(i)(j));
printf("\nTranspose matrix is given as:\n");
for(i=0;i (
for(j=0;j printf("%d ", T(j)(i));
printf("\n");
)
return 0;
)
#include
int main()
(
int T(5)(5), i, j, a, b;
printf(" No.of rows?");
scanf("%d", &a);
printf("No.of columns?");
scanf("%d", &b);
printf("\nEnter the elements in matrix:\n");
for(i=0;i for(j=0;j scanf("%d", &T(i)(j));
printf("\nTranspose matrix is given as:\n");
for(i=0;i (
for(j=0;j printf("%d ", T(j)(i));
printf("\n");
)
return 0;
)

Vo vyššie uvedenom programe Na čítanie matice sme použili dve pre slučky a pre tlač jej transpozície sa na zobrazenie výstupu používa vnorená slučka. Tu sme použili maticu 3 * 3.

Výkon:

2. Trojrozmerné pole

Je to nazývané pole prvkov poľa alebo pole matíc. Je to celkom bláznivé, ale akonáhle sa naučíte postupovať podľa logiky, je ľahšie implementovať. a toto trojrozmerné pole vyžaduje viac ako tri dimenzie a vyžaduje si ukladanie hromadnej pamäte.

Dá sa deklarovať ako:

data_type array_name (table name) ( no. of row) ( no. of column) int L(m)(n) (p);

int L (3) (4) (2); Pole L tu môže obsahovať 24 prvkov. A to všetko sa môže inicializovať počas procesu kompilácie, ale keď sa neinicializujú, vložia sa do odpadu.

Inicializácia sa môže vykonať rovnakým spôsobom ako dvojrozmerné pole. Tu je ukážka,

int L (2)(3)(4) = (((2, 2, 1, 3), (1, 6, 5, 11), (22, 11, 13, 5)), ((13, 5, 77, 8), (6, 8, 2, 4), (3, 2, 7, 8)));

Príklady trojrozmerného poľa

Tu je niekoľko príkladov trojrozmerného poľa, ktoré sú uvedené nižšie:

Príklad č. 1

Nižšie je uvedený jednoduchý príklad v programovaní C ilustrujúci trojrozmerné pole. Robí sa to pre slučku zvažovaním 3 pre slučky pre 3D prvky.

kód:

#include
void main()
(
printf("three dimensional array!\n\n");
int i, j, k, s(2)(1)(2), siz;
siz=2*1*2;
printf("Enter %d elements: \n", siz);
for(i = 0; i < 2; ++i)
(
for (j = 0; j < 1; ++j)
(
for(k = 0; k < 2; ++k )
(
scanf("%d", &s(i)(j)(k));
)
)
)
printf("The stored values are:\n\n");
for(i = 0; i < 2; i++)
(
for (j = 0; j < 1; j++)
(
for(k = 0; k < 2; k++)
(
printf("sample(%d)(%d)(%d) = %d\n", i, j, k, s(i)(j)(k));
)
)
)
)

Výkon:

Príklad č. 2

Ďalší príklad trojrozmerného poľa na automatickú tlač prvkov.

kód:

#include
int main()
(
int m(2)(3)(2) =
(
( (1, 2), (3, 5), (6, 5) ),
( (8, 3), (8, 7), (9, 11) )
);
for (int i = 0; i <2; ++i)
(
for (int j = 0; j <3; ++j)
(
for (int k = 0; k <2; ++k)
printf("Value at m(%d)(%d)(%d) = %d\n", i, j, k, m(i)(j)(k));
)
)
)
return 0;
)

Výkon:

3. štvorrozmerné pole

Je to pole trojrozmerného poľa a je veľmi ťažké spravovať dimenzie. Je vnímaná ako zväzok kociek spolu a použiteľná pre vesmírne vektory.

Vyhlásenie o 4-D poli:

Názov poľa typu (1) (2) (3) (4) ……. n) kde 1, 2 označuje rozmery a n znamená deviate rozmery.

Príklad:

int state (5)(6)(7)(8);

Príklad štvorrozmerného poľa

Program C na implementáciu 4- D poľa.

kód:

#include
int main()
(
int i, j, k, l, s;
int d(2)(2)(2)(2);
s = 2;
d(0)(0)(0)(0) = 4;
d(0)(0)(0)(1) = 3;
d(0)(0)(1)(0) = 2;
d(0)(0)(1)(1) = 6;
d(0)(1)(0)(0) = 6;
d(0)(1)(0)(1) = 8;
d(0)(1)(1)(0) = 1;
d(0)(1)(1)(1) = 2;
d(1)(0)(0)(0) = 6;
d(1)(0)(0)(1) = 9;
d(1)(0)(1)(0) = 5;
d(1)(0)(1)(1) = 1;
d(1)(1)(0)(0) = 9;
d(1)(1)(0)(1) = 7;
d(1)(1)(1)(0) = 5;
d(1)(1)(1)(1) = 7;
for (i = 0; i < s; i++) (
for (j = 0; j < s; j++) (
for (k = 0; k < s; k++) (
for (l = 0; l < s; l++) (
printf("Value of stdio(%d)(%d)(%d)(%d): %d ", i, j, k, l, d(i)(j)(k)(l));
printf("\n");
)
)
)
)
return 0;
)

Výkon:

záver

Nakoniec sme v tomto článku diskutovali o multidimenzionálnych poliach a ich subtypoch v programovaní v C. A tiež ich deklarovanie a prístup k prvkom v maticovom formáte. Tieto techniky sa používajú v koncepcii, ako je binárne vyhľadávanie a implementácia triedenia. Index tu hrá kľúčovú úlohu, pretože určuje prvok v štruktúre poľa.

Odporúčané články

Toto je sprievodca multidimenzionálnym poľom v C. Tu diskutujeme o tom, ako inicializovať multidimenzionálne pole v C spolu s príkladmi. Viac informácií nájdete aj v nasledujúcich článkoch

  1. Najlepšie kompilátory C.
  2. 2D polia v C #
  3. 2-D polia v C
  4. C Triedy úložiska
  5. C násobenie programovacej matice
  6. 3 rôzne typy polí v PHP (príklady)
  7. Ako Array pracuje v Unixe so syntaxou?

Kategórie: