nizovi - jussmz.com.ba · kadić neđad, 2016 3 •to je moguće izvesti pomoću strukture podataka...

41
NIZOVI Kadić Neđad, 2016 1

Upload: others

Post on 31-Aug-2019

2 views

Category:

Documents


0 download

TRANSCRIPT

NIZOVI

Kadić Neđad, 2016 1

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 22

PRIMJER 4

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 37

ispis indeksa i vrijednosti

i-tog člana niza

PRIMJER 8

‘\0’

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