Uvod u 3D nizove u C

Niz je skupina elemenata s istim (homogenim) tipom podataka. Naziva se i izvedenom vrstom podataka. Kao što smo već primijetili, 3D niz povećava prostor eksponencijalno i dodaje se dodatni položaj za lociranje elementa u nizu. U ovoj ćemo temi naučiti o 3D nizovima u C.

Na primjer, uzmite u obzir zgradu na 4 razine s mnogo utora za parkiranje bicikala. Dakle, ovdje da bismo dobili savršene smjerove utora za parkirani bicikl, moramo reći broj razine s brojem redaka i stupca. Kad samo kažete matrici, red 7 i stupac 4, koju razinu traži? Ovaj 3D niz služi samo za spremanje više količina podataka i predstavljanje pozicija.

Kako ih možemo definirati i implementirati? Dalje, razumemo te koncepte.

Sintaksa:

U C, dimenzijski nizovi mogu se deklarirati na sljedeći način:

Na isti način možemo 3-D matricu proglasiti kao:

Značenje gornjeg prikaza može se shvatiti kao:

  1. Memorija dodijeljena varijabli c je tipa podataka int.
  2. Ukupni kapacitet koji ovaj niz može držati je 2 * 3 * 4, što je jednako 24 elementa.
  3. Podaci su predstavljeni u obliku 2 niza s 3 reda i 4 stupca svaki.
Kolumne
c (0) Niz redoviC (0) (0)C (0) (1)C (0) (2)C (0) (3)
c (1) (0)c (1) (1)c (1) (2)c (1) (3)
c (2) (0)c (2) (1)c (2) (2)c (2) (3)
Kolumne
c (1) Niz redoviC (0) (0)C (0) (1)C (0) (2)C (0) (3)
c (1) (0)c (1) (1)c (1) (2)c (1) (3)
c (2) (0)c (2) (1)c (2) (2)c (2) (3)

Podaci unutar matrice mogu se pristupiti putem gornjeg prikaza. U prikazu 3D nizova, prvi kvadratni uglati stupanj predstavlja razinu matrice koju treba uzeti u obzir, drugi bi bio broj redova, a treći je broj stupaca.

Indeksni prikaz niza za prvi element uvijek započinje s nulom i završava s veličinom-1. Na primjer, ako je broj redaka 3, tada će indeksni prikaz za pristup podacima u redovima biti 0, 1 i 2. Ista logika vrijedi i za indeks nivoa polja i indeksa stupaca. Za gornju predstavu, za dobivanje podataka 1. razine polja s 2. stupcem 3. stupca, možemo pristupiti pomoću c (0) (1) (2).

Inicijalizacija 3D nizova u C

Možemo inicijalizirati 3D niz sličan 2-D matrici.

Kao što je gore spomenuto, ukupni broj elemenata koji se mogu uklopiti u niz bi bio matrica1 * arraysize2 * arraysize3. Ovdje je 2 * 4 * 3, što daje 24.

Umetanje elemenata:

Slično kao u 2D polju, za umetanje elemenata u 3-D polje moramo podatke umetnuti u razinama, redovima i stupcima. Dakle, za to koristimo koncept petlje. U gornjem postupku za inicijalizaciju podataka u nizu unaprijed smo definirali vrijednosti.

Ovdje elementi mogu dinamički umetnuti prema zahtjevima. Ispod je primjer koda za umetanje elemenata.

Kodirati:

#include
int main()
(
int c(2)(4)(3);
int i, j, k;
printf("Enter elements into 3-D array: ");
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
for(k=0;k<3;k++)
(
scanf("%d", &c(i)(j)(k));
)
)
)
)

Kao što je vidljivo u kodu:

  1. Prvo deklariramo varijable matrice i dimenzije polja s brojem razina polja, redaka i stupaca.
  2. Zatim izjavljujemo tri varijable za iteriranje elemenata u nizu.
  3. Zatim, za petlje se koriste. Prva petlja je za iteraciju nivoa, druga je za redove, a treća je za stupove.
  4. Funkcija Scanf koristi se za čitanje podataka dok unosimo, a zatim vrijednost umetnutu u te položaje i, j i k.

U gornjem primjeru podatke smo umetnuli u matricu koja ima 2 razine, 4 reda i 3 stupca. Rezultat sljedećeg može se dobiti na sljedeći način:

Kako nismo koristili funkciju printf za prikaz izlaza, napisani program pročitao je samo unesene vrijednosti korisnika. Nakon pisanja funkcije ispisa (koristi se za petlje), izlaz će se prikazati kao:

Ažuriraj elemente:

Ažuriranje elemenata u nizu može se obaviti ili određivanjem određenog elementa koji se zamjenjuje ili identificiranjem položaja na kojem se mora izvršiti zamjena. Za ažuriranje obično zahtijevamo sljedeće detalje.

  1. Elementi niza
  2. Pozicija / element, gdje ga treba umetnuti
  3. Vrijednost koju treba umetnuti.

Za ažuriranje podataka u nizu kroz detalje o elementima, prvo moramo potražiti taj element u nizu, razumjeti njegov položaj, a zatim stari element zamijeniti novim.

Ovdje smo u nastavku dali dva primjera ažuriranja elementa 3D matrice.

Prvo, idemo kroz primjer u kojem je položaj elementa koji se ažurira već poznat.

Kodirati

#include
int main()
(
int c(2)(4)(3);
int i, j, k, num;
printf("Enter elements into 3-D array: ");
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
for(k=0;k<3;k++)
(
scanf("%d", &c(i)(j)(k));
)
)
)
c(1)(1)(1) = 85;
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
for(k=0;k<3;k++)
(
printf("\t%d", c(i)(j)(k));
)
printf("\n");
)
printf("\n");
)
return 0;
)

