Цитата: Нужно отсортировать весь массив от координат 55, 44 до координат x[0]=10; y[0]=10; и отдельно от координат 55, 44 до координат x[0]=10; y[0]=100;
CODE:int i;
int x[100], y[100];
x[0]=10; y[0]=10;
x[1]=20; y[1]=20;
x[2]=30; y[2]=30;
x[3]=40; y[3]=40;
x[4]=50; y[4]=50;
x[5]=40; y[5]=60;
x[6]=30; y[6]=70;
x[7]=20; y[7]=80;
x[8]=10; y[8]=90;
x[9]=10; y[9]=100;
int PosX = 55;
int PosY = 44;
int count = sizearray(x);
for(i=0; i<count; i++)
{
if(x[i]<0)
{
count = i;
break;
}
}
messagebox ("Всего координат: "+format(count));
int dist=99999;
int index=0;
for(i=0; i<count; i++)
{
if(distance(x[i], y[i], PosX, PosY) < dist)
{
dist = distance(x[i], y[i], PosX, PosY);
index = i;
}
}
messagebox ("Ближайшая координата: "+format(index));
sort(PosX, PosY, #x[0], #y[0], index);
int h=0;
while(h<index)
{
textout(h, 0, h*20, format(x[h])+"__"+format(y[h]), 0);
h++;
}
sort(PosX, PosY, #x[index], #y[index], count-index);
while(h<count)
{
textout(h, 0,50+h*20, format(x[h])+"__"+format(y[h]), 0);
h++;
}
messagebox ("стоп");
function distance(int x1, int y1, int x2, int y2)
{
return sqrt(pow(x1-x2, 2)+pow(y1-y2, 2));
} |