Download as pdf or txt
Download as pdf or txt
You are on page 1of 11

C/C++

PROGRAMSKI JEZIK C
Nizovi
Nizovi
 Pored skalarnih tipova podataka C jezik podržava
i složene tipove podatke
 kolekcije podataka koje mogu biti
 Nizovi
 Strukture
 Unije

 Niz je kolekcija podataka istog tipa


 Pojedinačni podatak je element niza i pristupa mu se
preko njegove pozicije u nizu
 Najprostiji tip niza je jednodimenzioni niz
Jednodimenzionalni niz
 Elementi jednodimenzionog se smeštaju jedan do drugog
 Niz se deklariše navođenjem tipa elemenata niza i broja elemenata niza u uglatim
zagradama [,]
int a[10];
 Tip elemenata niza je proizvoljan tip
 Broj elemenata niza je bilo koji celobrojni konstantni izraz
 Obično se zbog lakše izmene dužina niza uvodi makroom
#define N 10

int a[N];
 Pristup pojedinačnom element niza se vrši preko njegove pozicije u nizu
 Pozicija elementa u nizu je odredjena njegovim indeksom
 indeks prvog elementa je 0, drugog 1, … n-tog n-1
 Konačno selekcija pojedinačnog elementa niza se vrši navođenjem
imena niza za kojim sledi njegov indeks u uglastim zagradama
a[0], a[1], a[2], …, a[9]
Jednodimenzionalni niz
 Izraz a[i] je l-vrednost odnosno može biti levi operand operatora dodeljivanja
a[0]=1;
++a[i];
 Nizovi i for petlje obično idu zajedno sum=0;
for(i=0; i<N; i++) scanf(“%d”, &a[i]); for(i=0; i<N; i++) sum+=a[i];
 Korektnost indeksiranja se ne proverava, pa je ponašanje programa u slučaju da je
indeks van granica nepredvidivo
int a[10], I;
for(i=1; i<=10; i++) a[i]=0;
 Indeks niza može biti proizvoljan celobrojni izraz,
a[i+10*j]=0;
 To može biti i izraz sa bočnim efektom

i=0;
while(i<N) a[i++]=0;
Jednodimenzionalni niz
 Niz se može inicijalizovati na sličan nacin kao i skalarna
promenljiva, zajedno sa deklaracijom
 Inicijalizator niza je lista konstantnih izraza u vitičastim
zagradama {,}
int a[10]={1,2,3,4,5,6,7,8,9,10};
 Ako je lista kraća od dužine niza ostali elementi se inicijalizuju sa 0
int a[10]={0}; /* svi se inicijalizuju sa 0 */
 Lista ne može biti prazna, niti biti dužine veće od dužine niza. Ako
je prisutan inicijalizator dužina niza se može izostaviti.
int a[]={1,2,3,4,5,6,7,8,9};
Jednodimenzionalni niz
 Niza se može inicijalizovati tzv. označivačima
int a[10]={[2]=1,[5]=6}; //{0,0,1,0,0,6,0,0,0,0}
 Redosled označivača nije bitan
int a[10]={[5]=6,[2]=1};
int a[10]={1,2,[4]=6,7,8,[2]=1,23}; //{1,2,1,23,6,7,8,0,0,0}
 Ako se izostavi, dužina niza je odrđena najvišim
označivačem
int a[]={[2]=1}; //{0,0,1}
 sizeof operator vraća dužinu niza u bajtovima
sizeof(a)/sizeof(a[0]) vrednost izraza je dužina niza a
Višedimenzionalni niz
 Niz može imati i više dimenzija
 Matrica je dvodimenzionalni niz
 int m[2][3] m[0][0] m[0][1] m[0][2]
m[1][0] m[1][1] m[1][2]
 m[i] selekcija vrste sa indeksom i
 m[i][j] selekcija elementa sa indeksom j u vrsti sa indeksom i
m[i, j] m[j] operator ,
 U C jeziku matrica se smešta kao jednodimenzionalni niz
 po vrstama
m[0][0] m[0][1] m[0][2] m[1][0] m[1][1] m[1][2]
 Slično višedimenzionalni niz se smešta kao jednodimenzionalni niz
 Krajnji desni indeks se najbrže menja
Višedimenzionalni niz
 Višedimenzioni nizovi i ugnježdene petlje
#define N 10

main() {

double ident[N][N];
int row, col;

for(row=0; row<N; row++)


for(col=0; col<N; col++)
if(row==col) ident[row][col]=1.0;
else ident[row][col]=0.0;

}
Inicijalizacija višedimenzionalnog niza

 Ugnježdavanjem inicijalizatora jednodimenzionalnog niza


 Svaki pojedinačni inicijalizator inicijalizuje pojedinu vrstu
matrice m
int m[2][3]={{1, 2, 3},
{4, 5, 6}};

 Neinicijalizovani elementi se inicijalizuju sa 0, npr.


 inicijalizator vrste ne inicijalizuje sve elemente vrste
 ne navede se kompletan inicijalizator vrste
 Dozvoljeno je izostaviti unutrašnje vitičaste zagrade
 Kao jednodimenzionalni niz
 inicijalizuju se redom vrste elementima inicijalizatora
 Analogno se inicijalizuje niz sa više od dve dimenzije
Konstantni niz
 Niz se može proglasiti konstantnim
const char hex_char[]={‘0’, ‘1’, …, ‘9’, ‘A’, ‘B’, …, ‘F’};
 Slično promenljiva proizvoljnog tipa se može
proglasiti konstantom
const int jedan=1;
Zadaci za vežbu
1. Kopirati niz a u niz b
2. Prebrojati pojavljivanje svake cifre u datom neoznačenom celom broju
3. Prebrojati pojavljivanje svakog malog slova u tekstu koji se unosi sa
tastature (tačka za kraj)
4. Prebrojati pojavljivanje svake cifre u tekstu koji se unosi sa tastature
(tačka za kraj)
5. Formirati fibonačijev niz duzine n
6. Napisati program za slučajno kretanje po matrici formata 10x10. Kreće
se od gornjeg levog polja. Ne moze se ići na polje koje je vec posećeno.
Broj koraka se unosi.
7. Obrnuti red slova u datoj reči
8. Test da li je data reč palindrom
9. Proveriti da li su date reči anagram (jedna se dobija iz druge nekom
permutacijom)

You might also like