Помогите разобраться с массивами.

Тема в разделе "Arduino & Shields", создана пользователем Янек, 17 июн 2014.

  1. Янек

    Янек Нуб

    Очень нужен совет. Думаю, его задавали неоднократно, но удобоваримого (простого) ответа на форумах я не нашел.

    Представим код: Вначале прописаны несколько одномерных массивов, потом код, использующий данные одного массива, например первого по счету. После выполнения кода он должен выполняться снова, но уже с данными второго массива, потом третьего и т.д. Имя массива не может быть переменной. Как поступить?
     
  2. Tomasina

    Tomasina Сушитель лампочек Модератор

    размеры массивов одинаковы?
     
  3. Янек

    Янек Нуб

    Да. Все одного размера.
     
  4. Tomasina

    Tomasina Сушитель лампочек Модератор

    тогда может проще многомерный массив (по факту состоящий из сложенных "стопкой" одномерных), и в двойном цикле с ни работать?
     
  5. Янек

    Янек Нуб

    Я уже подумывал обойтись одним массивом, разбитым на равные участки. Но так удобно и наглядно было бы листать одинаковые массивы. Копировать, переставлять и т.п.
     
  6. Янек

    Янек Нуб

    Не умею. Можно подробности.
     
  7. nailxx

    nailxx Официальный Нерд Администратор

    Верно @Tomasina говорит. Вам нужен просто массив из массивов.

    Код (Text):
    // восемь массивов по шестнадцать элементов
    byte myArray[16][8];

    // по очереди работаем с 8 массивами
    for (int i = 0; i < 8; ++i) {
      // по очереди работаем с 16 элементами i-го массива
      for (int j = 0; j < 16; ++j) {
        byte value = myArray[j][i];
        // делаете что-то с j-м элементом i-го массива
      }
    }
     
    Янек нравится это.
  8. Tomasina

    Tomasina Сушитель лампочек Модератор

  9. Янек

    Янек Нуб

    Надо помарковать. Спасибо большое. Отпишусь как будут результаты.
     
  10. Янек

    Янек Нуб

    Вопрос: как в таком случае эти массивы прописываются?
    Самая удобная применяемая форма на сегодня: int array[ ]={1,2,3};
     
  11. Tomasina

    Tomasina Сушитель лампочек Модератор

    если это константы, то так и прописывать. Если значения переменные, то и прописывать поэлементно, в цикле.
     
  12. Янек

    Янек Нуб

    Данные массивов это константы.
    Нельзя быть таким тупым как я, просто я решаю не свою задачу.
    Еще раз: вот например код:
    // восемь массивов по шестнадцать элементов
    byte myArray[16][8];

    // по очереди работаем с 8 массивами
    for (int i = 0; i < 8; ++i) {
    // по очереди работаем с 16 элементами i-го массива
    for (int j = 0; j < 16; ++j) {
    byte value = myArray[j];
    // делаете что-то с j-м элементом i-го массива
    }
    }
    Где и в каком месте мне эти константы записать?
     
  13. Megakoteyka

    Megakoteyka Оракул Модератор

    Янек нравится это.
  14. Янек

    Янек Нуб

    То, что доктор прописал.
     
  15. Янек

    Янек Нуб

    Все работает. Как можно выразить признательность?
     
  16. Megakoteyka

    Megakoteyka Оракул Модератор

    Было бы за что! :)
    Тут обычно нажимают "мне нравится" под полезными сообщениями.