Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Сортировка массива в одну сторону

Страниц (1): [1]
 

1. konctantin777 - 17 Февраля, 2023 - 01:35:23 - перейти к сообщению
Здравствуйте.
Есть массив координат на 10. Сортирую от 3го или, например, 6 шага- сортирует "в обе стороны". Как сделать сортировку в одну сторону ? Т.е. чтобы не учитывалась часть массива в зависимости от того к какой координате ближе ?
CODE:
string s;
int x[100]; int 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;

sort(55, 44, #x[0], #y[0], 20);

int h=0;
a:
if (h<20)
{
textout(h, 0, h*20, format(x[h])+"__"+format(y[h]), 0);
h++;
goto a;
}
messagebox ("стоп");//
2. Zireael - 17 Февраля, 2023 - 02:07:03 - перейти к сообщению
5 раз прочитал, так и не понял что нужно сделать.
3. konctantin777 - 17 Февраля, 2023 - 02:13:08 - перейти к сообщению
Есть массив координат от 0 до 10. Если мы сортируем с координат 55-44, то сортируется весь массив , а как сделать, чтобы только в одну сторону, чтобы остался только
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;

или, если координаты ближе к 5му шагу, то
x[6]=30; y[6]=70;
x[7]=20; y[7]=80;
x[8]=10; y[8]=90;
x[9]=10; y[9]=100;

Или в сторону 0го.

Да, с формулировками у меня не очень...
4. Zireael - 17 Февраля, 2023 - 02:34:15 - перейти к сообщению
Понятнее не стало. Сначала надо было отсортировать, теперь оставить часть массива.
Для чего нужно это?
5. konctantin777 - 17 Февраля, 2023 - 02:42:02 - перейти к сообщению
Нужно отсортировать не весь массив, а часть, в зависимости от "sort(55, 44, #x[0], #y[0], 20);"
координат в 1м и 2м параметре.
Нужно, чтобы не учитывались данные до "x[4]=50; y[4]=50;" либо после них.
(Добавление)
Сформулировал.
Нужно отсортировать весь массив от координат 55, 44 до координат x[0]=10; y[0]=10; и отдельно от координат 55, 44 до координат x[0]=10; y[0]=100;
6. Zireael - 17 Февраля, 2023 - 03:51:18 - перейти к сообщению
 Цитата:
Нужно отсортировать весь массив от координат 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));
}
7. konctantin777 - 17 Февраля, 2023 - 03:56:08 - перейти к сообщению
Спасибо !!

Powered by ExBB FM 1.0 Final