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

Страниц (3): « 1 [2] 3 »
 

11. Kibor - 28 Ноября, 2023 - 04:04:20 - перейти к сообщению
 konctantin777 пишет:
Но надо же, чтобы совпадало и перебором же будет очень долго если 2е значение 9и значное ?

Не важно какое значение. Важно количество кнопок.
И что эти значения означают? Координаты?
И это почитайте(для просмотра ссылки Вам необходимо авторизоваться)
12. konctantin777 - 28 Ноября, 2023 - 04:12:48 - перейти к сообщению
 Kibor пишет:
И что эти значения означают? Координаты?

Есть кнопки.(для просмотра ссылки Вам необходимо авторизоваться) 1й параметр- её вид. можно как угодно обозначить.
2. параметр- число в ней.
Надо найти сначала, чтобы 1й параметр был, например "3" и с максимальным числом в ней. Потом 1й параметр "3" и число след. по значению. Потому и говорю про сортировку.
Потом 1й параметр, например "2" и с максимальным числом в ней.
(Добавление)
Сейчас сортирую циклами, но это кода на 3 страницы в полный экран. Может можно как то записать координаты кнопки, чтобы чтобы понимать какая оказалось в a[0]=5; Чтобы, например, если это 3я кнопка= клик по координатам 3й кнопки
13. Zireael - 28 Ноября, 2023 - 04:23:19 - перейти к сообщению
На картинке 3 вида кнопок, по каким нужен клик? По всем в определённом порядке, по некоторым или ещё как-то.
14. Kibor - 28 Ноября, 2023 - 04:25:31 - перейти к сообщению
 konctantin777 пишет:
чтобы параметр был, например "3" и с максимальным числом в ней. Потом параметр "3" и число след. по значению

Это как?
Следующее за максимальным? А что за ним следует?
И сколько всего кнопок?
15. konctantin777 - 28 Ноября, 2023 - 04:56:29 - перейти к сообщению
Даааа, согласен, чётко сформулировать это не моё )
Часа через 2 у компа буду, скину код которым пользуюсь, попрошу помочь может можно будет его просто сократить )
16. konctantin777 - 28 Ноября, 2023 - 06:57:49 - перейти к сообщению
Код которым пользуюсь (Отобразить)

Т.е. сначала проверяю 1й параметр, потом соотношу со 2м, потом перебираю, что кнопка совпадает с тем, что получилось. Потом так же в обратном порядке....
Сейчас стало надо больше кнопок и проверка, что кнопка вообще есть... (ну, это наверное, просто всем, с запасом, кнопкам присвоить "0")
[i](Добавление)

Каждой писать условие проверки, это в 2 раза длиннее будет...
17. Zireael - 28 Ноября, 2023 - 18:33:19 - перейти к сообщению
Никто так и не понял что вы хотите сделать.

 Цитата:
Может можно как то записать координаты кнопки

В двухмерный массив можно записать всё что нужно.
Таблицу Excel представьте, двухмерный массив это по сути тоже самое.
Для примера:
CODE:
int a[3][5]; // массив 3*5

// какие-то данные
a[0][0]=111; a[0][1]=222; a[0][2]=333; a[0][3]=444; a[0][4]=555;
a[1][0]=999; a[1][1]=888; a[1][2]=777; a[1][3]=666; a[1][4]=555;
a[2][0]=123; a[2][1]=456; a[2][2]=789; a[2][3]=987; a[2][4]=654;


for(int i=0; i<3; i++)
{
string tmp = "";
for(int j=0; j<5; j++)tmp = tmp + format(a[i][j]) +" ";
kiborlog(0, tmp, 0, 0, 300, 250);
}
kiborlog(1, "", 0, 0, 300, 250);
18. konctantin777 - 29 Ноября, 2023 - 01:50:36 - перейти к сообщению
Вид кнопки показывает сколько у моба хп. Число внутри кнопки- сколько у него маны.
Грубо говоря есть кнопки. Каждая кнопка имеет значения сколько хп и сколько маны. Надо нажать сначала с полным хп и полной маной. Потом с полным хп и меньшей маной, потом с полным хп и ещё меньшей маной. Потом то же самое, но со средним хп. Потом тоже самое, но с мин. хп.
(Добавление)
 Zireael пишет:
Таблицу Excel представьте, двухмерный массив это по сути тоже самое.

Код который скидывал, норм работает. Но как эту таблицу отсортировать кибором- не представляю. В Excel это просто сортируем 1й столбец по уменьшению. С зафиксированным отсортированным, сортируем 2й по уменьшению
(Добавление)
3-5000
3-4000
3-10
2-100
1-6000
1-200
19. Zireael - 29 Ноября, 2023 - 03:20:57 - перейти к сообщению
 Цитата:
3-5000
3-4000
3-10
2-100
1-6000
1-200

В 3 и 4 столбце данные лишь для примера, они не используются, можно хранить координаты или что там нужно.
CODE:
int a[6][4];
// какие-то данные
a[0][0] = 1; a[0][1] = 6000; a[0][2] = 100; a[0][3] = 111;
a[1][0] = 3; a[1][1] = 10; a[1][2] = 200; a[1][3] = 222;
a[2][0] = 3; a[2][1] = 5000; a[2][2] = 300; a[2][3] = 333;
a[3][0] = 1; a[3][1] = 200; a[3][2] = 400; a[3][3] = 444;
a[4][0] = 3; a[4][1] = 4000; a[4][2] = 500; a[4][3] = 555;
a[5][0] = 2; a[5][1] = 100; a[5][2] = 600; a[5][3] = 666;


int row = sizearray(a);
int col = sizearray(a[]);

int i, j;
string tmp;


kiborlog(0, "До сортировки:", 0, 0, 400, 400);
for(i=0; i<row; i++)
{
tmp = "^t";
for(j=0; j<col; j++)tmp = tmp + format(a[i][j]) +"^t";
kiborlog(0, tmp, 0, 0, 400, 400);
}

// сортировка по первым двум столбцам
// передаём указатель на массив, количество строк и столбцов в массиве
sort_array(#a[0][0], row, col);

kiborlog(0, "После сортировки:", 0, 0, 400, 400);
for(i=0; i<row; i++)
{
tmp = "^t";
for(j=0; j<col; j++)tmp = tmp + format(a[i][j]) +"^t";
kiborlog(0, tmp, 0, 0, 400, 400);
}
kiborlog(1, "", 0, 0, 400, 400);



function sort_array(int #m, int row, int column)
{
int max, max2, imax;
for(int i=0; i<row; i++)
{
max=m[i][0]; max2=-1; imax=i;
for(int j=i+1; j<row; j++)
{
if(m[j][0] > max || (m[j][0] == max && m[j][1] > max2))
{
max=m[j][0]; max2=m[j][1]; imax = j;
}
}
for(int k=0; k<column; k++)
{
int tmp = m[i][k]; m[i][k]=m[imax][k]; m[imax][k]=tmp;
}
}
}
20. konctantin777 - 29 Ноября, 2023 - 04:03:38 - перейти к сообщению
Спасибо ! Так НАМНОГО лучше код )
(Добавление)(для просмотра ссылки Вам необходимо авторизоваться) А как, чтобы полностью сначала 1й столбец сортировал и с "2" и "1" тоже по по уменьшению. Надо ещё раз сортироовать с "2" и "1" ?
(Добавление)(для просмотра ссылки Вам необходимо авторизоваться)

Powered by ExBB FM 1.0 Final