Sissejuhatus mitmemõõtmelisse massiivi C-s

See artikkel keskendub mitmemõõtmelisele massiivile c, mida kasutatakse peamiselt arvuti- ja uuringuanalüüsis. Üldiselt koondab massiiv lineaarselt teabe, mis on väidetavalt ühemõõtmeline. Ühemõõtmelised andmed salvestavad ainult ühte teavet, näiteks õpilaste regno. Mõnes olukorras on vaja andmeid salvestada tabelid, mis sisaldavad ridu ja veerge, või käsitleda keerukaid andmeid. Selle visualiseerimiseks on vaja maatriksvormingut, mida me kutsusime kahemõõtmelisteks massiivideks, kus paigutused nõuavad pildi piksleid, graafikat. Andmeid säilitatakse tabelina. Massiivi manipuleerimine toimub elemendi ümberkorraldamise teel, kasutades selliseid funktsioone nagu ümberkujundamine, pigistamine.

Kuidas kuulutada C-s mitmemõõtmelist massiivi?

Süntaks:

Mitmemõõtmelise massiivi ülddeklaratsioon on esitatud järgmiselt:

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

  • Andmetüübi nimi - siin tähistatakse elementide tüüpi (täisarv, ujuk).
  • Massiivi nimi - tähistab mõõtme massiivile määratud nime.
  • Rea suurus - rea elementide arv ex. rea suurus = 8, siis massiivis on 8 rida.
  • Veeru suurus - veeru elementide arv.

Kuidas lähtestada mitmemõõtmelist massiivi C-s?

Mitmemõõtmeliste massiivide suuruse ennustamiseks korrutatakse erinevate mõõtmete suurus. Ja nad salvestavad väärtusi kahel viisil, näiteks rea suur ja veeru suur. Ja mälujaotus valideerib nii pikkuse kui ka auastme omadused.

C-s on mitmemõõtmelist massiivi kolme tüüpi:

  1. Kahemõõtmeline massiiv
  2. Kolmemõõtmeline massiiv
  3. Neljamõõtmeline massiiv

1. Kahemõõtmeline massiiv

Kahemõõtmeline massiiv on struktureeritud maatriksitena ja realiseeritud ridade ja veergude abil, mida tuntakse ka kui massiivi massiivi. Mälu eraldamine toimub nii rea suuruses kui ka veeru suuruses. Ja vaikevorming on Row-Major. Kahemõõtmelise massiivi võtmisel peetakse iga elementi ise 3D-massiiviks või teadaolevalt 3D-massiivi kogumiks. Kahemõõtmeline massiiv kasutab kahte silmuste või pesastatud silmuste jaoks, kus välimised silmused täidavad 0-st algset alaindeksit.

Süntaks:

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

Näide:

int td (4)(3);

siin 4 on nr. ridade ja 3 on ei. veergude arv.

Kahemõõtmelise massiivi lähtestamine

2-D-massiivi initsialiseerimine toimub mitmel viisil, seda on siin näidatud.

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

Oleme siin maininud ei. ridade ja veergude arv kastis Teise indeksi määramine on kohustuslik, et mõista kompilaatorit rea lõpu ja alguse kohta. Allpool olev tabel näitab 2-D-massiivi mälu jaotust.

Elementide arv määratakse manipuleerides paljude ridade ja veergudega ning korrutades nr. ridade ja veergude arv. näiteks ei. elementide massiivi hoiab B (-2… 4, -3, 6). See arvutatakse alumise ja ülemise piiri abil.

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

Rakendamine

Selle tegemiseks kasutatakse rea suur- ja veerupõhiseid rakendusi

Rida-major:
Aadressiga manipuleerimise valem on esitatud järgmiselt:
= B +W ( n(I-1) +(J-1))
Kus b- on W-baitide baasaadress ja n- veergude arv.
Major Major:
= B +W ( r(j-1) +(i-1))
kus r - on ei. ridadest.

Kahemõõtmelise massiivi näited

Kahemõõtmelise massiivi näited on järgmised:

Näide nr 1

Massiivi A iga element (-10, 10, 20… 35) vajab 1 baiti mälu. Ja massiiv sobib veeru duuriks aadressil 400, leidke A asukoht (0, 30).

Lahendus

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

2-massiivis tehtud tuttav toiming on maatriksite Algebra, mille m * n maatriks on B. Maatriksi matemaatiline kontseptsioon on rakendatud samamoodi nagu programmeerimisel.

Allpool toodud näide salvestab elemendi maatriksvormingus ja prindib sama.

Kood:

#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äljund:

Näide 2

C programm, mis täidab kahe maatriksi summa.

Kood:

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

Ülaltoodud programm arvutab kahe maatriksi A (20, 20) B (20, 20) summa, kui neil on kaks ühesugust maatriksit. Silmuse jaoks kulub maatriksi aktsepteerimiseks kaks sisendmaatriksit ja silmus.

Väljund:

Näide 3

Maatriksi ülevõtmine

Ridade ja veergude vahetamine uue maatriksi moodustamiseks, mida nimetatakse maatriksi teisaldamiseks.

Näide:

Siis üle andma,

Maatriksi teisaldamine programmi C abil

Kood:

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

Ülaltoodud programmis Maatriksi lugemiseks olime silmuste jaoks kasutanud kahte ja selle printimiseks ülekandmist väljundi kuvamiseks. Siin oleme kasutanud 3 * 3 maatriksit.

Väljund:

2. Kolmemõõtmeline massiiv

Seda nimetatakse massiivi elementide massiiviks või maatriksite massiiviks. See on üsna sume, kuid kui olete loogika poole harjutanud, on seda lihtsam rakendada. ja see kolmemõõtmeline massiiv nõuab rohkem kui kolme dimensiooni ja mäluseadme salvestamiseks.

Seda saab deklareerida järgmiselt:

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

int L (3) (4) (2); Massiiv L mahutab siin 24 elementi. Ja neid kõiki saab kompileerimise käigus initsialiseerida, kuid kui need on initsialiseerimata, pannakse need prügiväärtusse.

Initsialiseerimise saab teha samal viisil kui kahemõõtmelist massiivi. Siin on proov

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

Kolmemõõtmelise massiivi näited

Siin on mõned näited kolmemõõtmelisest massiivist, mis on toodud allpool:

Näide nr 1

Allpool on toodud lihtne näide C-programmeerimisest, mis illustreerib kolmemõõtmelist massiivi. Seda tehakse silmuse jaoks, arvestades 3D-silmuste silmuseid 3.

Kood:

#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äljund:

Näide 2

Veel üks näide 3D-massiivi elementide automaatseks printimiseks.

Kood:

#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äljund:

3. Neljamõõtmeline massiiv

See on kolmemõõtmelise massiivi massiiv ja mõõtmete haldamine on väga keeruline. Seda vaadeldakse kui hunnikut kuubikuid koos ja rakendatavat kosmosevektorite jaoks.

4-D-massiivi deklaratsioon:

Tüüpi massiivi nimi (1) (2) (3) (4) ……. (n) kus 1, 2 tähistab mõõtmeid ja n tähistab n-ndat mõõdet.

Näide:

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

Neljamõõtmelise massiivi näide

C-programm 4-D-massiivi rakendamiseks.

Kood:

#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äljund:

Järeldus

Lõpuks arutasime selles artiklis C-programmeerimisel mitmemõõtmelisi massiive ja nende alatüüpe. Ja ka nende deklareerimine ja juurdepääs elementidele maatriksvormingus. Neid tehnikaid rakendatakse kontseptsioonis nagu binaarne otsimine ja sorteerimine. Siin mängib võtmerolli indeks, kuna need määravad massiivi struktuuri elemendi.

Soovitatavad artiklid

See on juhend mitmemõõtmelise massiivi kohta C-ga. Siin arutleme, kuidas lähtestada mitmemõõtmelist massiivi C-ga koos näidetega. Lisateabe saamiseks võite vaadata ka järgmisi artikleid -

  1. Parimad C-kompilaatorid
  2. 2D-massiivid C # -s
  3. 2-D massiivid C-s
  4. C salvestusklassid
  5. C Programmeerimismaatriksi korrutamine
  6. 3 erinevat tüüpi massiive PHP-s (näited)
  7. Kuidas massiiv töötab Unixis koos süntaksiga?

Kategooria: