Uvod v večdimenzionalni niz na C

Ta članek se osredotoča na večdimenzionalni niz v c, ki se pretežno uporablja v računalniški in raziskovalni analizi. Na splošno matrika linearno usmerja informacije, za katere pravijo, da so enorazsežne. Enodimenzionalni shranjujejo podatke samo ene informacije, kot so študentje. V nekaterih situacijah je treba podatke shraniti v obliki tabele, ki vsebuje vrstice in stolpce ali za obdelavo kompleksnih podatkov. Za njegovo vizualizacijo potrebujemo matrični format, ki smo ga poimenovali kot dvodimenzionalni niz, kjer ureditev zahteva piksle slike, grafike. Podatki so shranjeni v tabeli. Manipulacije z matriko se izvajajo s preurejanjem elementa z uporabo funkcij, kot so preoblikovanje, stiskanje.

Kako prijaviti večdimenzionalni niz v C?

Sintaksa:

Splošna izjava večdimenzionalnega niza je dana:

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

  • Tukaj ime vrste podatkov - Označuje vrsto elementov (celo število, plovec).
  • Ime matrike - označuje ime, dodeljeno dimenzijskemu nizu.
  • Velikost vrstice - Število elementov vrstic, npr. vrstica-velikost = 8, potem ima matrika 8 vrstic.
  • Velikost stolpca - Število elementov stolpca.

Kako inicializirati večdimenzionalni niz v C?

Velikost večdimenzionalnih nizov predvidevamo tako, da pomnožimo velikost različnih dimenzij. Vrednosti shranijo v obliki dveh načinov, kot so glavna vrstica in glavni stolpec. In razporeditev pomnilnika potrjuje lastnosti dolžine in razvrstitve.

V C ima večdimenzionalni niz tri vrste:

  1. Dvodimenzionalni niz
  2. Tridimenzionalni niz
  3. Štiridimenzionalni niz

1. Dvodimenzionalni niz

Dvodimenzionalna matrika je strukturirana kot matrike in se izvaja s pomočjo vrstic in stolpcev, znanih tudi kot matrika matrikov. Dodelitev pomnilnika se izvede bodisi v glavnem vrstici kot v glavnem stolpcu. In privzeta oblika je Row-Major. Ko vzamemo dvodimenzionalno matriko, se vsak element šteje za 1-D matriko ali znano kot zbirka 1-D matrike. Dve d matrika uporablja dve za zanke ali ugnezdene zanke, kjer zunanje zanke izvajajo od 0 do začetnega podpisa.

Sintaksa:

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

Primer:

int td (4)(3);

tu je 4 št. vrstic in 3 je št. stolpcev.

Inicializacija dvodimenzionalnega niza

Inicializacija v 2-D matriki se izvede na več načinov, je prikazano tukaj.

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 smo omenili št. vrstic in stolpcev v polju Obvezno je dodeliti drugi indeks, da se razume prevajalnik o koncu in začetku vrstice. Spodnja tabela prikazuje dodelitev pomnilnika 2-D matriki.

Število elementov se določi z manipuliranjem števila vrstic in stolpcev in pomnoževanjem št. vrstic in stolpcev. za primer, št. elementov ima matrika B (-2… 4, -3.6). Izračuna se po spodnji in zgornji meji.

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

Izvajanje

Izvaja se z uporabo glavnih in vrstnih glavnih izvedb

Glavni rednik:
Formula za manipulacijo z naslovom je podana kot:
= B +W ( n(I-1) +(J-1))
Kjer je b- osnovni naslov in n- Št. Stolpcev za W bajte.
Glavni stolpec:
= B +W ( r(j-1) +(i-1))
kjer je r - je št. vrstic.

Primeri dvodimenzionalnega niza

Primeri dvodimenzionalnega niza so:

Primer 1

Vsak element matrike A (-10.10, 20… 35) potrebuje 1 bajt pomnilnika. In matrika se prilega glavnemu stolpcu na naslovu 400, Poišči lokacijo A (0, 30).

Rešitev

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

Znana operacija, ki se izvaja v dvodnevnem nizu, je Algebra matric z m * n matriko B. Matematični koncept matrice je izveden enako kot v programiranju.

Spodnji primer shranjuje element v matrični obliki in tiska isto.

Koda:

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

Izhod:

Primer # 2

C program, ki izvaja vsoto dveh matric.

Koda:

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

Zgornji program izračuna vsoto dveh matric A (20, 20) B (20, 20), če imata dve enaki matriki. Skozi za zanko potrebujeta dve vhodni matriki in zanki, da sprejmeta matriko.

Izhod:

Primer # 3

Prenos matrike

Izmenjava vrstic in stolpcev tvori novo matriko, ki je znana kot prenos matrike.

Primer:

Potem Transpose daj,

Prenos matrike s programom C

Koda:

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

V zgornjem programu Za branje matrike smo uporabili dve za zanke in za tiskanje njenega prenosa se ugnezdena zanka uporablja za prikaz izhoda. Tu smo uporabili matrico 3 * 3.

Izhod:

2. Tridimenzionalni niz

Imenuje se matrika elementov matrike ali matrika matric. Precej buzičen, vendar ko enkrat pridobite prakso proti logiki, jo je lažje izvajati. in ta tridimenzionalni niz zahteva več kot tri dimenzije in za shranjevanje potrebuje več pomnilnika.

Lahko se razglasi za:

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

int L (3) (4) (2); Tu lahko matrika L vsebuje 24 elementov. In vse to je mogoče inicializirati med postopkom kompilacije, ko pa jih neinicializiramo, damo v vrednost smeti.

Inicializacija se lahko izvede na enak način kot dvodimenzionalni niz. Tukaj je vzorec,

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

Primeri tridimenzionalnega niza

Tu je nekaj primerov tridimenzionalnega niza, ki je podan spodaj:

Primer 1

Spodaj je preprost primer programiranja C, ki ponazarja tridimenzionalni niz. Naredi se z uporabo zanke tako, da se za 3D elemente upoštevajo 3 zanke.

Koda:

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

Izhod:

Primer # 2

Še en primer 3-D matrike za samodejno tiskanje elementov.

Koda:

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

Izhod:

3. Štiridimenzionalni niz

To je niz tridimenzionalnega niza in je zelo težko upravljati z dimenzijami. Nanjo gledamo kot na kup kock skupaj in se uporablja za vesoljske vektorje.

Izjava 4-D matrike:

Vnesite ime matrike (1) (2) (3) (4) ……. (n) kjer 1, 2 označuje dimenzije in n pomeni n-te dimenzije.

Primer:

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

Primer štiridimenzionalnega niza

C program za izvajanje 4- D matrike.

Koda:

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

Izhod:

Zaključek

Za konec smo v tem članku obravnavali večdimenzionalne matrike in njihove podtipe v programiranju C. In tudi njihovo izjavo in dostop do elementov v matrični obliki. Te tehnike se uporabljajo v konceptu, kot sta binarno iskanje in razvrščanje. Tu ima ključno vlogo indeks, ko določajo element v strukturi matrike.

Priporočeni članki

To je vodnik za večdimenzionalni niz v C. Tukaj razpravljamo, kako inicializirati večdimenzionalni niz v C skupaj s primeri. Če želite izvedeti več, si oglejte tudi naslednje članke -

  1. Najboljši C prevajalci
  2. 2D matrike v C #
  3. 2-D matrike na C
  4. C Razredi za shranjevanje
  5. C Programiranje množenja matrike
  6. 3 različne vrste nizov v PHP (primeri)
  7. Kako Array deluje v Unixu s sintakso?