"KRUŽNE ZONE" - UPUTSTVO ZA REŠAVANJE ZADATKA
Oblast: binarna pretraga, sortiranje niza
Potrebna su 3 niza:
Dalje treba, koristeći algoritam binarne pretrage tražiti poziciju u nizu poluprečnika, gde se rastojanje R od centra do tekuće tačke M(x,y)
nalazi u pojasu koji prethodi poluprečniku u nizu na ispitivanoj poziciji.
Npr ako je izračunato rastojanje tekuće tačke od centra R a poluprečnik u nizu na tekućoj poziciji s iznosi r[s], onda bi pronalaženje indeksa pojasa gde se tačka nalazi izgledala:
if(R>r[s-1] && R<=r[s])
{
pronađenPoluprecnik=true;
poz=s;
break;
}
Prethodno proveriti da li na indeksu s-1 ima elementa u nizu r. Ako nema, npr kad je s=0, onda je prethodni poluprečnik jednak nuli.
Sledeći kod to moze da reši:
/*Odredjuje prethodni poluprecnik*/
if(s-1<0) //ako je s pocetni index onda je manji krug prstena poluprecnika jednakim nuli
{
rP=0;
}
else{
rP=r[s-1];
}
- poluprečnici koncentričnih krugova koji predstavljaju zone i ima ih n(unosi se)
- X koordinate tačke unutar zona, ima ih m(unosi se)
- Y koordinate tačke unutar zona, ima ih m(unosi se)
Dalje treba, koristeći algoritam binarne pretrage tražiti poziciju u nizu poluprečnika, gde se rastojanje R od centra do tekuće tačke M(x,y)
nalazi u pojasu koji prethodi poluprečniku u nizu na ispitivanoj poziciji.
Npr ako je izračunato rastojanje tekuće tačke od centra R a poluprečnik u nizu na tekućoj poziciji s iznosi r[s], onda bi pronalaženje indeksa pojasa gde se tačka nalazi izgledala:
if(R>r[s-1] && R<=r[s])
{
pronađenPoluprecnik=true;
poz=s;
break;
}
Prethodno proveriti da li na indeksu s-1 ima elementa u nizu r. Ako nema, npr kad je s=0, onda je prethodni poluprečnik jednak nuli.
Sledeći kod to moze da reši:
/*Odredjuje prethodni poluprecnik*/
if(s-1<0) //ako je s pocetni index onda je manji krug prstena poluprecnika jednakim nuli
{
rP=0;
}
else{
rP=r[s-1];
}