U gornjem programu odabran je element na prvoj razini, prvom redu i prvom stupcu te je ažurirana vrijednost podataka na tom položaju.

Izlaz za gore je sljedeći:

U drugom primjeru pokazat ćemo kako se element elementa može dinamički uzeti kao vrijednost koju unosi korisnik i ažurirati vrijednost elementa u tom određenom položaju.

Kodirati:

#include
int main()
(
int c(2)(4)(3);
int i, j, k, num;
printf("Enter elements into 3-D array: ");
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
for(k=0;k<3;k++)
(
scanf("%d", &c(i)(j)(k));
)
)
)
printf("Enter the level, row and column number: ");
scanf("%d %d %d", &i, &j, &k);
printf("Enter the new number you want to update with: ");
scanf("%d", &num);
c(i)(j)(k) = num;
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
for(k=0;k<3;k++)
(
printf("\t%d", c(i)(j)(k));
)
printf("\n");
)
printf("\n");
)
return 0;
)

Izlaz je sljedeći. Ovdje smo koristili funkciju scanf za čitanje vrijednosti koje je dao korisnik prema vlastitom izboru za položaj elementa na temelju razine polja, broja redaka i stupaca.

Možete li pokušati napisati program u ažuriranju cijelog stupca matrice s vrijednostima koje unose korisnici?

Sada, kao što znamo, u 3D polju deklariramo veličinu matrice na samom početku. Svjesni smo veličine matrice, ali što ako korisnik daje slučajni broj retka i stupca izvan naše veličine?

Što ako, u polje unesemo više elemenata nego što je potrebno?

Primjetite da, kako nismo napisali nijedan uvjet if / else ili try / catch, izlaz matrice se ne mijenja. Međutim, kôd možemo napisati koristeći gore navedene uvjete za prikaz pogrešaka za takve slučajeve.

Kao posljednji primjer, niste li znatiželjni, što se događa ako između njih preskočimo neke elemente? Što radi moj program?

Kao što je promatrano u gornjem rezultatu:

  1. Propustili smo 4 vrijednosti na ulazu, samo davanjem prostora i pritiskom na enter
  2. Ali imali smo tu mogućnost da unesemo preostala 4 elementa.
  3. Zatim smo odredili zadnju razinu, zadnji redak i zadnji element stupca koji treba promijeniti na 78. A izlaz je očekivan, zar ne?

Brisanje elemenata

Nakon koncepata umetanja i ažuriranja podataka unutar 3D polja, pogledajmo sada kako možemo izbrisati cijeli niz iz polja.

Napisali smo program u jednostavnom formatu, tako da se koncept različitih operacija može lako razumjeti.

Kodirati:

#include
int main()
(
int c(2)(4)(3), i, j, k, num, x;
printf("Enter elements into 3-D array: ");
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
for(k=0;k<3;k++)
(
scanf("%d", &c(i)(j)(k));
)
)
)
printf("Enter the value of row number to delete: ");
scanf("%d", &x);
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
if(j==x)
(
for(k=0;k<3;k++)
(
if((j+1)<4)
(
printf("\t%d", c(i)(j+1)(k));
)

)
j ++;
)

drugo
(
za (k = 0, k <3; k ++)
(
printf ("\ t% d", c (i) (j) (k));
)
)
printf ( „\ n”);
)
printf ( „\ n”);
)
)

Vrijednosti niza prihvaćate dinamički. Slijedeći koraci su:

  1. Od korisnika se traži da upiše broj (indeks) retka koji mora biti izbrisan.
  2. Koristite za iteraciju petlje, nizova, redaka i stupaca u petlji. Usporedimo da li se broj retka i korisnički uneseni broj podudaraju ili ne.
  3. Ako se podudaraju i ako je broj retka manji od veličine polja, ispisujemo sljedeći redak. Inače, tiskamo redak kakav jest.
  4. Ovdje, budući da nismo imali uvjet na razini niza, navedeni broj retka briše se s obje razine polja.

Izlaz je sljedeći:

Što ako dodijelimo broj retka izvan granice polja?

Neće pronaći red za brisanje i napuštanje programa ispisom cijelog niza.

Kao što je već poznato, čak možemo dinamički deklarirati vrijednosti za broj redaka i stupaca i u skladu s tim napisati program.

Ne izgleda li to jednostavno i jednostavno za naučiti?

Možete li pokušati izbrisati određeni element za 3D niz sada kao vježbu?

Zaključak

U ovom smo dijelu naučili osnovne operacije na trodimenzionalnim nizovima.

3D niz sadrži mnogo setova 2-D nizova. Kao što smo na šahovskoj ploči vidjeli kao primjer dvodimenzionalnog niza, ako bismo zajedno postavili mnogo šahovskih ploča, 3D niz nam može pomoći da prvo izaberemo šahovsku ploču s kojom želite igrati, a zatim idite na redove i stupce na toj šahovskoj ploči.

Pokušajte riješiti osnovne operacije 3d niza i zabavite se učeći C.

Preporučeni članci

Ovo je vodič za 3D matrice u C. Ovdje smo raspravljali o inicijalizaciji 3D matrice slične 2D matrici i elementima Array. Možete pogledati i sljedeći članak da biste saznali više -

  1. Nizovi u R
  2. Vrste podataka u MATLAB-u
  3. Kako stvoriti niz u C #?
  4. Kako je 3D niz definiran u Javi?
  5. Nizovi u PHP-u

Kategorija: