- prebrojavanje elemenata niza koji ispunjavaju neki uslov
- sabiranje ili množenje elemenata niza koji ispunjavaju neki uslov (ili svih)
- izdvajanje elemenata niza koji ispunjavaju neki uslov u drugi niz
- pretraživanje niza
- promena redolsleda elemenata niza
Prvi razlog je što potrebni prilikom rešavanja drugih zadataka a drugi jer se u njihovim rešenjima kriju zanimljive ideje koje se mogu iskoristiti u drugim situacijama.
Osnovni princip vecine ovih postupaka je da se analizira jedan po jedan element niza. U nekim slučajevima anliziraju se dva po dva elementa.
PREBROJAVANJE elemenata koji ispunjavaju neki uslov svodi se na uporedjivanje elementa i beleženje broja situacija kada je uslov bio ispunjen.
Dakle, ako želimo da prebrojimo pozitivne elemente niza x koji ima n elemenata treba napisati ovakav program (programeri kažu i "kod")
broj = 0;
for(i=0; i<n; i++)
if(x[i]>0)
broj++;
Zamenom uslova u if naredbi dobijamo program koji broji elemente koji ispunjavaju taj drugačiji uslov.
SABIRANJE svih elemenata niza x koji ima n elemenata svodi se na dodavanje jednog po jednog elementa ukupnom zbiru. Evo programa (tj. koda)
zbir = 0;
for(i=0; i<n; i++)
zbir += x[i];
Ako želimo da dobijeo zbir npr. samo parnih brojeva onda u gornji program treba dodati if naredbu. Dobija se ovakav program:
zbir = 0;
for(i=0; i<n; i++)
if(x[i] % 2 == 0)
zbir += x[i];
Ako je potrebno pomnožiti sve elemente niza onda je ideja slična - množenje proizvoda jednim po jednim elementom. Evo programa
proizvod = 1;
for(i=0; i<n; i++)
proizvod *= x[i];
Naravno i ovde je moguće dodati uslov tako da se množe samo elementi koji ispunjavaju taj uslov. Ovo je vrlo slično sabiranju pa ostavljam čitaocu da pokuša sam. Ako bude nedoumica pišite kao komentar.
Treba imati na umu da zbir, a naročito proizvod, pozitivnih brojeva može da bude jako veliki broj pa ako su sabirci (činioci) tipa int onda zbir (proizvod) mora biti deklarisan kao long a nekada ni to nije dovoljno pa se moraju osmisliti posebni algoritmi za rad sa tim brojevima (rad sa velikim brojevim je tema o kojoj ćemo govoriti posebno).
O izdvajanju elemenata, pretraživanju i promeni redosleda (sortiranju) govorićemo u sledećem članku.
No comments:
Post a Comment