Úvod do vícerozměrného pole v C

Tento článek se zaměřuje na vícerozměrné pole vc, které se používá převážně v počítačové a výzkumné analýze. Obecně se pole lineárně zaměřuje na část informace, o které se říká, že je jednorozměrná. Jednorozměrné ukládá data pouze jediné informace, jako je regno studentů. V některých situacích je nutné ukládat data ve formátu tabulky, který obsahuje řádky a sloupce, nebo zpracovávat komplexní data. K jeho vizualizaci potřebujeme maticový formát, který jsme nazvali jako dvourozměrná pole, kde uspořádání vyžaduje pixely obrázku, grafiky. Data se ukládají tabulkově. Manipulace s poli se provádějí přeskupením prvku pomocí funkcí, jako je změna tvaru, stlačení.

Jak deklarovat vícerozměrné pole v C?

Syntax:

Obecná deklarace vícerozměrného pole se uvádí jako:

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

  • Zde název datového typu - Označuje typ prvků (celé číslo, float).
  • Název pole - Označuje název přiřazený k rozměrovému poli.
  • Velikost řádku - počet prvků řady ex. row-size = 8, pak matice má 8 řádků.
  • Velikost sloupce - počet prvků sloupce.

Jak inicializovat vícerozměrné pole v C?

Velikost vícerozměrných polí se předpovídá vynásobením velikosti různých rozměrů. A ukládají hodnoty ve formě dvou způsobů, jako je řádek-hlavní a sloupec-hlavní. Alokace paměti ověřuje vlastnosti délky i pořadí.

V C má vícerozměrné pole tři typy:

  1. Dvourozměrné pole
  2. Trojrozměrné pole
  3. Čtyřrozměrné pole

1. Dvourozměrné pole

Dvourozměrné pole je strukturováno jako matice a implementováno pomocí řádků a sloupců, také známých jako pole polí. Přidělení paměti se provádí buď v řádku-hlavní a sloupec-hlavní. A výchozí formát je Row-Major. Když se vezme 2-D pole, každý prvek se považuje za samotný 1-D pole nebo je známý jako soubor 1-D pole. Pole dva d používá dvě pro smyčky nebo vnořené smyčky, kde vnější smyčky se provádějí od 0 do počátečního indexu.

Syntax:

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

Příklad:

int td (4)(3);

zde 4 je ne. řádků a 3 je ne. sloupců.

Inicializace dvojrozměrného pole

Inicializace v 2-D poli se provádí několika způsoby, je zobrazena zde.

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

Zde jsme zmínili ne. řádků a sloupců v poli Je povinné přiřadit druhý index, aby kompilátor pochopil konec a začátek řádku. Níže uvedená tabulka ukazuje přidělení paměti 2-D pole.

Počet prvků je určen manipulací s řadou řádků a sloupců a vynásobením čísla. řádků a sloupců. například, ne. prvků obsahuje pole B (-2… 4, -3, 6). Vypočítá se dolní mezí a horní mezí.

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

Implementace

Děje se to pomocí implementace Row major a sloupce major

Row-Major:
Vzorec pro manipulaci s adresou je uveden jako:
= B +W ( n(I-1) +(J-1))
Kde b- je základní adresa a počet sloupců pro W bajtů.
Sloupec Major:
= B +W ( r(j-1) +(i-1))
kde r - je ne. řádků.

Příklady dvojrozměrného pole

Příklady dvojrozměrného pole jsou:

Příklad č. 1

Každý prvek pole A (-10, 10, 20 … 35) potřebuje 1 byte paměti. A pole se hodí do sloupce major na adresu 400, Najděte umístění A (0, 30).

Řešení

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ámá operace prováděná v 2-d poli je Algebra matic s m * n Matice B. Matematický koncept matice je implementován stejně jako v programování.

Níže uvedený příklad ukládá prvek do maticového formátu a vytiskne jej.

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ýstup:

Příklad č. 2

Program C provádějící součet dvou matic.

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

Výše uvedený program počítá součet dvou matic A (20, 20) B (20, 20) za předpokladu, že mají dvě stejné matice. Pro smyčku trvá přijetí dvou matic a smyček, aby byla matice přijata.

Výstup:

Příklad č. 3

Transpozice matice

Výměna řádků a sloupců do nové matice, která je známá jako transpozice matice.

Příklad:

Pak Transpose dá,

Matrix Transpose Using C program

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

Ve výše uvedeném programu Pro čtení matice jsme použili dvě pro smyčky a pro tisk její transpozice se pro zobrazení výstupu používá vnořená smyčka. Zde jsme použili matici 3 * 3.

Výstup:

2. Trojrozměrné pole

Jedná se o tzv. Pole prvků pole nebo pole matic. Je to docela bláznivé, ale jakmile získáte praxi k logice, je implementace snadnější. a toto trojrozměrné pole vyžaduje více než tři dimenze a vyžaduje uložení velké paměti.

Lze ji deklarovat jako:

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

int L (3) (4) (2); Zde může pole L pojmout 24 prvků. A všechny tyto mohou být inicializovány během kompilačního procesu, ale když jsou neinicializované, jsou vloženy do odpadkové hodnoty.

Inicializaci lze provést stejným způsobem jako dvourozměrné pole. Zde je ukázka,

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

Příklady trojrozměrného pole

Zde je několik příkladů trojrozměrného pole, které jsou uvedeny níže:

Příklad č. 1

Níže je uveden jednoduchý příklad v programování C ilustrující trojrozměrné pole. Provádí se to pro smyčku zvažováním 3 pro smyčky pro 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ýstup:

Příklad č. 2

Další příklad 3-D pole pro automatický tisk prvků.

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ýstup:

3. Čtyřrozměrné pole

Je to pole trojrozměrného pole a je velmi obtížné spravovat dimenze. Je považován za svazek kostek dohromady a použitelný pro kosmické vektory.

Prohlášení o 4-D poli:

Zadejte název pole pole (1) (2) (3) (4) ……. (n) kde 1, 2 označuje rozměry an znamená n-té rozměry.

Příklad:

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

Příklad čtyřrozměrného pole

Program C implementující pole 4- D.

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ýstup:

Závěr

Nakonec jsme v tomto článku diskutovali vícerozměrná pole a jejich podtypy v programování v jazyce C. A také jejich deklarace a přístup k elementům v maticovém formátu. Tyto techniky se používají v konceptu, jako je binární vyhledávání a implementace třídění. Zde hraje klíčovou roli index, protože určuje prvek ve struktuře pole.

Doporučené články

Toto je průvodce multidimenzionálním polem v C. Zde diskutujeme, jak inicializovat vícerozměrné pole v C spolu s příklady. Další informace naleznete také v následujících článcích

  1. Nejlepší kompilátory C
  2. 2D pole v C #
  3. 2-D pole v C
  4. C Třídy úložiště
  5. C Programovací násobení matic
  6. 3 různé typy polí v PHP (příklady)
  7. Jak Array pracuje v Unixu se syntaxí?

Kategorie: