NIZOVI - jussmz.com.ba · Kadić Neđad, 2016 3 •To je moguće izvesti pomoću strukture podataka...
Transcript of NIZOVI - jussmz.com.ba · Kadić Neđad, 2016 3 •To je moguće izvesti pomoću strukture podataka...
Kadić Neđad, 2016 2
SKUPOVI PODATAKA ISTOG TIPA
• U programima ponekad treba koristiti više podataka koji čine jednu
cjelinu, a istog su tipa.
• Ako bi se za svaki podatak deklarirala zasebna varijabla, korištenje
tih podataka bilo bi vrlo otežano.
• Ako bi trebalo nad takvim podacima provesti iste naredbe to bi još
bilo dodatno otežavajuće.
• Skupove podataka istog tipa možemo pohraniti pod zajedničkim
imenom, a redni broj podatka u skupu označiti brojem (indeksom).
Kadić Neđad, 2016 3
• To je moguće izvesti pomoću strukture podataka koja se naziva niz (polje,
array).
• NIZ je konačni skup podataka istog tipa koji čine cjelinu.
• Sastoji se od članova niza (podataka), položaj člana unutar niza označen
je cjelobrojnim brojčanim indeksom (jednim ili s više, ovisno o vrsti niza).
SKUPOVI PODATAKA ISTOG TIPA
Kadić Neđad, 2016 4
JEDNODIMENZIONALNI NIZ
• Nizovi mogu biti jednodimenzionalni ili višedimenzionalni.
• Najjednostavniji jednodimenzionalni nizovi su oni kod kojih su
članovi (podaci) poredani jedan iza drugog.
Kadić Neđad, 2016 5
• Svaki od članova niza označava se cjelobrojnim indeksom koji
odgovara njegovoj udaljenosti od prvog člana i to tako da:
• prvi član niza ima indeks 0,
• posljednji član ima indeks za jedan manji od dužine niza.
A0 A1 A2 A3 A4 A5
JEDNODIMENZIONALNI NIZ
Kadić Neđad, 2016 6
• Deklaracija jednodimenzionalnog niza je oblika:
tip_niza naziv_niza [dimenzija_niza]
tip podataka koji
se pohranjuju u
niz
broj članova niza
DEKLARACIJA NIZA
Kadić Neđad, 2016 7
Primjer:
• Jednodimenzionalni niz se deklarira, npr.:
int A 12;
• Niz A je jednodimenzionalni niz od 12 članova koji su po tipu
cjelobrojne vrijednosti.
DEKLARACIJA NIZA
Kadić Neđad, 2016 8
• Dužina deklariranog niza se ne može mijenjati za vrijeme izvođenja
programa.
• Podaci, članovi niza mogu biti bilo kojeg tipa (int, float i dr.), npr.:
int a[100];
float X[20];
char tekst[50];
DEKLARACIJA NIZA
Kadić Neđad, 2016 9
• Pri deklaraciji ime niza se ne smije podudarati sa imenom neke od
varijabli.
• U slučaju neispravne deklaracije prevoditelj će javiti grešku:
neispravna
deklaracija
DEKLARACIJA NIZA
Kadić Neđad, 2016 10
PRIDRUŽIVANJE VRIJEDNOSTI
• Članovima niza vrijednosti se mogu pridružiti prilikom deklaracije tako da se
navedu nakon operatora pridruživanja unutar para vitičastih zagrada, odvojene
zarezom.
Primjer:
• Prethodno deklariranom jednodimenzionalnom nizu A od 6 članova treba pridružiti
sljedeće vrijednosti:
A0 A1 A2 A3 A4 A5
2 34 1 67 99 7
Kadić Neđad, 2016 11
Primjer:
• Članovima niza vrijednosti se pridružuju na slijedeći način:
int A 6 = {1,1,2,3,5,8};
ili bez navedene dužine niza:
int A = {1,1,2,3,5,8};
(kompajler sam “zaključuje” da niz ima šest članova i nakon toga se
dužina niza više ne može mijenjati).
PRIDRUŽIVANJE VRIJEDNOSTI
Kadić Neđad, 2016 12
• Članovi niza se razlikuju po indeksu koji se mijenja od 0 do n-1 (ako je
n ukupan broj članova niza)
• Za upis ili ispis članova niza pogodno je koristiti petlju for.
PRIDRUŽIVANJE VRIJEDNOSTI
• Ispisati prvih 10 članova Fibonačijevog niza
Kadić Neđad, 2016 13
PRIMJER 1
Prvih 10 članova Fibonačijevog niza :
1 1 2 3 5 8 13 21 34 55
Kadić Neđad, 2016 14
PRIMJER 1 deklaracija niza f
uz pridruživanje
vrijednosti
članovima niza
Uobičajeni ispis
niza for petljom
kod kojeg
kontrolna
varijabla ide od 0
Kadić Neđad, 2016 15
• Potrebno je unijeti članove jednodimenzionalnog niza 2, 6, 18,
54, 162, 486 prilikom deklaracije pa ih ispisati u obliku:
PRIMJER 2
Niz[0]=2 Niz[1]=6 Niz[2]=18 Niz[3]=54 Niz[4]=162 Niz[5]=486
Kadić Neđad, 2016 16
PRIMJER 2deklaracija niza A
sa pridruživanjem
vrijednosti
članovima niza
ispis vrijednosti i-tog
člana niza
Kadić Neđad, 2016 17
DUŽINA NIZA (PRI DEKLARACIJI)
• Dužina niza koja se navodi pri deklaraciji mora biti veća ili jednaka
broju članova niza.
• Ako je deklarirana dužina niza veća od broja pridruženih podataka,
preostalim se članovima pridružuje vrijednost 0.
Kadić Neđad, 2016 18
• Članovima niza niz[6] iz prethodnog primjera, pridružiti samo tri
podatka int niz[6]={2,6,18};
(Posljedica: Preostalim se članovima niza pridružena je 0.)
PRIMJER 3
Kadić Neđad, 2016 19
• Treba unijeti N članova (N je manji ili jednak 15) jednodimenzionalnog
niza, pa ih ispisati i sabrati.
• Ispis neka bude oblika:
Upisi broj clanova niza(max 15):
Upisi .... clan niza: ...
Upisi .... clan niza: ...
....
....
Clanovi niza su ... ... ...
Ako je broj clanova niza... . Suma
njegovih clanova je ...
PRIMJER 4
Kadić Neđad, 2016 20
• Pošto niz nije moguće deklarisati a da ne znamo koliko će imati članova,
to moramo pretpostaviti niz može imati neki maksimalan broj elemenata.
• Kako N nije unaprijed poznat, treba ga unijeti pa provjeriti da li je
N<=15 i N>0 (mi pretpostavljamo da je najveći niz dužine 15).
• Prva for petlja će poslužiti za upis i sabiranje članova niza, a druga za
ispis.
PRIMJER 4
Kadić Neđad, 2016 21
PRIMJER 4n mora biti veći od 0 i manji ili jednak 15
Sve dok taj uslov ne bude zadovoljen
korisniku će se ispisivati ista poruka
Unošenje elemenata niza i
računanje sume.
Ispis elemenata niza
Kadić Neđad, 2016 23
DVODIMENZIONALNI NIZ
• Dvodimenzionalno niz se može predstaviti tablicom sa zadanim
brojem redova i kolona.
• Položaj člana unutar dvodimenzionalnog niza označen je sa dva
cjelobrojna indeksa.
• Prvi indeks određuje red, a drugi kolonu.
Kadić Neđad, 2016 24
• Prvi član dvodimenzionalnog niza (prvi red, prva kolona) označen
je indeksom: [0,0]
• Posljednji (posljednji red, posljednja kolona) indeksom:
[(broj reda-1),(broj kolona-1)].
DVODIMENZIONALNI NIZ
Kadić Neđad, 2016 25
DEKLARACIJA DVODIMENZIONALNOG NIZA
• Dvodimenzionalno niz se deklarira, npr.:
int X [2] [3];
• Za dvodimenzionalno niz X2 3, indeksi su:
X0,0, X0,1, X0,2
X1,0, X1,1, X1,2
Kadić Neđad, 2016 26
• Vrijednosti članovima dvodimenzionalnog niza pridružuju se tako da
se vrijednosti članova svakog reda navedu unutar para vitičastih
zagrada.
{ {...,...,...},
{...,...,...},
...
{...,...,...};
DVODIMENZIONALNI NIZ
Kadić Neđad, 2016 27
PRIDRUŽIVANJE VRIJEDNOSTI
• Prethodno deklariranom nizu (int X [2] [3]) treba pridružiti sljedeće
vrijednosti podataka:
• Članovima dvodimenzionalnog niza X [2] [3] se vrijednosti podataka
pridružuju ovako: int X[2][3] = { {12,25,38},
{51,64,77} };
1. kolona 2. kolona 3. kolona
1.red 12 25 38
2.red 51 64 77
Kadić Neđad, 2016 28
• Potrebno je unijeti članove dvodimenzionalnog niza, pa ih ispisati u
obliku tablice.
• Ispis treba izgledati ovako:
PRIMJER 5
12 25 38
51 64 77
Kadić Neđad, 2016 29
deklaracija niza X i
pridruživanje vrijednosti
članovima niza
ispis vrijednosti [ i ] [ j ]
člana niza
PRIMJER 5
Kadić Neđad, 2016 30
• Ako se prethodni primjer dopuni, uz vrijednost pojedinog člana
niza bit će prikazani i njegovi indeksi.
cout<<"X["<<i<<„]["<<j<<"]= "<<X[i][j]<<" ";
PRIMJER 6
Kadić Neđad, 2016 31
DUŽINA NIZA (PRI DEKLARACIJI)
• Ako se kod pridruživanja vrijednosti izostave vitičaste zagrade koje
dodjeljuju vrijednosti po redovima, članovi se popunjavaju po redu
(red po red).
• Ako je deklarirana dužina niza veća od broja pridruženih podataka,
preostalim se članovima pridružuje vrijednost 0.
Kadić Neđad, 2016 32
• Članovima niza X[2][3], iz prethodnog primjera, pridružiti samo
četiri podatka: int X[2][3]={12,25,38,51};
(Rezultat: Preostalim se članovima pridružuje 0.)
PRIMJER 7
Kadić Neđad, 2016 33
ZNAK
• Ako je podatak znak, njegova oznaka tipa podataka je char.
• Podatak tipa char je predstavljen jednim znakom unutar jednostrukih
navodnika ili ASCII vrijednošću tog znaka.
Kadić Neđad, 2016 34
ZNAKOVNI NIZ
• Više znakova čini znakovni niz (engl. character string).
• Znakovni niz je jednodimenzionalni niz čiji su članovi znakovi (char).
• Znakovnom nizu vrijednosti se pridružuju tako da se navedu nakon
operatora pridruživanja, između para dvostrukih navodnika. Npr.:
char X [] = “Ovo je znakovni niz”
Kadić Neđad, 2016 35
• Znakovni niz se u memoriju izgleda ovako:
• Svaki znakovni niz završava zaključnim znakom ‘\0’ (engl. null
character).
• Taj znak ne treba posebno navoditi, ali treba znati da on zauzima
jedno mjesto u memoriji i da on ne predstavlja nulu nego „ništa”.
‘O’ ‘v’ ‘o’ ‘ ‘ ‘j’ ‘e’ ‘ ‘ ‘z’ ‘n’ ‘a’ ‘k’ ‘o’ ‘v’ ‘n’ ‘i’ ‘ ‘ ‘n’ ‘i’ ‘z’ ‘\0’
ZNAKOVNI NIZ
Kadić Neđad, 2016 36
• Za svaki član znakovnog niza:
“Ovo je znakovni niz”
treba zapisati indeks i njegovu vrijednost.
• Ispis treba izgledati ovako:
PRIMJER 8
Kadić Neđad, 2016 38
ZNAKOVNI NIZ
• Ako se znakovni niz proteže kroz više redova, završetak svakog reda
se označava lijevom kosom crtom (\ engl. backslash).
• Kosa crta (\) označava da će se ispis protezati do kraja zaslona a
zatim preći u novi red.
Kadić Neđad, 2016 39
• Treba prebrojati koliko se puta u znakovnom nizu pojavljuje slovo o :
• Oj, Omere sreco pobro, nesto ti danas nisam dobro?
U recenici:
Oj, Omere sreco pobro, nesto ti danas
nisam dobro?
Ima ... slova o.
PRIMJER 9
Kadić Neđad, 2016 40
Provjeravamo da li je sadržaj i-
tog člana niza jednak znaku o
ili O?
Ako jeste, brojač se uveća za 1.
PRIMJER 9
PITANJA
1.Šta je niz?
2. Od čega je sastavljen niz i kako je urađeno njegovo indeksiranje?
3. Pojasniti deklaraciju jednodimenzionalnog niza.
4. Kako se pridružuju vrijednosti nizu prilikom deklaracije?
5. Kako se može predstaviti dvodimenzionalni niz?
6. Pojasniti i napisati deklaraciju dvodimenzionalnog niza.
7. Šta je znakovni niz i kako se pridružuju vrijednosti zankovnom nizu?
Kadić Neđad, 2016 41