Bevezetés a többdimenziós tömbbe C

Ez a cikk a c multidimenziós tömbre összpontosít, amelyet elsősorban számítógépes és kutatási elemzésben használnak. Általában egy tömb lineárisan fókuszál egy információt, amelyről azt állítják, hogy egydimenziós. Az egydimenziós adatok csak egyetlen információt tárolnak, mint például a hallgatók regnoje. Bizonyos helyzetekben az adatokat sorokból és oszlopokból álló tábla formátumban kell tárolni, vagy összetett adatokat kell kezelni. Ennek megjelenítéséhez szükségünk van egy mátrix formátumra, amelyet kétdimenziós tömbnek nevezünk, ahol az elrendezésekhez képpontot kell igényelni, grafikát. Az adatokat táblázatos módon tárolják. A tömb manipulációkat egy elem átrendezésével hajtják végre olyan funkciók segítségével, mint az átalakítás, megnyomás.

Hogyan deklarálhatunk egy többdimenziós tömböt C-ben?

Szintaxis:

A többdimenziós tömb általános deklarációja a következő:

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

  • Itt adattípus neve - Az elemek típusát jelöli (egész szám, úszó).
  • Tömb neve - A dimenziós tömbhez rendelt nevet jelöli.
  • Sorméret - sor elemek száma ex. sorméret = 8, akkor a tömbnek 8 sor van.
  • Oszlopméret - oszlopelemek száma.

Hogyan inicializálhatom a többdimenziós tömböt C-ben?

A többdimenziós tömbök méretét a különféle méretek szorzásával lehet megjósolni. És értékeket tárol kétféle formában, például a sor-fő és az oszlop-nagy érték formájában. És a memóriaelosztás érvényesíti mind a hosszúságot, mind a rangot.

A C-ben a többdimenziós tömbnek három típusa van:

  1. Kétdimenziós tömb
  2. Háromdimenziós tömb
  3. Négydimenziós tömb

1. Kétdimenziós tömb

A kétdimenziós tömb mátrixként van felépítve, és sorok és oszlopok segítségével valósul meg, más néven tömb tömb. A memóriaelosztást sorok és oszlopok közötti sorrendben hajtják végre. Az alapértelmezett formátum a Row-Major. 2-D tömb felvételekor minden elem önmagában 1-D tömbnek tekinthető, vagy ismert, hogy egy 3D-tömb gyűjteménye. A kétdimenziós tömb kettőt használ hurkokhoz vagy beágyazott hurkokhoz, ahol a külső hurkok 0-tól az eredeti alindexig futnak.

Szintaxis:

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

Példa:

int td (4)(3);

itt 4 a nem. sorok száma és a 3 a nem. oszlopok.

Kétdimenziós tömb inicializálása

Az inicializálás a 2-D tömbben többféle módon történik, itt látható.

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

Itt megemlítettük a nem. sorok és oszlopok száma a dobozban A második index hozzárendelése kötelező, hogy megértsük a sor végének és elejének fordítóját. Az alábbi táblázat a 2-D tömb memóriaelosztását mutatja.

Az elemek számát számos sor és oszlop manipulálásával és a szorzat megszorításával lehet meghatározni. sorok és oszlopok száma. például a nem. elemek tömbje B-t tart (2… 4, -3, 6). Az alsó és a felső határral számolják.

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

Végrehajtás

A sor nagy és oszlop-fő megvalósításaival történik

Sor-Major:
A címkezelés képlete a következő:
= B +W ( n(I-1) +(J-1))
Ahol b- az alapcím és n- oszlopok száma a W byte-okhoz.
Major oszlop:
= B +W ( r(j-1) +(i-1))
ahol r - a nem. sorok.

Példák kétdimenziós tömbre

Példák a kétdimenziós tömbre:

1. példa

Az A tömb minden elemének (-10, 10, 20… 35) 1 bájt memória szükséges. És a tömb illeszkedik az Oszlop-főbe, a 400 címre, keresse meg az A helyét (0, 30).

