Официальный сайт компании Arduino по адресу arduino.cc
Заполнить массив
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Пнд, 11/03/2019 - 01:35
Добрый день,
помогите пожалуйста с такой задачей - нужно заполнить массив [10000,4] от 0000 до 9999 таким образом, чтобы каждому элементу массива соответствоавала только одна цифра, при этом там где нет цифр, оставить 0.
Например, цифре 0 надо вписать 0,0,0,0. Цифре 10 - 0,0,1,0. Цифре 200 - 0,2,0,0.
То есть нужно получить вот такой массив:
{0,0,0,0},
{0,0,0,1},
{0,0,0,2},
...
{9,9,9,8},
{9,9,9,9}
Всю голову сломал, вроде как это делать надо через перевод в String и затем используя оператор Char?
Всю голову сломал, вроде как это делать надо через перевод в String и затем используя оператор Char?
На ардуино задача вообще не имеет решения, так как очевидно, что для такого массива нужно как минимум 40 тыс байт - а на ардуинке ОЗУ всего 2К и даже флеша только 32К
Что касается метода решения - никаких String там и близко быть не должно. Подход зависит от того, что вы хотите иметь элементами массива. Если цифры - нужно делить число на разряды операцией целочисленного деления и взятия остатка. Если символы - процедура itoa() вам в помощь
Но повторюсь - ни для такого количества цифр ни для символов в ардуине места не хватит.
Добавка - а вообще, самое правильное - это не готовить заранее огромный массив со всеми возможными числами - а вместо этого "на ходу" создавать нужный элемент массива из текущего числа.
Угу, где собссенно Вы собираетесь ентот массив разместить до заполнения и куда запулитьь после оного.
Например в меге оперативы 8 к
может быть считать текущее число и преобразовывать 'на лету' по мере необходимости?
Если бы Вы озвучили конечную задачу, возможно нашлись бы нетривиальные ответы.
Я купил авто с сигналкой, от которой был утерян код аварийного снятия. В техподдержке мне сказали что код этот из 4 цифр и его можно подобрать методом перебора, защиты от брутфорса у неё нет. Поначалу я пытался руками перебрать рандомно, но устал на третий день, решил собрать на ардуино переборщик. С паяльником дружу, с программированием - нет :( Понимаю, что можно сделать на циклах, но не могу придумать как в цикле указать что если цифра 1, то надо отсылать на реле 4 цифры - 0001, при этом 0 это 10 "нажиманий". Если код например 0234, то нужно отослать 10 нажиманий, 2 нажимания, 3 нажимания, 4 нажимания. С синтаксисом худо бедно разобрался, научился мигать светодиодом и даже надергал из примеров вот это (ногами не пинать, синтаксис из школьного курса паскаля двадцатилетней давности):
kinsei - массив из 10 тыс чисел вам в этом коде совершенно не нужен.
Но дальше я пас - взлом сигналок без меня.
В духе паскаля:
Берете 4 цикла от 0 до 9 (скажем, переменные названы так: n1000, n100, n10, n1) вставляете их друг в друга. Таким таким образом внутри самого "дальнего" получаете четыре переменные, которые перебираются от 0 до 9 - тысячи, сотни, десятки, единицы. Далее - "нажимаете" тем, что подбирает в соответствии с этими переменными.
Но дальше я пас - взлом сигналок без меня.
Это не взлом! Сигналка снята и лежит на столе, брелок работает, но что если я его потеряю? Поэтому есть такое понятие как аварийное снятие через код. Этот код подбирается брутфорсом, даже если это автоматизировать, то надо 3-4 дня на подбор, что совершенно не относится ко взлому!
Это я понимаю, вложенные циклы я пробовал, но проблема в следующем - нужно, например, из цифры 0234 сделать последовательно 10 нажиманий, 2, 3, 4 нажимания, между ними полсекунды задержки. То есть как перевести цифру 234 в матрицу 0,2,3,4 ? Я почему-то сразу и подумал про массивы...
Это я понимаю, вложенные циклы я пробовал, но проблема в следующем - нужно, например, из цифры 0234 сделать последовательно 10 нажиманий, 2, 3, 4 нажимания, между ними полсекунды задержки. То есть как перевести цифру 234 в матрицу 0,2,3,4 ? Я почему-то сразу и подумал про массивы...
Блин, ну подумайте чуть-чуть. Если надо - перечитайте ответ Садмана два. три раза, если не поймете - десять раз. Вложенные циклы как раз и дают вам эту "матрицу"...
Внутри четырёх вложенных циклов нет цифры 0234, а есть: n1000=0, n100=2, n10=3, n1=4. Далее придумаете, наверное, как с ними управиться.
На неделе кто то уже подбирал код по станок...
Думаешь, одна бригада "три гада"?
Думаешь, одна бригада "три гада"?
Как мне кажется, те кто специализируется на этом не стали бы спрашивать, спецов бы за деньги взяли. Да и кстати я уже натыкался на скетчи и схемы кодграбберов, когда искал все что может помочь - на эту тему есть всё готовое. А моя проблема вообще из другой плоскости.
Ну и по сабжу, кажется я понял что вы написали, попробую потренироваться )
Результат:
0000
0001
0002
0003
0004
0005
0006
0007
0008
0009
While - тоже самое :(
Два замечания.
Главное! - прочитайте правила форума и вставляйте код правильно. Если этого не сделаете, дальше никакого обсуждения не будет
Второе - посмотрите справку по синтаксису цикла for - у вас в нем ошибка
Понял, исправил.
Понял, исправил.
а справку по for посмотрели? похоже нет
Понял, исправил.
а справку по for посмотрели? похоже нет
Да, я нашел свой косяк, огромное вам спасибо!
Вот рабочий код :)