реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> поместить массив в массив
sergey sva
сообщение Jan 8 2008, 17:52
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



привет всем.
Сейчас делаю программку для графического дисплея. Символы и буквы хранятся в массиве:
code unsigned char A1[9] = {0x80,0xE0,0x9C,0x13,0x13,0x9C,0xE0,0x80,0x00}; //À
code unsigned char A2[7] = {0x81,0xFF,0x89,0x89,0x89,0x73,0x00}; //Á
code unsigned char A3[7] = {0x81,0xFF,0x89,0x89,0x89,0x76,0x00}; //Â
code unsigned char A4[7] = {0x81,0xFF,0x81,0x01,0x01,0x07,0x00}; //Ã
code unsigned char A5[7] = {0xE0,0x31,0x2F,0x21,0x3F,0xE1,0x00}; //
Было бы не плохо поместить эти массивы в один массив чтобы один элемент соответствовал
одному из этих массивов.

Наподобие такого:

char arrr[5] = {

code unsigned char A1[9] = {0x80,0xE0,0x9C,0x13,0x13,0x9C,0xE0,0x80,0x00}; //À
code unsigned char A2[7] = {0x81,0xFF,0x89,0x89,0x89,0x73,0x00}; //Á
code unsigned char A3[7] = {0x81,0xFF,0x89,0x89,0x89,0x76,0x00}; //Â
code unsigned char A4[7] = {0x81,0xFF,0x81,0x01,0x01,0x07,0x00}; //Ã
code unsigned char A5[7] = {0xE0,0x31,0x2F,0x21,0x3F,0xE1,0x00}; //


};
как это заделать не соображу . подскажите пожалуйста.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 8 2008, 20:13
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



А слабо не думая почитать первоисточники:
char arrr[5][9] = { {


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 8 2008, 20:44
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(zltigo @ Jan 8 2008, 22:13) *
char arrr[5][9] = { {
Не очень эффективно - у него массивы разной длины, короткие будут дополнены нулями. Возможно, более эффективным будет либо массив указателей, либо одномерный с разбором на этапе исполнения.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
rezident
сообщение Jan 8 2008, 21:13
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Сергей Борщ @ Jan 9 2008, 01:44) *
либо одномерный с разбором на этапе исполнения.
ИМХО одномерный массив, заполненный например структурами, состоящими из двух полей (количество байт в записи и сама запись), хорош только, если записи всегда извлекаются последовательно с начала массива. Если же требуется произвольный доступ к записям, то нужен еще один массив с индексами этих записей. Либо извлечение записей будет тормозить на переборе их всех каждый раз с начала массива.
Go to the top of the page
 
+Quote Post
SamHaris
сообщение Jan 9 2008, 07:03
Сообщение #5





Группа: Новичок
Сообщений: 13
Регистрация: 11-08-05
Пользователь №: 7 546



В варианте предложенный zltigo
char arrr[][9] = { {
расходуются лишние байты на пустые нули в конце записи, только нужно выбрать ограничение ширины буковки.

В варианте предложенный Сергей Борщ
char* A1 = {
char* arrr[] = {A1,
расходуется память на размере указателя в осносном массиве, но его не удобно хранить в файле, так как смещение постоянно меняется.

rezident предлогает дело, в место нулей в конце, первый байт зарезервировать под размер масива или ширину буковки, что одно и тоже, тогда можно многоточие как за один символ воспринимать, или букву Ы забить.

ЗЫ. если юзается графический дисплей не лучше перейти на отрисовку линии, маштабируемость буковки повыситсчя.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 9 2008, 07:19
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(SamHaris @ Jan 9 2008, 09:03) *
В варианте предложенный zltigo

Я не предлагал "вариант" хранеия фонтов, а просто прямо ответил на поставленый вопрос.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 9 2008, 11:16
Сообщение #7


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(SamHaris @ Jan 9 2008, 09:03) *
В варианте предложенный Сергей Борщ
char* A1 = {
char* arrr[] = {A1,
расходуется память на размере указателя в осносном массиве, но его не удобно хранить в файле, так как смещение постоянно меняется.
Да, память на указатель расходуется. Я же и написал - надо считать, на что уйдет больше памяти - на указатели или заполнение нулями. Еще надо учитываать, что вариант с указателем требует дополнительного времени на чтение указателя. Насчет хранения в файле - не понял. Если фонт подгружаемый, то массив можно сформировать внешними программами какой угодно - хоть с таблицей смещений в начале.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 3rd August 2025 - 12:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.01382 секунд с 7
ELECTRONIX ©2004-2016