39
Skupovi podataka istog tipa Skupovi podataka istog tipa Skupove podataka istog tipa valjalo bi Skupove podataka istog tipa valjalo bi pohraniti pohraniti pod zajedničkim imenom pod zajedničkim imenom, a , a redni broj podatka u redni broj podatka u skupu označiti brojem skupu označiti brojem (indeksom). (indeksom). 1 Takav način rada omogućavaju Takav način rada omogućavaju polja (nizovi) polja (nizovi) podataka podataka.

Skupovi podataka istog tipa - riteh.uniri.hr · PDF fileSkupovi podataka istog tipa nn Skupove podataka istog tipa valjalo bi pohraniti pod zajedničkim imenom ,, aa redni broj podatka

Embed Size (px)

Citation preview

Skupovi podataka istog tipaSkupovi podataka istog tipa

nn Skupove podataka istog tipa valjalo biSkupove podataka istog tipa valjalo bi pohraniti pohraniti pod zajedničkim imenompod zajedničkim imenom, a, a redni broj podatka u redni broj podatka u skupu označiti brojemskupu označiti brojem (indeksom).(indeksom).

1

nn Takav način rada omogućavajuTakav način rada omogućavaju polja (nizovi) polja (nizovi) podatakapodataka..

Polje podatakaPolje podataka

nn PoljePolje je je konačni skup podatakakonačni skup podataka istog tipaistog tipa koji koji predstavljajupredstavljaju jednu cjelinujednu cjelinu..

nn SastojiSastoji se se od članova polja od članova polja (podataka).(podataka).

2

nn Položaj članaPoložaj člana unutar poljaunutar polja označen je označen je cjelobrojnim brojčanim indeksom cjelobrojnim brojčanim indeksom (jednim ili s (jednim ili s više, ovisno o vrsti polja)više, ovisno o vrsti polja)..

Jednodimenzionalno poljeJednodimenzionalno polje

nn Polja Polja mogu biti jedno ili više dimenzionalna.mogu biti jedno ili više dimenzionalna.

nn Najjednostavnija su Najjednostavnija su jednodimenzionalna polja jednodimenzionalna polja kod kojih sukod kojih su članovi članovi (podaci) (podaci) poredani u niz poredani u niz

3

kod kojih sukod kojih su članovi članovi (podaci) (podaci) poredani u niz poredani u niz (jedan iza drugog)(jedan iza drugog)..

Jednodimenzionalno poljeJednodimenzionalno polje

nn Svaki se od članova niza označava cjelobrojnim Svaki se od članova niza označava cjelobrojnim indeksom kojiindeksom koji odgovaraodgovara njegovoj udaljenosti od njegovoj udaljenosti od prvog člana prvog člana i toi to tako da:tako da:

4

nn prvi članprvi član niza imaniza ima indeks 0indeks 0, ,

nn posljednji članposljednji član ima indeksima indeks za jedan manji od za jedan manji od duljine polja.duljine polja.

A[0] A[1] A[2] A[3] A[4] A[5]

Deklaracija poljaDeklaracija polja

nn Deklaracija Deklaracija jednodimenzionalnog jednodimenzionalnog polja je polja je oblika:oblika:

ttipip_polja_polja naziv_poljanaziv_polja [dimenzija_polja][dimenzija_polja]

5

ttipip_polja_polja naziv_poljanaziv_polja [dimenzija_polja][dimenzija_polja]

tip podatakatip podataka koji se koji se pohranjuju u poljepohranjuju u polje

broj članova poljabroj članova polja

Deklaracija poljaDeklaracija polja

Primjer:Primjer:

nn Jednodimenzionalno Jednodimenzionalno polje se deklarira, npr.:polje se deklarira, npr.:

int A int A [[[[[[[[66]]]]]]]];;

6

int A int A [[[[[[[[66]]]]]]]];;

nn AA je je jednodimenzionalnojednodimenzionalno polje polje od 6 članovaod 6 članovakoji su koji su po tipu cjelobrojne vrijednostipo tipu cjelobrojne vrijednosti..

Deklaracija poljaDeklaracija polja

nn DuljinaDuljina deklariranog polja sedeklariranog polja se ne može mijenjatine može mijenjatitijekom izvođenjatijekom izvođenja programa.programa.

nn Podaci, Podaci, članovi poljačlanovi polja mogu biti mogu biti bilo kojeg tipabilo kojeg tipa

7

((intint, , floatfloat ili bilo kojeg drugog), npr.:ili bilo kojeg drugog), npr.:

int a[100];int a[100];

float X[20];float X[20];

char tekst[50];char tekst[50];

Deklaracija poljaDeklaracija polja

nn Kao što se pri deklaraciji ne smiju ponavljati ista Kao što se pri deklaraciji ne smiju ponavljati ista imena varijabli, tako se ni imena varijabli, tako se ni ime polja ne smije ime polja ne smije podudarati s imenom neke od varijabli.podudarati s imenom neke od varijabli.

8

nn U slučaju ovakve neispravne deklaracije pri U slučaju ovakve neispravne deklaracije pri prevođenju će se prikazati pogreškaprevođenju će se prikazati pogreška

neispravna neispravna deklaracijadeklaracija

Pridruživanje vrijednostiPridruživanje vrijednosti

nn VrijednostiVrijednosti se članovima polja pridružuju tako se članovima polja pridružuju tako da se navedu nakon operatora pridruživanja da se navedu nakon operatora pridruživanja unutar para vitičastih zagrada, odvojene unutar para vitičastih zagrada, odvojene

9

unutar para vitičastih zagrada, odvojene unutar para vitičastih zagrada, odvojene zarezomzarezom..

Pridruživanje vrijednostiPridruživanje vrijednosti

Primjer:Primjer:

nn Prethodno deklariranom jednodimenzionalnom Prethodno deklariranom jednodimenzionalnom polju A od 6 članova polju A od 6 članova treba pridružiti sljedeće treba pridružiti sljedeće vrijednosti podataka:vrijednosti podataka:

10

vrijednosti podataka:vrijednosti podataka:

A[0] A[1] A[2] A[3] A[4] A[5]

2 34 1 67 99 7

Pridruživanje vrijednostiPridruživanje vrijednosti

Primjer:Primjer:

nn Članovima polja seČlanovima polja se vrijednosti pridružuju: vrijednosti pridružuju: int A int A [[[[[[[[66]]]]]]]] = {2,34,1,67,99,7};= {2,34,1,67,99,7};

11

nn iliili bez navedene duljine poljabez navedene duljine polja::

int A int A [[[[[[[[ ]]]]]]]] = {2,34,1,67,99,7};= {2,34,1,67,99,7};

((prevoditelj sam prevoditelj sam ""zaključuje" da je u listi šest članova izaključuje" da je u listi šest članova inakon toga se duljinanakon toga se duljina polja višepolja više ne može mijenjatine može mijenjati).).

Pridruživanje vrijednostiPridruživanje vrijednosti

nn Pošto se članovi polja razlikuju po indeksu koji Pošto se članovi polja razlikuju po indeksu koji se mijenja od 0 do nse mijenja od 0 do n––1 (ako je n ukupan broj 1 (ako je n ukupan broj članova niza), članova niza), za upis ili ispis članova poljaza upis ili ispis članova polja

12

članova niza), članova niza), za upis ili ispis članova poljaza upis ili ispis članova poljadobro je dobro je rabiti petljurabiti petlju. .

nn Zadatak (jednodimniz5.c):Zadatak (jednodimniz5.c):

nn TrebaTreba unijeti članove jednodimenzionalnog polja iz unijeti članove jednodimenzionalnog polja iz prethodnog primjera, pa ih ispisati.prethodnog primjera, pa ih ispisati.

nn Ispis treba izgledati ovako:Ispis treba izgledati ovako:

13

nn Ispis treba izgledati ovako:Ispis treba izgledati ovako:

#include <stdio.h>#include <stdio.h>

int main ()int main ()

{{

int i;int i;

int A[6]={2,34,1,67,99,7};int A[6]={2,34,1,67,99,7};

for(i=0;i<6;i++)for(i=0;i<6;i++)

{{

14

{{

printf ("A[%i]= %i ",i, A[i]);printf ("A[%i]= %i ",i, A[i]);

}}

return 0;return 0;}}

Duljina polja (pri deklaraciji) Duljina polja (pri deklaraciji)

nn Duljina poljaDuljina polja koja se navodi koja se navodi pri deklaracijipri deklaraciji mora mora bitibiti veća ili jednaka broju članovaveća ili jednaka broju članova polja.polja.

nn Ako je Ako je deklarirana duljinadeklarirana duljina polja polja veća od broja veća od broja

15

pridruženih podatakapridruženih podataka, , preostalim se članovimapreostalim se članovimapridružuje vrijednost pridružuje vrijednost 00. .

Duljina polja (pri deklaraciji)Duljina polja (pri deklaraciji)

Primjer: Primjer:

nn Članovima polja A[6]Članovima polja A[6] iz prethodnog primjera, iz prethodnog primjera, pridružiti pridružiti samo četiri podatkasamo četiri podatka ((int int AA[[66]={2,34,1,67};]={2,34,1,67};).).

16

samo četiri podatkasamo četiri podatka ((int int AA[[66]={2,34,1,67};]={2,34,1,67};).).

(R: Preostalim se članovima pridružuje 0.)(R: Preostalim se članovima pridružuje 0.)

nn Zadatak:Zadatak:

nn Treba Treba unijeti N članova unijeti N članova (N je manji ili jednak 10)(N je manji ili jednak 10)jednodimenzionalnog polja, pa ih ispisati i zbrojiti. jednodimenzionalnog polja, pa ih ispisati i zbrojiti.

nn Ispis neka bude oblika:Ispis neka bude oblika:

17

Upisi broj clanova polja:Upisi X[...] clan polja:........

Ako je N=..., zbroj clanova polja iznosi ....

nn Kako N nije unaprijed poznat, treba ga Kako N nije unaprijed poznat, treba ga unijeti unijeti pa provjeriti je li N <= 10 i veći od pa provjeriti je li N <= 10 i veći od 0(polja_zbroj1.c).0(polja_zbroj1.c).

18

nn Provjera se izvodi, npr. Provjera se izvodi, npr. do do –– whilewhile petljom ili petljom ili ififgrananjem.grananjem.

nn Prva Prva forfor petlja će poslužiti za petlja će poslužiti za upis i zbrajanjeupis i zbrajanječlanova polja, a članova polja, a druga za ispis rezultatadruga za ispis rezultata..

ZnakZnak

nn Ako jeAko je podatak znak, podatak znak, njegova oznaka tipa je njegova oznaka tipa je charchar. .

nn Podatak tipa Podatak tipa charchar je predstavljen je predstavljen jednim jednim

19

znakom unutar jednostrukih navodnika znakom unutar jednostrukih navodnika iliiliASCII vrijednošću tog znaka.ASCII vrijednošću tog znaka.

Znakovni nizZnakovni niz

nn Više znakovaViše znakova čini čini znakovni nizznakovni niz (engl. (engl. character stringcharacter string).).

nn Znakovni nizZnakovni niz je je jednodimenzionalno poljejednodimenzionalno polje čiji čiji

20

su su članovi znakovičlanovi znakovi ((charchar).).

Znakovni nizZnakovni niz

nn Znakovnom se nizuZnakovnom se nizu vrijednostivrijednosti pridružujupridružuju tako tako da se da se navedu navedu nakon operatora pridruživanja,nakon operatora pridruživanja,između para dvostrukih navodnikaizmeđu para dvostrukih navodnika. Npr.:. Npr.:

21

char X [] = "Ovo je znakovni niz"char X [] = "Ovo je znakovni niz"

Znakovni nizZnakovni niz

nn Znakovni niz seZnakovni niz se u memoriju u memoriju sprema ovakosprema ovako::

‘O’ ‘v’ ‘o’ ‘ ‘ ‘j’ ‘e’ ‘ ‘ ‘z’ ‘n’ ‘a’ ‘k’ ‘o’ ‘v’ ‘n’ ‘i’ ‘ ‘ ‘n’ ‘i’ ‘z’ ‘\0’

22

‘O’ ‘v’ ‘o’ ‘ ‘ ‘j’ ‘e’ ‘ ‘ ‘z’ ‘n’ ‘a’ ‘k’ ‘o’ ‘v’ ‘n’ ‘i’ ‘ ‘ ‘n’ ‘i’ ‘z’ ‘\0’

Znakovni nizZnakovni niz

nn SvakiSvaki znakovni niz završavaznakovni niz završava zaključnim zaključnim znakom znakom

‘‘\\0’0’ (engl. (engl. null characternull character). ).

nn Taj znak Taj znak ne treba posebno navoditine treba posebno navoditi, ali, ali treba treba

23

nn Taj znak Taj znak ne treba posebno navoditine treba posebno navoditi, ali, ali treba treba

znatiznati da on da on zauzima jedno mjesto u memorijizauzima jedno mjesto u memoriji..

nn Zadatak(znakovni_polja.c):Zadatak(znakovni_polja.c):

nn Za svaki članZa svaki član znakovnog niza: znakovnog niza: "Ovo je znakovni niz""Ovo je znakovni niz"

treba treba zapisati indeks i zapisati indeks i

24

treba treba zapisati indeks i zapisati indeks i njegovunjegovu vrijednostvrijednost..

nn Ispis treba izgledati ovakoIspis treba izgledati ovako::

#include <stdio.h>#include <stdio.h>

int main ()int main ()

{{

int i;int i;

char X[]="Ovo je znakovni niz";char X[]="Ovo je znakovni niz";

for(i=0;i<20;i++)for(i=0;i<20;i++)

{{

25

{{

printf("X[%i]= %cprintf("X[%i]= %c\\n ",i,X[i]);n ",i,X[i]);

}}

system ("PAUSE");system ("PAUSE");

return 0;return 0;

}}

nn Zadatak (znakovni_polja2.c):Zadatak (znakovni_polja2.c):

nn TrebaTreba prebrojiti koliko puta se pojavljuje prebrojiti koliko puta se pojavljuje slovoslovo o o u u znakovnom nizu: znakovnom nizu:

Koliko slova o ima u ovoj recenici?Koliko slova o ima u ovoj recenici?

26

U znakovnom nizu: U znakovnom nizu:

Koliko slova o ima u ovoj recenici? Koliko slova o ima u ovoj recenici? imaima ... ... slova oslova o..

#include <stdio.h>#include <stdio.h>

int main ()int main ()

{{

printf("Program prebrojava pojavljivanje slova o u printf("Program prebrojava pojavljivanje slova o u recenicirecenici\\n");n");

27

int i,brojo;int i,brojo;

brojo=0;brojo=0;

char X[]="Koliko slova o ima u ovoj recenici?";char X[]="Koliko slova o ima u ovoj recenici?";

nn for (i=0;X[i]!='for (i=0;X[i]!='\\0';i++)0';i++)

nn {{

nn if(X[i]=='o')if(X[i]=='o')

nn {{

nn brojo=brojo+1;brojo=brojo+1;

nn }}

nn }}

28

nn printf ("U znakovnom nizu:printf ("U znakovnom nizu:\\n n \\"Koliko slova o ima u ovoj "Koliko slova o ima u ovoj recenici?recenici?\\" ima %i slova o " ima %i slova o \\n""", brojo);n""", brojo);

nn return 0;return 0;

nn }}

Dvodimenzionalno poljeDvodimenzionalno polje

nn Dvodimenzionalno polje se može Dvodimenzionalno polje se može predočiti predočiti tablicomtablicom s zadanim brojem redaka i stupaca. s zadanim brojem redaka i stupaca.

nn Položaj članaPoložaj člana unutar dvodimenzionalnog poljaunutar dvodimenzionalnog polja

29

označen jeoznačen je sa dva cjelobrojna indeksasa dva cjelobrojna indeksa..

nn Prvi indeksPrvi indeks određuje određuje redakredak, a , a drugi stupacdrugi stupac. .

Dvodimenzionalno poljeDvodimenzionalno polje

nn Prvi član dvodimenzionalnog poljaPrvi član dvodimenzionalnog polja (prvi redak, (prvi redak, prvi stupac) označen je indeksom: prvi stupac) označen je indeksom:

[0,0][0,0]

30

nn a a posljednjiposljednji (posljednji redak, posljednji stupac) (posljednji redak, posljednji stupac) indeksom: indeksom:

[ (broj redaka [ (broj redaka –– 1) , (broj stupaca 1) , (broj stupaca –– 1) ]. 1) ].

Dvodimenzionalno poljeDvodimenzionalno polje

Primjer deklaracije dvodimenzionalnog polja:Primjer deklaracije dvodimenzionalnog polja:

nn Dvodimenzionalno Dvodimenzionalno polje sepolje se deklariradeklarira, npr.:, npr.:

int X [2] [3];int X [2] [3];

31

int X [2] [3];int X [2] [3];

nn Za dvodimenzionalno polje XZa dvodimenzionalno polje X[[22]] [[33]], indeksi su:, indeksi su:

XX[[0,00,0]], X, X[[0,10,1]], X, X[[0,20,2]]

XX[[1,01,0]], X, X[[1,11,1]], X, X[[1,21,2]]

Dvodimenzionalno poljeDvodimenzionalno polje

nn VrijednostiVrijednosti se članovima dvodimenzionalnog se članovima dvodimenzionalnog polja pridružuju tako da se polja pridružuju tako da se vrijednosti članova vrijednosti članova svakog od pojedinih redakasvakog od pojedinih redaka navedunavedu unutar para unutar para vitičastih zagradavitičastih zagrada..

32

vitičastih zagradavitičastih zagrada..

{ {{ {......,,......,,......},},

{{......,,......,,......} }

......

};};

Pridruživanje vrijednostiPridruživanje vrijednosti

Primjer:Primjer:

nn Prethodno deklariranom polju Prethodno deklariranom polju (int X [2] [3])(int X [2] [3])trebatreba pridružiti sljedeće vrijednosti podataka:pridružiti sljedeće vrijednosti podataka:

33

1. stupac 2. stupac 3. stupac

1. redak 1 2 3

2. redak 4 5 6

Pridruživanje vrijednostiPridruživanje vrijednosti

Primjer:Primjer:

nn Članovima dvodimenzionalnog polja Članovima dvodimenzionalnog polja X [2] [3] X [2] [3] sesevrijednosti podataka pridružuju: vrijednosti podataka pridružuju:

34

int X [2][3] = { {1,2,3},int X [2][3] = { {1,2,3},

{4,5,6} };{4,5,6} };

nn Zadatak (dvodim_polja2.c):Zadatak (dvodim_polja2.c):

nn Potrebno je Potrebno je unijeti članove dvodimenzionalnog polja, pa ih unijeti članove dvodimenzionalnog polja, pa ih ispisati u obliku tablice. ispisati u obliku tablice.

nn Ispis treba izgledati ovako:Ispis treba izgledati ovako:

35

nn Ispis treba izgledati ovako:Ispis treba izgledati ovako:

nn #include <stdio.h>#include <stdio.h>

nn int main ()int main ()

nn {{

36

nn int i,j;int i,j;

nn int X[2][3]={{12,25,38},int X[2][3]={{12,25,38},

nn {44,51,16}};{44,51,16}};

nn for(i=0;i<2;i++)for(i=0;i<2;i++)

nn {{

nn for(j=0;j<3;j++)for(j=0;j<3;j++)

nn {{

37

nn {{

nn printf("%10d",X[i][j]);printf("%10d",X[i][j]);

nn }}

nn printf ("printf ("\\n");n");

nn }}

nn return 0;return 0;

nn }}

Dvodimenzionalno poljeDvodimenzionalno polje

nn Ako se kod pridruživanjaAko se kod pridruživanja vrijednosti vrijednosti izostave izostave vitičaste zagrade vitičaste zagrade koje odjeljuju vrijednostikoje odjeljuju vrijednosti po po redovimaredovima, , članovi se popunjavaju po redučlanovi se popunjavaju po redu(red po red).(red po red).

38

(red po red).(red po red).

nn Ako je Ako je deklarirana duljinadeklarirana duljina polja polja veća od broja veća od broja pridruženih podatakapridruženih podataka, , preostalim se članovimapreostalim se članovimapridružuje vrijednost pridružuje vrijednost 00. .

Duljina polja (pri deklaraciji)Duljina polja (pri deklaraciji)

Primjer: Primjer:

nn Članovima polja Članovima polja X [2] [3],X [2] [3], iz prethodnog primjera, iz prethodnog primjera, pridružiti samo četiri podatkapridružiti samo četiri podatka

39

((int int X [2] [3] X [2] [3] == {12,25,38{12,25,38,44,44}};).;).

(R: Preostalim se članovima pridružuje 0.)(R: Preostalim se članovima pridružuje 0.)