Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

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

> Без описания
konctantin777
Отправлено: 27 Ноября, 2023 - 21:40:27
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1152
Дата рег-ции: Окт. 2017  
Откуда: Архангельск
Репутация: 6




Здравствуйте.
На экране есть несколько кнопок, у каждой 2 параметра.
CODE:
[0][654]
[5][345]
[4][45]
[0][11]
[3][256]
[1][456]
[2][8766]
[2][256776]
[0][28656]

Надо отсортировать и кликнуть сначала по самой "маленькой. Т.е., наверное, отсортировать
CODE:
int x[100];
int y[100];
sort(0, 1, #x[0], #y[0], 9);
получим в начале массива 4ю кнопку [0][11]. Но как узнать, что изначально она была именно четвёртая, чтобы по ней кликнуть ?
Потом по по самой большой по х и маленькой по у
CODE:
int x[100];
int y[100];
sort(99, 1, #x[0], #y[0], 9);
Получим в начале массива 2ю кнопку [5][345] ? А как узнать, что изначально она 2я была ?
(Добавление)
Но таким способом кнопки с параметрами [5] [10] и [10 [5] будут равнозначны ? Надо именно сначала с наибольшим значением по х и сортировка по у. . Потом с на 1 меньшим значением по х и сортировка по у, потом ещё на 1 меньшим по х.. .
 
 Top
Zireael
Отправлено: 28 Ноября, 2023 - 01:54:52
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4463
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
как узнать, что изначально она была именно четвёртая

Создать копию массива, отсортировать её, взять первый элемент и в цикле сравнить с оригинальным массивом, получим индекс.
Или вместе с параметрами ещё записать порядковый номер кнопки, тогда сортировка никак не повлияет.
Можно написать свою сортировку. Но, в данный момент непонятны критерии сортировки.
 Цитата:
Но таким способом кнопки с параметрами [5] [10] и [10 [5] будут равнозначны ?

А есть смысл рассматривать такой вариант? Может параметры кнопок не могут быть идентичны.

В данный момент проще сортировать по сумме двух параметров. Если подойдёт такой вариант.
 
 Top
konctantin777
Отправлено: 28 Ноября, 2023 - 07:53:00
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1152
Дата рег-ции: Окт. 2017  
Откуда: Архангельск
Репутация: 6




 Zireael пишет:
Может параметры кнопок не могут быть идентичны.

Таких идентичных нет. Это как более наглядный пример 123-547 и 146-534, например.
Но параметры же всегда можно переименовать. Т. е. по х, чтобы были от 0 до 5
 Zireael пишет:
Или вместе с параметрами ещё записать порядковый номер кнопки, тогда сортировка никак не повлияет.
сделать массив 3х мерным ?

(Отредактировано автором: 28 Ноября, 2023 - 07:56:39)

 
 Top
konctantin777
Отправлено: 28 Ноября, 2023 - 10:01:07
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1152
Дата рег-ции: Окт. 2017  
Откуда: Архангельск
Репутация: 6




Или примерно так ?
CODE:
int a[100][100];
int x[100];
int y[100];

a[0][654]=1;
a[5][345]=2;
a[4][45]=3;
a[0][11]=4;
a[3][256]=5;
a[1][456]=6;
a[2][8766]=7;
a[2][256776]=8;
a[0][28656]=9;

sort(0, 1, #x[0], #y[0], 9);

(Отредактировано автором: 28 Ноября, 2023 - 10:01:54)

 
 Top
Zireael
Отправлено: 28 Ноября, 2023 - 10:12:01
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4463
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
примерно так ?

Вообще не так.
К тому же функция sort сортирует только одномерный массив, так что она не применима в этом случае.
 
 Top
konctantin777
Отправлено: 28 Ноября, 2023 - 10:21:25
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1152
Дата рег-ции: Окт. 2017  
Откуда: Архангельск
Репутация: 6




 Kibor пишет:
Назначение второй вариации функции сортировка элементов в двух массивах координат X Y по расстоянию от указанных в функции координат.
Использовать к примеру для сортировки координат XY полученных с помощью функции finddynamic или findimage от конкретной точки на экране по расстоянию:

CODE:
sort(300, 200, #x[0], #y[0], 20);
 
 Top
Zireael
Отправлено: 28 Ноября, 2023 - 10:28:59
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4463
Дата рег-ции: Нояб. 2017  
Репутация: 585




У вас объявлен двухмерный массив.
CODE:
int a[100][100];

Можно объявить трёхмерный.
CODE:
int a[100][100][100];

Функция sort не отсортирует ни тот, ни другой.
 Цитата:
sort(0, 1, #x[0], #y[0], 9);

Тут не сортируется массив a.

Если вам нужен ответ на ваш вопрос, то напишите критерий сортировки и в каком виде хранятся данные.
 
 Top
konctantin777
Отправлено: 28 Ноября, 2023 - 11:07:12
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1152
Дата рег-ции: Окт. 2017  
Откуда: Архангельск
Репутация: 6




 Zireael пишет:
критерий сортировки и в каком виде хранятся данные

У кнопки двое данных. 1е это значения 0,1,2,3, но могу любое другое написать. 2е это цифра от 15 до 9и значной.
Цель: Найти все кнопки с 1м значением "3" и максимальным 2м значением. Потом с 1м значением "2" и максимальным 2м значением, потом с 1м значением "1" и максимальным 2м значением.
Потом тоже самое, но минимальное 2е значение, но это уже, думаю, так же только значения наоборот.
(Добавление)
CODE:
int a[100][100];
int x[100];
int y[100];

x[0]=1;y[654]=1;
x[5]=2;y[345]=2;
x[4]=3;y[45]=3;
x[0]=4;y[11]=4;
x[3]=5;y[256]=5;
x[1]=6;y[456]=6;
x[2]=7;y[8766]=7;
x[2]=8;y[256776]=8;
x[0]=9;y[28656]=9;

sort(0, 90000, #x[0], #y[0], 9);

(Добавление)
 Zireael пишет:
Можно объявить трёхмерный.
CODE:
int a[100][100][100];
Так ?
CODE:
int a[100][100][100];
initialarray(#a[0][0][0], -1);

a[0][654][1]=1;
a[5][345][2]=2;
a[4][45][3]=3;
a[0][11][4]=4;
a[3][256][5]=5;
a[1][456][6]=6;
a[2][8766][7]=7;
a[2][256776][8]=8;
a[0][28656][9]=9;

(Отредактировано автором: 28 Ноября, 2023 - 11:23:00)

 
 Top
Zireael
Отправлено: 28 Ноября, 2023 - 11:47:50
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4463
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
int y[100];
x[0]=1;y[654]=1;

Массив y на 100 элементов, а записываете в 654. Вылет кибор это лишь вопрос времени.
В квадратных скобках указывается индекс, по которому записывать данные, после равно значение элемента. Индексация начинается в 0.
CODE:
int x[100];
int y[100];

x[0]=0; y[0]=654;
x[1]=5; y[1]=345;
x[2]=4; y[2]=45;
messagebox(format(x[1])+" "+format(y[1]));

 Цитата:
Так ?

Нет. Не нужен тут трёхмерный массив, не тратьте время на то что не понимаете.

Что-то уже задача поменялась. Сначала было:
 Цитата:
Надо отсортировать и кликнуть сначала по самой "маленькой.
Потом по по самой большой

Теперь:
 Цитата:
Цель: Найти все кнопки с 1м значением "3" и максимальным 2м значением. Потом с 1м значением "2" и максимальным 2м значением, потом с 1м значением "1" и максимальным 2м значением.
Потом тоже самое, но минимальное 2е значение
 
 Top
konctantin777
Отправлено: 28 Ноября, 2023 - 11:53:20
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1152
Дата рег-ции: Окт. 2017  
Откуда: Архангельск
Репутация: 6




 Zireael пишет:
Что-то уже задача поменялась

Надо самую маленькую кликнуть. Чтобы сначала только по 1му значению. По аналогии и самую большую (только выбор сначала по 1му значению). И так и так надо. Но решение то одно какое то... (
(Добавление)
CODE:
int x[100];
int y[1000000000];

x[0]=0; y[0]=654;
x[1]=5; y[1]=345;
x[2]=4; y[2]=45;
messagebox(format(x[1])+" "+format(y[1]));


Но если не сортировкой, то циклом. Но надо же, чтобы совпадало и перебором же будет очень долго если 2е значение 9и значное ?
(Добавление)
А если большой 2й массив объвить, то сразу вылет...
CODE:
int x[100];
int y[10000];
initialarray(#x[0], -1);
initialarray(#y[0], -1);
int a=0;

x[0]=0; y[0]=654;
x[1]=5; y[1]=345;
x[2]=4; y[2]=45;

for (a=0; a<3; a++)
{
messagebox(format(x[a])+" "+format(y[a]));
}

(Отредактировано автором: 28 Ноября, 2023 - 11:56:50)

 
 Top
Страниц (3): [1] 2 3 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by