Автор Тема: Поиск нужных значений в массиве  (Прочитано 2612 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн zerobot [?]

  • Новичок
  • *
  • Сообщений: 78
  • Репутация: 0
    • Награды
Добрый день!
У меня есть массив, например:
$Start[1] = 1
$Start[2] = 0
$Start[3] = 1
$Start[4] = 1
$Start[5] = 0

Как мне получить номера значений, в которых он равен 1? (1,3,4)
(нажмите для показа/скрытия)
« Последнее редактирование: Май 31, 2013, 17:23:46 от zerobot »

Русское сообщество AutoIt

Поиск нужных значений в массиве
« Отправлен: Май 31, 2013, 17:18:42 »

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3887
  • Репутация: 1023
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Поиск нужных значений в массиве
« Ответ #1, Отправлен: Май 31, 2013, 17:29:04 »
Код: AutoIt [Выделить]
Dim $Start[6] = [6, 1, 0, 1, 1, 0], $count = 0
For $i = 0 To UBound($Start) - 1
  If $Start[$i] = 1 Then
    ConsoleWrite($i)
    $count += 1
  EndIf
Next
ConsoleWrite(@CRLF & "Совпадений " & $count & @CRLF)


Индексы массива начинаются с нуля, т.е. первый элемент массива $Start[0]

Оффлайн zerobot [?]

  • Новичок
  • *
  • Сообщений: 78

  • Автор темы
  • Репутация: 0
    • Награды
Re: Поиск нужных значений в массиве
« Ответ #2, Отправлен: Май 31, 2013, 17:33:28 »
Отличный пример! Это то что мне нужно.
Разрешите задать только ещё один вопрос:
Как заполнить вот этот момент программно
Код: AutoIt [Выделить]
Dim $Start[6] = [6, 1, 0, 1, 1, 0], $count = 0

"[6, 1, 0, 1, 1, 0]"
Массив $Start у меня заполняется через функцию PixelSearch.
Код: AutoIt [Выделить]
$Start=PixelSearch(......)

Тогда как оформить ваш пример?

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3887
  • Репутация: 1023
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Поиск нужных значений в массиве
« Ответ #3, Отправлен: Май 31, 2013, 17:43:01 »
PixelSearch() возвращает уже готовый массив из двух элементов. В вашем случае это $Start[0] (координата X) и $Start[1] (координата Y). Что вы ещё хотите заполнить?

Русское сообщество AutoIt

Re: Поиск нужных значений в массиве
« Ответ #3 Отправлен: Май 31, 2013, 17:43:01 »

Оффлайн zerobot [?]

  • Новичок
  • *
  • Сообщений: 78

  • Автор темы
  • Репутация: 0
    • Награды
Re: Поиск нужных значений в массиве
« Ответ #4, Отправлен: Май 31, 2013, 18:08:32 »
Код: AutoIt [Выделить]
For $i = 0 to $Pixels Step 1
$MousePos = MouseGetPos()
$Find[$i] = PixelSearch($MousePos[0]-$Fovx,$MousePos[1]-$Fovy,$MousePos[0]+$Fovx,$MousePos[1]+$Fovy,$Pixel,$SearchMax)
if IsArray($Find[$i]) = TRUE Then
$Good[$i] = 1
Else
$Good[$i] = 0
EndIf
Next


Я хочу получить номера массива $Good где он равен 1, потом посчитать сколько совпадений. Как в вашем примере, только изменённым под вот этот вариант. Затем, если совпадение больше заданного придела, софт выбирает случайный номер из тех что найдены(1,3 или 4 в нашем примере), подставляет его под $Find (например $Find[4]), смотрит координаты этого пикселя, а затем производит с ним некие действия.

Ваш пример идеально мне подходит. Только как его адаптировать под вот такой случай?
А именно строчку
Код: AutoIt [Выделить]
Dim $Start[6] = [6, 1, 0, 1, 1, 0], $count = 0


Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3887
  • Репутация: 1023
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Поиск нужных значений в массиве
« Ответ #5, Отправлен: Май 31, 2013, 18:23:19 »
zerobot  [?]
Цитировать
А именно строчку
Не нужна вам эта строчка (ну, разве что $count = 0 оставить). В приведённом вами коде после выполнения цикла массив $Good[] уже будет заполнен. Ниже подставляете мой код, заменив $Start на $Good.
(нажмите для показа/скрытия)

Русское сообщество AutoIt

Re: Поиск нужных значений в массиве
« Ответ #5 Отправлен: Май 31, 2013, 18:23:19 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
28 Ответов
11866 Просмотров
Последний ответ Июль 01, 2010, 17:36:50
от arr1val
0 Ответов
1368 Просмотров
Последний ответ Июль 28, 2012, 00:13:50
от madmasles
4 Ответов
2670 Просмотров
Последний ответ Февраль 23, 2013, 08:42:10
от mr.Gbabak
11 Ответов
5009 Просмотров
Последний ответ Июнь 03, 2013, 16:05:28
от Trans
3 Ответов
2914 Просмотров
Последний ответ Июнь 17, 2014, 13:22:42
от Продвинутый карибас
11 Ответов
2280 Просмотров
Последний ответ Сентябрь 15, 2014, 09:02:29
от Kaster
3 Ответов
1547 Просмотров
Последний ответ Февраль 02, 2015, 21:37:12
от Death
10 Ответов
2091 Просмотров
Последний ответ Июль 24, 2015, 18:22:25
от Yashied
1 Ответов
439 Просмотров
Последний ответ Июнь 12, 2017, 20:52:24
от musicstashall
1 Ответов
345 Просмотров
Последний ответ Июль 11, 2018, 18:20:59
от InnI