Uvod u dvodimenzionalne nizove u C

Niz je skupina elemenata s istim (homogenim) tipom podataka. Naziva se i izvedenom vrstom podataka. Ako smatramo primitivnom vrstom podataka i dodijelimo vrijednost kao što je prikazano u nastavku,

A sada, ako želimo pohraniti novu vrijednost u varijablu a, nova vrijednost zamjenjuje staru vrijednost. Koristeći jednu primitivnu varijablu možemo pohraniti samo jednu vrijednost odjednom, ne možemo pohraniti više vrijednosti.

Za pohranu više od jednog elementa u jednoj varijabli kao što su studentske ocjene, ID-ovi zaposlenika, mobilni brojevi s velikom količinom podataka, moramo stvoriti 100 jedinstvenih varijabli, što je vrlo složen zadatak. Dakle, zato je uveden koncept Arrays.

Koncepti u 2-D nizovima u C

Mi možemo definirati nizove u

  • Jedan dimenzije
  • Dvaput dimenzija

I tako sve do N-dimenzija temeljenih na zahtjevu. Ali ovdje ćemo se pozabaviti dvosmjernim nizovima. Kao što ime sugerira, 2-D Nizovi mogu biti matrični prikaz podataka, koji su stvoreni za implementaciju relacijske baze podataka u obliku sličnih podataka i mogu se pohraniti u tabelarne oblike. Omogućuje jednostavno zadržavanje skupnih podataka koji se na zahtjev mogu prenijeti na bilo koji broj funkcija. Podaci u tim nizovima mogu se pristupiti putem ID-a retka i stupca.

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

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

Sintaksa

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

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

  1. Memorija dodijeljena varijabli b je tipa podataka int.
  2. Podaci su predstavljeni u obliku 2 reda i 3 stupca.


Podaci unutar matrice mogu se pristupiti putem gornjeg prikaza. U prikazu 2-D nizova, prvi kvadratni ugao predstavlja broj redova, a drugi je za broj stupaca. Indeksni prikaz niza za prvi element uvijek započinje s nulom i završava s veličinom-1. Varijabla matrice (ovdje b) uvijek sadrži osnovnu adresu memorijskog bloka i zove se unutarnja varijabla pointera.

Na primjer, ako je broj redaka 3, tada će indeksni prikaz pristupa podacima u redovima biti 0, 1 i 2. Ista se logika odnosi i na indekse stupaca. Za gornju predstavu, za dobivanje podataka drugog stupca trećeg stupca, možemo pristupiti putem b (1) (2).

Inicijaliziranje nizova

Imamo dvije različite metode u inicijalizaciji vrijednosti u C. Metode se razlikuju samo sintaktički.

Ispod je jedan od njih.

Drugi način inicijalizacije je sljedeći:

Općenito, preferira se prva metoda inicijalizacije jer jasno možemo razumjeti i vizualizirati redove i stupce 2-D nizova u C.

Ispod je primjer slikovnog prikaza elemenata i njihove adrese za niz b.

Elementi matrice obično se pohranjuju na uzastopna memorijska mjesta na temelju vrste podataka elemenata.

Umetanje elemenata u dvodimenzionalne nizove

Za umetanje elemenata u 2-D matrice, trebamo umetnuti podatke u oba redaka i stupaca. 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.

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

Kao što je vidljivo u kodu:

  1. Prvo izjavljujemo varijablu matrice i dimenzije polja s brojem redaka i stupaca.
  2. Zatim izjavljujemo dvije varijable za iteriranje elemenata u nizu.
  3. Zatim, za petlje se koriste. Vanjska strana petlje je za iteraciju redaka, a unutarnja petlja za stupove.
  4. Funkcija Scanf koristi se za čitanje podataka dok unosimo, a zatim vrijednost umetnuta u one položaje i i j.

U gornjem primjeru smo umetnuli podatke u matricu koja ima 2 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žurirajte elemente u 2-D matricama

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 njegovu poziciju, a zatim stari element zamijeniti novim.

Ovdje smo u nastavku naveli dva primjera ažuriranja elementa 2-D matrice.

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

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

U gornjem programu odabrani su element prvog reda i trećeg stupca te je ažurirana vrijednost podataka u 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.

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

Ovdje smo koristili funkciju scanf za čitanje vrijednosti koje je dao korisnik prema vlastitom izboru za položaj elementa na temelju brojeva redaka i stupaca.

Izlaz je sljedeći:

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

Sada, kao što znamo, u 2-D nizu izjavljujemo 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?

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.

Brisanje elemenata u dvodnevnom polju

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

Napisali smo program u jednostavnom formatu tako da se pojam različitih operacija u dvodnevnom polju može lako razumjeti.

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

Slijedeći koraci:

  1. Vrijednosti matrice uzimaju dinamično
  2. Od korisnika se traži da upiše broj (indeks) retka koji mora biti izbrisan.
  3. Upotrebljavajući za iteraciju petlje, uspoređujemo podudaraju li se broj retka i korisnički unos ili nisu.
  4. Ako se podudaraju i ako je broj retka manji od veličine niza, ispisujemo sljedeći redak. Inače, tiskamo redak kakav jest.

Izlaz je sljedeći:

Što ako, dodijelim 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 brojeve 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 sada izbrisati određeni element za 2-d niz?

Zaključak

U ovom smo odjeljku naučili osnovne operacije na dvodimenzionalnim nizovima. Ova 2-d polja su korisna u stvarnom vremenu s operacijama matrice i mnogim matematičkim proračunima.

Nizovi se mogu koristiti i za prikazivanje kalendara, položaja na parkiralištu, a čak možemo i igrati šah.

Mnoge druge strukture podataka kao što su Povezani popisi, Red, Grafovi, Drveće moraju koristiti ovaj koncept dvodimenzionalnih nizova kao osnovni zahtjev za spremanje i pristup lokacijama različitih elemenata. Pokušajte riješiti osnovne operacije 2d matrica i zabavite se učeći C.

Preporučeni članci

Ovo je vodič za dvodimenzionalne nizove u C. Ovdje razgovaramo o uvodu, inicijalizaciji nizova, umetanju, ažuriranju, brisanju elemenata u dvodimatskim nizovima. Možete pogledati i sljedeće članke da biste saznali više -

  1. Nizovi u R
  2. Prednosti Array
  3. Nizi u C ++
  4. Nizovi u JavaScript-u
  5. Primjeri nizova u C #
  6. Nizovi u PHP-u

Kategorija: