Помогите дописать главную функцию.
Добавлено: 27 мар 2014, 15:52
Код: Выделить всё
struct Nq {
int x,y;
unsigned int Q;
};
double rs (Nq u1, Nq u2)
{ double uux=(double)u2.x - (double)u1.x;
double uuy=(double)u2.y - (double)u1.y;
return (sqrt(pow(uux,2)+pow(uuy,2)));
}
int tis (Nq *tp, unsigned int lk, double sh)
{
unsigned int i,j,lio,j_min;
double d,d_min,xs,ys,px,py;
Nq Z,S,Y;
unsigned int nkl=0;
for (i=0;i < lk;i++)
{ if (tp[i].Q) continue;
Z=tp[i];nkl++;
tp[i].Q=nkl;
lio=1;
xs=(double)Z.x;
ys=(double)Z.y;
for(;;)
{
d_min=sh+1;
for (j=0;j<lk;j++)
{if (i==j || tp[j].Q)
continue;
d=rs(Z,tp[j]);
if(d<d_min)
{d_min=d;j_min=j;}
}
if (d_min <= sh)
{
tp[j_min].Q = nkl; lio++;
Y=tp[j_min];
xs+=Y.x; ys+=Y.y;
px=xs/lio;
py=ys/lio;
if (px>=0) Z.x=(int)(px+0.5);
else Z.x=(int)(px-0.5);
if (py>=0) Z.y=(int)(py+0.5);
else Z.y=(int)(py-0.5);
continue;
}
else break;}}
return 0;
}