Niz u C

Uvod

Jednostavnim riječima, an niz je grupa varijabli or u linearna zbirka sličnih elemenata.

Pod „slični elementi“ podrazumijevamo da su svi podaci od isti tip podataka koji može biti ili int, char, float, double, itd. Ako kažemo, neki podaci u nizu su tipa 'float', a ostali su tipa 'char', ovo nije valjano.

Primjer, int x [5];

Gornji primjer deklarira niz tipa 'int' koji je kolekcija od 5 elemenata.

Niz u C

Zašto niz u C?

Niz je metoda koja naše složene probleme može pretvoriti u jednostavnije. Pretpostavimo da učenik treba da pohrani ocjene za 10 predmeta i izračuna svoj ukupni procenat. Dakle, deklarisanje 10 različitih varijabli za svaki predmet nije nemoguće nego veći zadatak, a šta ako broj subjekata krene na 50 ili čak više. Ovdje je niz rješenje za takve probleme.

Deklaracija niza u C

Sintaksa:

tip podataka ime_niza [veličina_niza];

Primjer: int n[10];

U gornjoj deklaraciji, deklarisan je niz tipa 'int'.

n[ ] se koristi za označavanje niza 'n', što znači da je 'n' niz.

Niz se može deklarisati na mnogo načina, ali postoje neki načini koji nisu dovoljno valjani da bi se deklarisao niz. Neke od važećih i nevažećih deklaracija su napisane u nastavku.

int n[10]; deklarisan je niz tipa 'int' veličina 10 tj. 'n' niz je kolekcija od 10 elemenata tipa 'int'.

 

int n[ ]; je nevažeći deklaracija jer veličina niza nije data. Važno je deklarirati niz njegovom veličinom jer kompajler treba da dodijeli prostor u memoriji za niz što nije moguće ako su zagrade '[ ]' prazne. Naredba 'int n[10]' je dovoljno valjana jer će sada kompajler upoznati veličinu niza uz pomoć broja elemenata koje može pohraniti, a zatim će dodijeliti prostor za 10 elemenata u memoriji.

 

int n[ ] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; je validan deklaracija. Deklaracija je napravljena i vrednosti nizu se dodeljuju istovremeno i niz je inicijalizirano takođe. Dakle, možemo preskočiti veličinu niza jer će kompajler saznati o veličini iz zadanih vrijednosti tj. {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}.

 

