J
joytickus
Гость
Добрый день, уважаемые дамы и господа!
Коротко о главном:
Есть таблица из 1-5 строк и a-d столбцов с присутствующими данными в виде двоичных значений, меняющимися при получении данных на вход.
Как правильно оформлять двухмерный массив для этой таблицы: Dim $MyArray[4][5] = [[a, b, c, d], [1, 2, 3, 4, 5]]?
Как работать в дальнейшем с этим массивом? Как получать количество значений в определенных строках и/или столбцах? Какими командами?
Как обеспечить изменение значений в массиве не сторонними переменными с двоичным переключателем, а непосредственно в массиве?
PS: Если что-то не так с созданной темой, то прошу указать мне, что нужно исправить.
PPs: При ответах прошу учитывать возможное непонимание основных концепций автором темы и, по возможности, отсылать к нужным понятиям и терминам для поиска информации.
Коротко о главном:
Есть таблица из 1-5 строк и a-d столбцов с присутствующими данными в виде двоичных значений, меняющимися при получении данных на вход.
Как правильно оформлять двухмерный массив для этой таблицы: Dim $MyArray[4][5] = [[a, b, c, d], [1, 2, 3, 4, 5]]?
Как работать в дальнейшем с этим массивом? Как получать количество значений в определенных строках и/или столбцах? Какими командами?
Как обеспечить изменение значений в массиве не сторонними переменными с двоичным переключателем, а непосредственно в массиве?
последний раз касавшийся математики сложнее умножения в школе тринадцать лет назад. Программированием не занимался вообще никогда, а тут вдруг понадобилось написать для своих нужд программу, и воспользоваться я решил для этих целей AutoIt. Плотно изучил начальные концепции программирования в общем, синтаксис AutoIt, многое понял, что-то уже реализовал в коде (избретая велосипеды на каждом шагу ), но сейчас натолкнулся на неподъемную вещь -- массивы. Уже сутки копаюсь в справке, документации, форуме и других интернетах на предмет информации реализации массивов, но везде она представлена в виде для людей, уже понимающих основы. А я, похоже, самые основы и не понимаю.
Если можно, сначала задача, которую я перед собой поставил, а ниже -- мое видение реализации и вопросы. Если не очень интересно, то можно перейти сразу к вопросам в конце.
Есть некоторое количество систематических элементов, которые складываясь вместе, образуют уникальные идентификаторы для элементов второго уровня. Для примера возьмем: числовой ряд от 1 до 5 и четыре буквенных обозначения -- a, b, с и d. Таким образом, элементы второго уровня будут иметь значения вида 1a, 3c, 9b и т.д. Они не повторяются, есть только этот набор из 20 элементов (5х4) В процессе деятельности эти элементы в рандомном порядке будут подаваться на вход в фиксированных порциях, например, по два элемента. Нужно определять, как между собой соотносятся эти элементы. Человек, глядя на набор [1c, 5d, 3a, 2c, 3c, 2a] видит, что в нем элементы имеют определенные сходства -- три цифры с буквой "с", по два раза повторяются цифры "2" и "3". Есть необходимость научить компьютер понимать то же самое и в соответствии с этим пониманием совершать какое-то действие.
Как я подошел к задаче:
Для начала ввел глобальные переменные, которые у меня имеют значения 0 и 1 ("флажки"), и соответствуют каждому из двадцати элементов. При вводе переменных они обозначены "0" Таким образом, когда программа получает на вход 2с, то меняет значение переменной "$2с" на "1": $2c = 1. В дальнейшем получается что в перечисленных двадцати переменных некоторые флажки "подняты" -- имеют значение не "0", а "1".
Поскольку эти элементы систематические, то их можно объединить в таблицу, в которой строкам будут соответсвовать, например, цифры, а столбцам -- буквы. И, если в эту таблицу поместить флажки, то будет видно, в чем сходны между собой наборы элементов. Например, из примера выше, будет видно, что в столбце "с" подняты флажки у элементов 1, 2 и 3, а в строках "2" и "3" подняты флажки у двух элементов. И, например, если задать пороговое значение для однотипных элементов 3, то в первом случае программа выполнит нужное действие, например, выведет сообщение.
Дальше в сомнениях:
Сначала подошел к вопросу методом перебора (копи-пейст никто не отменял), логично посчитав, что компьютер не человек и способен совершать операции гораздо быстрее. И для определения первых двух элементов (а всего их больше сотни), перебрать возможные комбинации вполне реально, тем более что есть неплохой оператор Select...Case...EndSelect. (К слову, программа получилась на 35000 строк, но работала исправно ). Но когда количество элементов увеличилось, я понял, что тону.
Тут я и задумался о таблице. Когда начал копать более подробно, обнаружил, что есть концепция массивов. Сама концепция понятна -- по сути, это и есть таблица, заданная определенными операторами с определенными значениями. Но вот как ее задать в коде, и главное, как потом научить программу с этим работать?
Мои предположения:
Есть возможность задать переменную в виде массива, а если указывать определенные значения, то массив получится двухмерный.
Насколько я нашел:
Dim [Const] $array[subscript 1]...[subscript n] [ = initializer ]
где
initializer -- The value that will be initially assigned to the variable. A Const must include the initializer. The initializer can be a function call.
Вопросы:
Непонятно, как задать нужные мне параметры -- Dim $MyArray[5][4]?
Какова роль "инициализатора" и как он правильно вписывается в мой пример строкой выше? (пояснение из справки НЕ уложилось у меня в голове после сотого прочтения)
Как в коде в дальнейшем реализовать превышение порогового значения для некоторых элементов в строке или столбце?
Как реализовать выборку нужных значений из таблицы? (Например, если значений "3" два из четырех возможных, то нужно указать, какие именно присутствуют.)
Да и просто как запрашивать, какие "флажки" подняты?
Есть некоторое количество систематических элементов, которые складываясь вместе, образуют уникальные идентификаторы для элементов второго уровня. Для примера возьмем: числовой ряд от 1 до 5 и четыре буквенных обозначения -- a, b, с и d. Таким образом, элементы второго уровня будут иметь значения вида 1a, 3c, 9b и т.д. Они не повторяются, есть только этот набор из 20 элементов (5х4) В процессе деятельности эти элементы в рандомном порядке будут подаваться на вход в фиксированных порциях, например, по два элемента. Нужно определять, как между собой соотносятся эти элементы. Человек, глядя на набор [1c, 5d, 3a, 2c, 3c, 2a] видит, что в нем элементы имеют определенные сходства -- три цифры с буквой "с", по два раза повторяются цифры "2" и "3". Есть необходимость научить компьютер понимать то же самое и в соответствии с этим пониманием совершать какое-то действие.
Как я подошел к задаче:
Для начала ввел глобальные переменные, которые у меня имеют значения 0 и 1 ("флажки"), и соответствуют каждому из двадцати элементов. При вводе переменных они обозначены "0" Таким образом, когда программа получает на вход 2с, то меняет значение переменной "$2с" на "1": $2c = 1. В дальнейшем получается что в перечисленных двадцати переменных некоторые флажки "подняты" -- имеют значение не "0", а "1".
Поскольку эти элементы систематические, то их можно объединить в таблицу, в которой строкам будут соответсвовать, например, цифры, а столбцам -- буквы. И, если в эту таблицу поместить флажки, то будет видно, в чем сходны между собой наборы элементов. Например, из примера выше, будет видно, что в столбце "с" подняты флажки у элементов 1, 2 и 3, а в строках "2" и "3" подняты флажки у двух элементов. И, например, если задать пороговое значение для однотипных элементов 3, то в первом случае программа выполнит нужное действие, например, выведет сообщение.
Дальше в сомнениях:
Сначала подошел к вопросу методом перебора (копи-пейст никто не отменял), логично посчитав, что компьютер не человек и способен совершать операции гораздо быстрее. И для определения первых двух элементов (а всего их больше сотни), перебрать возможные комбинации вполне реально, тем более что есть неплохой оператор Select...Case...EndSelect. (К слову, программа получилась на 35000 строк, но работала исправно ). Но когда количество элементов увеличилось, я понял, что тону.
Тут я и задумался о таблице. Когда начал копать более подробно, обнаружил, что есть концепция массивов. Сама концепция понятна -- по сути, это и есть таблица, заданная определенными операторами с определенными значениями. Но вот как ее задать в коде, и главное, как потом научить программу с этим работать?
Мои предположения:
Есть возможность задать переменную в виде массива, а если указывать определенные значения, то массив получится двухмерный.
Насколько я нашел:
Dim [Const] $array[subscript 1]...[subscript n] [ = initializer ]
где
initializer -- The value that will be initially assigned to the variable. A Const must include the initializer. The initializer can be a function call.
Вопросы:
Непонятно, как задать нужные мне параметры -- Dim $MyArray[5][4]?
Какова роль "инициализатора" и как он правильно вписывается в мой пример строкой выше? (пояснение из справки НЕ уложилось у меня в голове после сотого прочтения)
Как в коде в дальнейшем реализовать превышение порогового значения для некоторых элементов в строке или столбце?
Как реализовать выборку нужных значений из таблицы? (Например, если значений "3" два из четырех возможных, то нужно указать, какие именно присутствуют.)
Да и просто как запрашивать, какие "флажки" подняты?
PS: Если что-то не так с созданной темой, то прошу указать мне, что нужно исправить.
PPs: При ответах прошу учитывать возможное непонимание основных концепций автором темы и, по возможности, отсылать к нужным понятиям и терминам для поиска информации.