Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Добавление в массив массива элементов, МАссивы 
:(
    Опции темы
Actionman
Дата 17.12.2012, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 5.4.2011

Репутация: нет
Всего: нет



Отредактировал!

Как реализовать такую функцию:

Имею несолько массивов с элементами
массив_А - с известным числом элементов, например a[]  = {a, b, c};
массив_Б - в нем колличество элементов может меняться от 0 до 1400 (указатель на буффер с n - элементами),  пусть  b[] = {1, 2, 3...};
массив_С - тоже, что и б, только другой буффер c[] = {а, б, в...};

Необходимо как то упрощенно расположить в массив Z с заранее неизвестным число элементов  элементы массивов A, Б и С. Получится чтото вроде: z[] = {a, b, c, 1, 2, 3.., а, б, в...}; с чем я и буду дальше плясать)

Заранее благодарю!


Это сообщение отредактировал(а) Actionman - 17.12.2012, 18:31
PM MAIL   Вверх
baldina
Дата 17.12.2012, 17:37 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 32
Всего: 101



размер массива А, конечно, позволяет хранить содержимое трех массивов?
тогда просто скопируйте в конец сначала элементы из В, потом из С.
PM MAIL   Вверх
volatile
Дата 17.12.2012, 17:46 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



Actionman
Ну и в чем проблема-то?


PM MAIL   Вверх
Actionman
Дата 17.12.2012, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 5.4.2011

Репутация: нет
Всего: нет



Цитата(volatile @ 17.12.2012,  17:46)
Actionman
Ну и в чем проблема-то?

отредактировал

PM MAIL   Вверх
feodorv
Дата 17.12.2012, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 11
Всего: 45



Цитата(Actionman @  17.12.2012,  19:37 Найти цитируемый пост)
отредактировал

Проблема, с которой Вы столкнулись, всё ещё не ясна.

Цитата(Actionman @  17.12.2012,  18:16 Найти цитируемый пост)
Необходимо как то упрощенно расположить в массив Z с заранее неизвестным число элементов  элементы массивов A, Б и С.

Ровно также Вы можете заказать память необходимого размера и последовательно поместить в неё содержимое массивов A, Б и С.

Может быть, массив Z как-то синхронно должен меняться с изменением одного из массивов A, Б и С? Или ещё что...


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
Actionman
Дата 17.12.2012, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 5.4.2011

Репутация: нет
Всего: нет



у меня есть пакет данных - фрейм, в нем есть пара констант,  поле data и поле checksum. Data - массив, размер которого мб различным, от него зависит и контрольная сумма пакета, которую  надо  считать, не по кускам конечно же в циклах ,а  значит нужно точно знать размер . Data  может иметь размер от 1 до 1400 байт, разумеется не целесообразно делать фрейм-массив таких размеров и слать нули. Вот я и не могу организовать правильно этот фрейм.

Добавлено через 39 секунд
Цитата(feodorv @ 17.12.2012,  19:22)
Цитата(Actionman @  17.12.2012,  19:37 Найти цитируемый пост)
отредактировал

Проблема, с которой Вы столкнулись, всё ещё не ясна.

Цитата(Actionman @  17.12.2012,  18:16 Найти цитируемый пост)
Необходимо как то упрощенно расположить в массив Z с заранее неизвестным число элементов  элементы массивов A, Б и С.

Ровно также Вы можете заказать память необходимого размера и последовательно поместить в неё содержимое массивов A, Б и С.

Может быть, массив Z как-то синхронно должен меняться с изменением одного из массивов A, Б и С? Или ещё что...

да так и получается, что должен синхронно меняться.
PM MAIL   Вверх
feodorv
Дата 17.12.2012, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 11
Всего: 45



Цитата(Actionman @  17.12.2012,  20:44 Найти цитируемый пост)
у меня есть пакет данных - фрейм

Какого максимального размера? Почему для сборки фрейма применяются 2 буфера по 1400 байт?


Цитата(Actionman @  17.12.2012,  20:44 Найти цитируемый пост)
поле checksum

Это поле действительно для всего фрейма, или только для буфера размером 1400 байт?


Цитата(Actionman @  17.12.2012,  20:44 Найти цитируемый пост)
Data  может иметь размер от 1 до 1400 байт, разумеется не целесообразно делать фрейм-массив таких размеров и слать нули.

Конечно, нет. Но ведь можно в фрейме выделить 2 байта на хранение длины этого фрейма. И уже потом отталкиваться от значения, находящегося в этих двух байтах. Это, кстати, совершенно обычная практика.


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
math64
Дата 18.12.2012, 08:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 8
Всего: 72



С некоторыми упрощениями, примерно так:
Код

typedef unsigned short crc_t;
#pragma pack(push,1)
struct message {
word len;
byte data[1];
};
#pragma pack(pop)
void sendMessage(word len, byte* data) {
  word size = sizeof(message)-1+len+sizeof(crc_t);
  message* m = (message*)new byte[size];
  m->len = len;
  memcpy(m->data, data, len);
  *(crc_t*)&m->data[len] = crc(m->data, len);
  sendBytes ((byte*)m, size);
  delete[] (byte*)m;
}

void receiveMessage() {
  word len;
  receiveBytes ((byte*)&len, sizeof(len));
  word size = sizeof(message)-1+len+sizeof(crc_t);
  message* m = (message*)new byte[size];
  m->len = len;
  receiveBytes (m->data, len + sizeof(crc_t));
  if (*(crc_t*)&m->data[len] == crc(m->data, len))
    processMessage (m);
  delete[] (byte*)m;
}


Это сообщение отредактировал(а) math64 - 18.12.2012, 08:09
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1037 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.