3-х мерный массив.
3-х мерный массив.
День добрый такой вопрос.
мне надо хранить в микроконтроллере AtTiny2313 массив 3-х мерный.
подскажите, как мне его хранить, компилятор ругается.
я делаю это так
extern int mas[5][5][5]
мне надо хранить в микроконтроллере AtTiny2313 массив 3-х мерный.
подскажите, как мне его хранить, компилятор ругается.
я делаю это так
extern int mas[5][5][5]
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
extern - это значит внешний. то есть где-то еще ваш массив должен быть определен, а в этом месте вы лишь сообщаете, что он существует. вы его поределили в том, другом месте?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Вообщем проблема в чем? в том что мне не хватает памяти. как мне решить проблему?
(задача, хранить бинарный 3-х мерный массив)
ришений уйму.
например
1.
переводить int в десятичную систему.
То есть в одном int можно хранить(в моем случае удобно) 5
2.
Хранить массив не в int а в char. Но памяти опять не хватает
Но можно в строке . На сколько я знаю char * поддерживает до 255 символов. Для моей задачи етого более чем.
Вот только я не уверен что все так просто думаю что есть более простые методы
(задача, хранить бинарный 3-х мерный массив)
ришений уйму.
например
1.
переводить int в десятичную систему.
То есть в одном int можно хранить(в моем случае удобно) 5
2.
Хранить массив не в int а в char. Но памяти опять не хватает
Но можно в строке . На сколько я знаю char * поддерживает до 255 символов. Для моей задачи етого более чем.
Вот только я не уверен что все так просто думаю что есть более простые методы
-
SII
- Вымогатель припоя
- Сообщения: 635
- Зарегистрирован: Пт янв 30, 2009 14:50:35
- Откуда: Солнечногорск
PacMan писал(а):переводить int в десятичную систему.
То есть в одном int можно хранить(в моем случае удобно) 5
А по-русски? Причём здесь десятичная система и какое отношение к int имеет значение 5? В памяти всё в любом случае всё хранится в двоичном виде.
PacMan писал(а):На сколько я знаю char * поддерживает до 255 символов.
char * -- это указатель на символ, и ничего более. Он никак не может поддерживать "до 255" или до чего ещё угодно символов -- он просто содержит некий адрес памяти, по которому лежит какой-нибудь символ. А ограничением в этой задаче, похоже, является объём ОЗУ контроллера, а значит, надо думать, как хранить данные компактнее.
вообщем про int)))
мне надо хранить массив int mas[5][5][5]
предлагаю взять массив int mas[5][5]
перевести mas[i][j] в двоичный вид, получится что то типа(пусть mas[i][j] равен 31) 11111 тоесть я избавляюсь от одного "[]" понятно?)))
про char, я имел ввиду char s[25];
или char *s;
s = new char[];
)))
мне надо хранить массив int mas[5][5][5]
предлагаю взять массив int mas[5][5]
перевести mas[i][j] в двоичный вид, получится что то типа(пусть mas[i][j] равен 31) 11111 тоесть я избавляюсь от одного "[]" понятно?)))
про char, я имел ввиду char s[25];
или char *s;
s = new char[];
)))
- Synergetik
- Встал на лапы
- Сообщения: 117
- Зарегистрирован: Чт фев 28, 2008 23:54:35
- Откуда: Воскресенск, МО
- Контактная информация:
Re: 3-х мерный массив.
PacMan писал(а):мне надо хранить в микроконтроллере AtTiny2313 массив 3-х мерный.
подскажите, как мне его хранить
Да в чём проблема? Если нужно хранить трёхмерный массив двоичных одноразрядных чисел и чётко фиксированы элементы массива, объявите двухмерный массив char mass[5][5], в char'е 8 битов - используйте первые 5 посредством маски. Перерасхода памяти почти не будет. Если третья размерность больше 8, используйте int и т. д. Вот и всё.
Последний раз редактировалось Synergetik Сб сен 26, 2009 21:01:19, всего редактировалось 1 раз.
- Synergetik
- Встал на лапы
- Сообщения: 117
- Зарегистрирован: Чт фев 28, 2008 23:54:35
- Откуда: Воскресенск, МО
- Контактная информация:
PacMan писал(а):что значит посредством маски?)))
Маска реализуется операцией поразрядного И.
Пусть имеется массив char mass[rows][cols];. Чтение из элемента mass[x][y][z], если не ошибаюсь: t=mass[x][y]&(1<<z); Индексы x, y, z начинаются с нуля.
Запись сейчас не могу сообразить. В крайнем случае ручками или условным оператором if.
- Synergetik
- Встал на лапы
- Сообщения: 117
- Зарегистрирован: Чт фев 28, 2008 23:54:35
- Откуда: Воскресенск, МО
- Контактная информация:
Я знаю только единственный способ перевода из одной системы счисления в другую. Для 2->10 пусть имеется число b01101. Нужно подсчитать сумму 1*2^0+0*2^1+1*2^2+1*2^3+0*2^4 в десятичной системе счисления. Аналогично можно производить расчёт в обратном направлении (10->2), вот только считать в двоичной системе счисления мы пока не научились.PacMan писал(а):спасибо за помощь.
у меня еще один вопрос. как теперь из 2 -> 10 систему перевести
PacMan писал(а):я понимаю это должно быть так
mass[i][j]=n;
где n запись ( пусть 11111 ) в 10 - й форме
Что-то сомневаюсь в целесообразности этого. Огласите задачу полностью.
- __Alexander
- Потрогал лапой паяльник
- Сообщения: 335
- Зарегистрирован: Вт сен 11, 2007 10:27:08
- Откуда: Киев
- andrey_artemov
- Встал на лапы
- Сообщения: 136
- Зарегистрирован: Сб авг 15, 2009 21:26:50
- Откуда: Пенза
- Контактная информация:
- andrey_artemov
- Встал на лапы
- Сообщения: 136
- Зарегистрирован: Сб авг 15, 2009 21:26:50
- Откуда: Пенза
- Контактная информация:
__Alexander писал(а):Не совсем понятно что есть перевод из 2 в 10 в Си.
Вот например:
x = 0x02; // это число 2 в шестнадцатеричной системе
x = 0b00000010 ; // это число 2 в двоичной системе
x = 2; // это число 2 десятичной системе
в чем проблема то?
----------
Забыли в восмеричной
х= 02; это число 2 в восмеричной системе исчесления
- Synergetik
- Встал на лапы
- Сообщения: 117
- Зарегистрирован: Чт фев 28, 2008 23:54:35
- Откуда: Воскресенск, МО
- Контактная информация: