You are on page 1of 57

Полиња

Множества на податоци од ист


тип
 Во програмите понекогаш треба да се ракува
со повеќе податоци кои сочинуваат една
целина, а се од ист тип.
 Ако за секој податок се декларира посебна
варијабла, ракувањето со тие податоци би
било сложено , посебно кога над такви
податоци треба да се извршуваат исти
наредби.

2
Множества на податоци од ист
тип
 Множеството на податоци од ист тип може да се
меморира под заедничко име, a редниот број на
податоците во множеството се означува со број
(индекс).
 Тоа е можно со помош на структурата на податоци
која се нарекува поле (низа, англ. array).

3
Поле од податоци

 Полето е конечен збир на податоци од ист тип кои


сочинуваат целина.
 Се состои од членови на полето (податоци).
 Положбата на членот во полето е означена со
целоброен броен индекс .

4
Еднодимензионално поле

 Полињата може да бидат едно или


повеќедимензионални.

 Наједноставни се еднодимензионалните полиња


кај кои членовите – податоците се наредени во
низа (еден зад друг)

5
Еднодимензионално поле

 Секој од членовите на низата се означува со


целоброен индекс кој одговара на неговата
оддалеченост од првиот член и тоа така што :
 првиот член има индекс 0,
 последниот член има индекс за еден помал од
должината на полето.

A0 A1 A2 A3 A4 A5

6
Декларација на поле

 Декларацијата на еднодимензионално поле го има


следниот облик:

tip_na_pole ime_pole [dimenzija_pole]

tip na podatoci koi se broj na clenovi vo poleto


memoriraat vo poleto

7
Декларација на поле

Пример:

 Еднодимензионално поле се декларира :

int A 6;

 Тоа е поле од 6 членови кои се целобројни


вредности.

8
Декларација на поле

 Должината на декларираното поле не може да се


менува во текот на извршувањето на програмата.
 Податоците, членовите на поле може да бидат од
кој било тип (int, float и др.), нпр.:
int a[100];
float X[20];
char tekst[50];

9
Декларација на поле

При декларација, името на полето на смее да се


совпадне со името на некоја варијаблаi.

neispravna
deklaracija

 Во случај на неправилна декларација преведувачот


ќе јави грешка :

10
Придружување на вредност

 На членовите на полето вредностите им се


придружуваат така што се наведуваат после
операторот за придружување , во големи
загради, одделени со запирка.

11
Придружување на вредност

Пример:
 На претходно декларирано
еднодимензионално поле A од 6 членови
треба да се придружат следните вредности:

A0 A1 A2 A3 A4 A5


2 34 1 67 99 7

12
Придружување на вредност

Пример:
 На членовите на полето придружуваат
вредностите:
int A 6 = {2,34,1,67,99,7};

 Или без да се наведе должината на полето:


int A   = {2,34,1,67,99,7};

(преведувачот сам заклучува дека полето има


шест членови и потоа должината на полето не 13
може повеќе да се менува.)
 Членовите на полето се разликуваат по индексот
кој се менува од 0 до n-1 (ако е n вкупен број на
членови на низата)
 За запишување или испишување на членовите на
полето поволно е да се користи циклус.

14
Пример

 Треба да се внесат членовите од


еднодимензионалното поле од претходниот
пример , па да се испишат.
 Исписот да изгледа вака:

15
Декларација на
поле А со
придружување
вредности на
членовите на
полето
Испис на
вредноста на
i-тиот член на
полето.

16
#include <iostream>
using namespace std;
int main ()
{
int i;
int A[6]={2,34,1,67,99,7};
for(i=0;i<6;i++)
{
cout<<"A["<<i<<"]="<<A[i]<<" ";
}
cout<<endl;
return 0;
}
 Проверка:

18
Должина на полето(при
декларација)
 Должината на полето која се наведува при
декларацијата мора да биде поголема или
еднаква на бројот на членови на полето.

 Ако декларираната должина е поголема од бројот


на придружени податоци, на преостанатите
членови се придружува вредност 0.

19
Пример2:

 На членовите на полето A[6] од претходниот


пример, да се придружат само 4 –четири
податоци.
 (int A[6]={2,34,1,67};).

(Rezultat: На преостанатите членови придружува 0.)

20
Пример 3:

 Треба да се внесат N членови (N е помал или


еднаков на 10) на еднодимензионално поле , па да
се испишат и соберат.
 Исписот нека биде со следниот облик:

Upisi broj clanova polja:


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

Ako je N=..., zbroj clanova polja


iznosi ....

21
 Бидејќи N не е однапред познат , треба да го
внесеме и да провериме дали е N<=10 i N>0.
 Се проверува со do-while циклус.
 Првиот for е за внес и собирање на членовите на
полето, а втората за испис.

22
#include <iostream>
using namespace std;
int main ()
{
int N,i,zbir;
int X[10];
zbir=0;
do
{
cout<<"Vpisi broj na clenovi na poleto:";
cin>>N;
}
while((N<=0)||(N>10));
for (i=0;i<N;i++)
{
cout<<endl<<"Vpisi X["<<i<<"] clen na poleto:";
cin>>X[i];
}
for (i=0;i<N;i++)
{
cout<<X[i]<<endl;
zbir=zbir+X[i];
}
cout<<endl<<"Ako e N="<<N<<" zbirot "<<N
<<" clenovi na poleto iznesuva "<<zbir<<endl;
return 0;
}
Primjer 91

N mora biti
veći od 0 i
manji ili
jednak 10

(c) S.Šutalo i D.Grundler, 2009. 25


Primjer 91

upis i
zbrajanje
vrijednosti
članova
polja

ispis članova
polja

(c) S.Šutalo i D.Grundler, 2009. 26


#include <iostream>
using namespace std;
int main ()
{
int N,i,zbroj;
int X[10];
zbroj=0;
do
{
cout<<"Upisi broj clanova polja:";
cin>>N;
}
while(N<=0)||(N>10);
}
for (i=0;i<N;i++)
{
cout<<endl<<"Upisi X["<<i<<"] clan polja:";
cin>>X[i];
}
for (i=0;i<N;i++)
{
cout<<X[i]<<endl;
zbroj=zbroj+X[i];
}
cout<<endl<<"Ako je N="<<N<<" zbroj "<<N
<<" clanova polja iznosi "<<zbroj<<endl;
return 0;
}
Primjer 91

(c) S.Šutalo i D.Grundler, 2009. 29


Dvodimenzionalno polje

 Dvodimenzionalno polje se može predočiti tablicom


sa zadanim brojem redaka i stupaca.
 Položaj člana unutar dvodimenzionalnog polja
označen je sa dva cjelobrojna indeksa.
 Prvi indeks određuje redak, a drugi stupac.

(c) S.Šutalo i D.Grundler, 2009. 30


Dvodimenzionalno polje

 Prvi član dvodimenzionalnog polja (prvi redak, prvi


stupac) označen je indeksom:
[0,0]
 Posljednji (posljednji redak, posljednji stupac)
indeksom:
[(broj redaka-1),(broj stupaca-1)].

(c) S.Šutalo i D.Grundler, 2009. 31


Deklaracija dvodim. polja

 Dvodimenzionalno polje se deklarira, npr.:

int X [2] [3];


 Za dvodimenzionalno polje X2 3, indeksi su:
X0,0, X0,1, X0,2
X1,0, X1,1, X1,2

(c) S.Šutalo i D.Grundler, 2009. 32


Dvodimenzionalno polje

 Vrijednosti članovima dvodimenzionalnog polja


pridružuju se tako da se vrijednosti članova svakog
retka navedu unutar para vitičastih zagrada.
{ {...,...,...},
{...,...,...}
...
};

(c) S.Šutalo i D.Grundler, 2009. 33


Pridruživanje vrijednosti

 Prethodno deklariranom polju (int X [2] [3])


treba pridružiti sljedeće vrijednosti podataka:

1. stupac 2. stupac 3. stupac


1.reda 1 2 3
k
2.reda 4 5 6
k

(c) S.Šutalo i D.Grundler, 2009. 34


Pridruživanje vrijednosti

 Članovima dvodimenzionalnog polja X [2] [3] se


vrijednosti podataka pridružuju ovako:

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


{4,5,6} };

(c) S.Šutalo i D.Grundler, 2009. 35


Primjer 92

 Potrebno je unijeti članove dvodimenzionalnog polja,


pa ih ispisati u obliku tablice.
 Ispis treba izgledati ovako:

(c) S.Šutalo i D.Grundler, 2009. 36


Primjer 92

deklaracija polja
X i pridruživanje
vrijednosti
članovima polja

ispis vrijednosti

[i][j]
člana polja

(c) S.Šutalo i D.Grundler, 2009. 37


#include <iostream>
using namespace std;
int main ()
{
int i,j;
int X[2][3]={{12,25,38},
{44,51,16}};
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
cout<<X[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
Primjer 92

 Ako se prethodni primjer dopuni, uz vrijednost


pojedinog člana polja bit će prikazani i njegovi
indeksi.

cout<<"X["<<i<<"]["<<j<<"]= "<<X[i][j]<<" ";

(c) S.Šutalo i D.Grundler, 2009. 39


Duljina polja (pri deklaraciji)

 Ako se kod pridruživanja vrijednosti izostave


vitičaste zagrade koje odjeljuju vrijednosti po
redovima, članovi se popunjavaju po redu (red
po red).
 Ako je deklarirana duljina polja veća od broja
pridruženih podataka, preostalim se članovima
pridružuje vrijednost 0.

(c) S.Šutalo i D.Grundler, 2009. 40


Primjer 93

 Članovima polja X[2][3], iz prethodnog primjera,


pridružiti samo četiri podatka:

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

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

(c) S.Šutalo i D.Grundler, 2009. 41


Знак

 Ако податокот е знак , неговиот тип е char.


 Податок од тип char e претставен со еден знак
во единечни наводници или со ASCII вредност на
тој знак.

(c) S.Šutalo i D.Grundler, 2009. 42


Низа од знаци

 Повеќе знаци сочинуваат низа од знаци (англ.


character string).
 Низа од знаци е еднодимензионално поле чии
членови се знаци (char).

(c) S.Šutalo i D.Grundler, 2009. 43


Znakovni niz

 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”

(c) S.Šutalo i D.Grundler, 2009. 44


Znakovni niz

 Znakovni niz se u memoriju sprema ovako:

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

(c) S.Šutalo i D.Grundler, 2009. 45


Znakovni niz

 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.

(c) S.Šutalo i D.Grundler, 2009. 46


Primjer 94

 Za svaki član znakovnog niza:


“Ovo je znakovni niz”
treba zapisati indeks i njegovu
vrijednost.

 Ispis treba izgledati ovako:

(c) S.Šutalo i D.Grundler, 2009. 47


Primjer 94

ispis indeksa i vrijednosti


i-tog člana polja

(c) S.Šutalo i D.Grundler, 2009. 48


#include <iostream>
using namespace std;
int main ()
{
int i;
char X[]="Ovo je znakovni niz";
for(i=0;i<20;i++)
{
cout<<“X["<<i<<"]="<<X[i]<<" "<<endl;
}
return 0;
}
Primjer 94

 Provjera:

‘\0’

(c) S.Šutalo i D.Grundler, 2009. 50


Znakovni niz

 Ako se znakovni niz proteže kroz više redaka,


završetak svakog retka se označava lijevom kosom
crtom (\ engl. backslash).

(c) S.Šutalo i D.Grundler, 2009. 51


Znakovni niz

 Kosa crta (\) označava da će se ispis protezati do


kraja zaslona a zatim preći u novi redak.

(c) S.Šutalo i D.Grundler, 2009. 52


Primjer 95

 Treba prebrojiti koliko se puta u znakovnom nizu


pojavljuje slovo o :
Koliko slova o ima u ovoj recenici?

U znakovnom nizu:
Koliko slova o ima u ovoj
recenici?
ima ... slova o.

(c) S.Šutalo i D.Grundler, 2009. 53


Primjer 95

 Da li je sadržaj i-tog člana


polja jednak znaku o?
 Ako je, brojač se uveća za 1.

(c) S.Šutalo i D.Grundler, 2009. 54


#include <iostream>
using namespace std;
int main ()
{
cout<<"Program prebrojava pojavljivanje \
slova o u recenici"<<endl;
int i,brojo;
brojo=0;
char X[]="Koliko slova o ima u ovoj recenici?";
for (i=0;X[i]!='\0';i++)
{
if(X[i]=='o')
{
brojo=brojo+1;
}
}
cout<<endl<<"U znakovnom nizu:"<<endl
<<"Koliko slova o ima u ovoj recenici?"
<<endl<<"ima "<<brojo<<" slova o."<<endl;
return 0;
}
Primjer 95

 Provjera pokazuje koliko u znakovnom nizu ima slova


o.

(c) S.Šutalo i D.Grundler, 2009. 57

You might also like