int n[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; je i validan inicijalizacija.

 

int n[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; is nije validan inicijalizacija jer su elementi u nizu veći od unesene veličine i to će dati grešku.

12345678910

 

 

Nema prostora za ostale elemente u nizu.

 

int n[10] = {1, 2, 3, 4, 5, 6, 7 } ; je validan inicijalizacija. U takvim slučajevima kada su elementi u nizu manji od njihove veličine tada se u preostalim blokovima popunjava 0.

1234567000

 

Ako nema inicijalizacije s deklaracijom, postoje vrijednosti smeća, tj. 0 u svim blokovima.

Deklaracija niza u C

Indeks niza u C

Svaki element u nizu ima svoju određenu vrijednost indeksa.

int x[5]={10, 20, 30, 40, 50};

elementi1020304050
indeks01234

          

Niz 'x' je predstavljen gore sa svojim elementima i vrijednostima indeksa. 0,1,2,3,4 su 'pokazatelji'.

Vrijednost indeksa prvog elementa je uvijek 0 ili

Indeks niza počinje sa 0.

Uz pomoć ovih indeksa, možemo nasumično pristupiti bilo kojem elementu niza.

Sintaksa: niz _name [ index]

Niz 'x' napisan iznad ima 5 elemenata. Dakle, ovim elementima možemo pristupiti kao:

x[0] će vratiti vrijednost prvog elementa, tj. 10.

Slično tome,
x[1] je 20
x[2] je 30
x[3] je 40
x[4] je 50

Indeks niza u C

Štaviše, x[0], x[1] su iste kao varijable koje smo do sada koristili. Možemo dodijeliti vrijednosti ovim varijablama također kao x[1]=89; kao što radimo sa drugim varijablama (x=5;, y=10;, itd.)

Dodjeljivanje vrijednosti nizu u C

Izraz 'inicijalizacija' o kojem se gore raspravljalo će postati jasan s ovom temom.

Vrijednosti se mogu dodijeliti nizu na različite načine. Prvi način je dodijeliti vrijednosti elementima niza tokom deklaracije.

int n[ ] = {1, 2, 3, 4, 5 } ; pisanjem ovoga mi deklarišemo i dodeljujemo vrednosti nizu u isto vreme. Dakle, mi smo inicijalizirali niz.

Drugi način je da prvo deklarirate niz, a zatim zasebno dodijelite vrijednosti.

int n[3]; Ova izjava deklarira niz, ali vrijednosti još nisu dodijeljene. 'int n[3]' će dodijeliti prostor od 3 cijela broja u memoriji, ali sve dok i ako nema dodjele vrijednosti, ti razmaci ostaju prazni. Da bismo ga inicijalizirali, moramo dodijeliti vrijednost svakom od elemenata niza,

n[0]=2;

n[1]=9;

n[2]=6;

Ovo je isto kao što deklariramo varijable, a zatim im dodjeljujemo vrijednosti.

int x, y;

x = 89;

y=10;

Ukratko, dvije metode dodjeljivanja vrijednosti nizu su:

Metod: 1 Deklaracija i dodjela se vrše u isto vrijeme.

int n[ ]= {1,2,3,4,5 };

Metod: 2 Prvo, deklarirajte niz njegovom veličinom. Kasnije dodijelite vrijednosti elementima niza.

int n[ 3];

n[0]=5;

n[1]=8;

n[2]=4;

 

Niz može biti bilo kojeg tipa podataka int, char, float, itd. Pogledajte primjere nizova različitih tipova podataka.

float f[ ]={ 1.1, 2.2, 3.3};

char c[ ]={'a', 'b', 'c'};

 

Hajde da napravimo program za izračunavanje prosječne ocjene i ukupnog procenta učenika iz njegovih 5 predmeta. Svaki predmet ima 100 bodova, a predmeti su fizika, hemija, matematika, engleski jezik i računar.

PROGRAM

#include int main() { int M[5]; float A; printf("Unesite ocjene u fizici:"); scanf("%d",&M[0]); printf("Unesite oznake u hemiji:"); scanf("%d",&M[1]); printf("Unesite ocjene u matematici:"); scanf("%d",&M[2]); printf("Unesite oznake na engleskom:"); scanf("%d",&M[3]); printf("Unesite oznake u kompjuter:"); scanf("%d",&M[4]); int sum=( M[0]+M[1]+M[2]+M[3]+M[4]); A=zbir/5.0; printf("Prosječne ocjene:%.2f",A); postotak float=(suma/500.0)*100; printf("\nPercentage=%.2f",postotak); return 0; }

 

IZLAZ:

Dodjeljivanje vrijednosti nizu u C

Primjer vezan za naš praktični život čini koncept jasnijim i još boljim razumijevanjem.

int M[5]; ovdje samo deklariramo niz veličine 5 bez inicijalizacije jer želimo da korisnik unese svoje podatke.

Nakon toga, uzimajući unos od korisnika, tretirali smo elemente niza na potpuno sličan način kao što smo tretirali normalne varijable. &oznake[0], &oznake[1] predstavljaju adrese oznaka[0], oznaka[1] respektivno.

Ostatak koda ima operaciju koja je potrebna za izračunavanje prosječnih ocjena i procenta.

A=zbir/5.0; 'A' je deklarisan kao varijabla tipa float jer prosjek vrijednosti cijelih brojeva također može biti float. Zato je podjela 'suma' napravljena sa 5.0 tako da se vraća float vrijednost koja će tada biti dodijeljena 'A'. Ali ako se 'zbroj' podijeli sa 5 onda će kao rezultat dati cjelobrojna vrijednost.

Upotreba for petlje u nizovima u C

Petlje sa nizovima su najlakši način za rješavanje teških problema.

PROGRAM

#include int main( ) { int i,j; int A[5]; for(i=0; i<5;i++) { printf("Unesite vrijednost n[%d]",i); scanf("%d",&A[i]); } for(j=0;j<5;j++) { printf("A[%d]=%d\n",j,A[j]); } return 0; }

 

IZLAZ:

Upotreba for petlje u nizovima u C

Gornji kod je najjednostavniji pristup koji će vas upoznati sa petljama i nizovima. Deklarisali smo dvije varijable 'i','j'kao iteratori i niz 'A' veličine 5. Kod je jednostavan, prvo moramo unijeti naše podatke, a zatim će se uneseni podaci prikazati kao izlaz.

Prva petlja 'for' koja ima 'i' iterator služi za uzimanje inputa od korisnika.

for(i=0; i<5;i++) 'i' se inicijalizira sa 0 pošto je početni indeks niza 0 i ide do 4.

Isto je i sa for(j=0;j<5;j++) Naredba 'j' počinje od 0 i završava se na 4. Ova petlja 'for' će prikazati podatke koje je korisnik unio u nizu.

Ništa nije složeno kao što možemo vidjeti u izlaznom dijelu. Kao što je već rečeno, tretirajte elemente niza kao normalne varijable i stvari će se odvijati u skladu s tim.

Napomena: Dodjela memorije u nizu je kontinuirana. Na primjer, ako je adresa prvog elementa niza indeksa 0 22334456 onda će vrijednost adrese drugog elementa sa indeksom 1 biti 22334460 (22334456+4; pošto je 4 veličina cijelog broja), a treća će biti 22334464 i tako dalje. Važno je napomenuti da se svi elementi niza pohranjuju zajedno u serijskom redoslijedu.

Pokazivač niza u C

Svaki koncept u programskom jeziku je razvijen da olakša druge alate. Upotreba niza u pokazivačima je veoma važna tema. Dakle, svi smo završili sa deklaracijom i inicijalizacijom niza. Sada ćemo vidjeti kako možemo koristiti nizove u pokazivačima. Ali prije nego što nastavite, nadamo se da ste prošli kroz smjernice teme i uvježbali dovoljno problema u vezi s tim. Ako ne, onda prvo razjasnite osnove pokazivača kako biste bolje razumjeli ovaj zanimljiv koncept.

Pošto svi znamo 'Pointer je varijabla koja pokazuje na drugu varijablu. Pohranjuje adresu vrijednosti varijable na koju ukazuje. Recimo da 'A' pokazuje na 'B' znači da su i 'A' i 'B' varijable, ali 'A' je pokazivač. Vrijednost 'A' je vrijednost adrese 'B'.

Pretpostavimo da imamo niz pod nazivom 'n'. 'p' je varijabla koja pokazuje na 'n' što znači da je 'p' pokazivač na 'n'. Sada se niz sastoji od više elemenata pa se postavlja pitanje na koji element niza, pokazivač 'p' pokazuje.

Pointer 'p' sadrži vrijednost adrese prvog elementa, tj. n[0] niza.

Pointer niza je pokazivač na njegov prvi element ili je ime niza pokazivač na prvi element niza.

int student [5]; int *p; p=&student[0];

 

Hajde sada da razumemo kod napisan iznad.

'student' je niz, a 'p' je pokazivač na 'student' niz tada 'p' ukazuje na studenta[0]. Zato izjava p=&student[0]; dodjeljuje vrijednost adrese prvog elementa niza 'p'.

int student [5];

int *p;

p=student;

Gore napisani kod je također važeći. Izjava p=student; radi isto kao i prethodni. Sam naziv niza je pokazivač na prvi element niza.

p=student; ova izjava takođe dodeljuje 'p' adresu prvog elementa niza 'student'.

Pošto 'p' ukazuje na prvi element niza onda vrijednost '*p' će biti jednak prvom elementu niza, tj *p= student[0]

Šta je onda s ostalim elementima niza?

Ako se '*p' odnosi na prvi element niza onda *(p+1) odnosi se na drugi element niza, *(p+2) odnosi se na treći element niza, i tako dalje.

Dakle, završili smo s teorijskim dijelom pokazivača koji se odnosi na niz. Sada pogledajte programe koji će vam dati bolje razumijevanje.

PROGRAM

#include int main() { int A[5]={12,24,36,48,60}; int *p; int i; p=A; printf("Adresna vrijednost A[0]: %d\n",p); for(i=0;i<5;i++) { printf("Adresa A[%d]: %d\n",i,&A[i]); } return 0; }

 

IZLAZ:

Pokazivač niza u C

Dakle, prije svega smo dokazali da je ime niza pokazivač na prvi element niza. Kao izjava p=A; daje izlaz koji je jednak vrijednosti adrese prvog elementa.

Nakon upotrebe 'for' petlje ispisujemo vrijednost adrese svakog elementa koja jasno pokazuje da su sve vrijednosti u rastućem redoslijedu s razlikom 4.

PROGRAM

#include int main() { int A[5]={12,24,36,48,60}; int *p; int i; p=A; for(i=0;i<5;i++) { printf("Vrijednost *(p+%d)=%d\n",i,*(p+i)); } return 0; }

 

IZLAZ:

Niz u C primjeru

Kako 'p' pokazuje na prvi element niza, tako *p ili *(p+0) sadrži vrijednost A[0]. Slično, *(p+1) je jednako A[1] i tako dalje kao što je prikazano u izlaznom prozoru.

Ostavite komentar

Ova stranica koristi Akismet kako bi smanjila neželjenu poštu. Saznajte kako se podaci vašeg komentara obrađuju.