Megoldás

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

A kétdimenziós tömbben ismerős művelet az m * n mátrixok Algebra mátrixa B. A mátrix matematikai koncepciója ugyanúgy valósul meg, mint a programozásban.

Az alábbi példa egy elemet mátrix formátumban tárol, és ugyanazt nyomtatja.

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

Kimenet:

2. példa

C program, amely két mátrix összegét hajtja végre.

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

A fenti program kiszámítja két A (20, 20) B (20, 20) mátrix összegét, feltéve, hogy két azonos mátrixban vannak. A hurokig két bemeneti mátrixot és hurkot vesz igénybe a mátrix elfogadása.

Kimenet:

3. példa

Mátrix átültetése

Sorok és oszlopok cseréje új mátrix létrehozására, amelyet mátrix átültetéseként ismerünk.

Példa:

Aztán ültesse át adni,

Mátrix átültetése a C program használatával

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

A fenti programban A mátrix elolvasásához kettőt használtunk a hurkokhoz, és annak kinyomtatásához a beágyazott hurok a kimenet megjelenítésére szolgál. Itt 3 * 3 mátrixot használtunk.

Kimenet:

2. Háromdimenziós tömb

Táblázati tömbnek vagy Mátrix tömbnek hívják. Ez elég zajos, de ha gyakorlatba lép a logika felé, megkönnyíti a megvalósítását. és ez a háromdimenziós tömb több, mint három méretet igényel, és a memória nagy részét tároláshoz igényli.

Ez a következőképpen deklarálható:

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

int L (3) (4) (2); Az L tömb itt 24 elemet képes tárolni. Mindezek inicializálhatók az összeállítási folyamat során, de ha nem inicializálják, akkor szemétértékbe kerülnek.

Az inicializálás ugyanúgy elvégezhető, mint egy kétdimenziós tömb. Itt egy minta,

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éldák háromdimenziós tömbre

Íme néhány példa a háromdimenziós tömbre, amelyek az alábbiakban találhatók:

1. példa

Az alábbiakban egy egyszerű példát mutatunk a C programozásra, amely háromdimenziós tömböt mutat be. Ezt egy hurok használatával hajtják végre, figyelembe véve a 3-as elemet a három elem hurkokhoz.

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

Kimenet:

2. példa

További példa egy 3D-s tömb elemének automatikus kinyomtatására.

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

Kimenet:

3. Négydimenziós tömb

Ez egy háromdimenziós tömb tömbje, és nagyon nehéz kezelni a dimenziókat. Egy csomó kockának tekintik együtt, és alkalmazhatók a térvektorokra.

A 4-D tömb nyilatkozata:

Típus tömb neve (1) (2) (3) (4) ……. (n) ahol az 1, 2 a méreteket jelöli, és n jelentése az n-edik méretet.

Példa:

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

Példa négydimenziós tömbre

C program a 4-D tömb megvalósításához.

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

Kimenet:

Következtetés

Végül, ebben a cikkben a többdimenziós tömböket és altípusaikat tárgyaltuk a C programozás során. És deklarálását és az elemekhez való hozzáférést mátrix formátumban. Ezeket a technikákat alkalmazzák az olyan koncepcióban, mint a bináris keresés és a válogatás végrehajtása. Itt egy index kulcsszerepet játszik, mivel meghatározzák az elemet a tömb szerkezetében.

Ajánlott cikkek

Ez egy útmutató a többdimenziós tömb C-hez. Itt bemutatjuk, hogyan lehet a többdimenziós tömböt inicializálni C-ben, példákkal együtt. A következő cikkeket is megnézheti további információkért -

  1. Legjobb C fordító
  2. 2D tömbök a C # -ben
  3. 2-D tömbök C-ben
  4. C Tárolási osztályok
  5. C Programozó mátrix szorzás
  6. 3 különféle tömbtípus a PHP-ben (példák)
  7. Hogyan működik a tömb az Unix-ban a szintaxissal?

Kategória: