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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Почему не происходит объединение 
:(
    Опции темы
ATAMAN200
  Дата 31.10.2010, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

#include "stdafx.h" 
#include <iostream>
#include "conio.h" 
using namespace std;

#define HIBYTE(l) ((l & 0xffff) >> 8)
#define LOBYTE(l) ((int)(l) & 0xff)
//Макросы для разделения на младший бит и старший бит


unsigned char *a2 = new unsigned char[];
unsigned char *b2 = new unsigned char[];
unsigned char *c2 = new unsigned char[];

unsigned __int16 a[] = {0xFA55, 0x5699, 0xD5D8, 0xAAF6, 0x8899}, 
                 b[] = {0x6456, 0x9986, 0x3336, 0x5776, 0xAF64, 0x6667};
unsigned __int16 *c = new unsigned __int16[];

int main()
{    
    for(int i=0, j=0, k=0; k < (sizeof(a)+sizeof(b))/sizeof(*c); k++)
    {
c[k] = (a[i] << b[j]) ? a[i++] : b[j++];
//Объединяет массивы a[] и b[] в массив *c


*a2 = HIBYTE(c[k]);
*b2 = LOBYTE(c[k]);
//Деллит данные массива *c на старший, млыдший бит и записывает их в массивы *a2 и *b2
}


for(int i=0, j=0, k=0; k < (sizeof(a2)+sizeof(b2))/sizeof(*c2); k++)
{
c2[k] = (a2[i] << b2[j]) ? a2[i++] : b2[j++];
//Объединяет массивы a2[] и b2[] в массив *c2


printf("%x\n", c2[k]);
//Результат объединения массивов a2[] и b2[] должен выводить на экран в столбик???
}
getch();
}


на экран выводит вот такое

66
fd
fd
fd
ab
ab
ab
ab

а должен выводить

fa
55
56
99
d5
d8
aa
f6
88
99
64
56
99
86
33
36
57
76
af
64
66
67
PM MAIL   Вверх
leniviy
Дата 1.11.2010, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(ATAMAN200 @  31.10.2010,  18:31 Найти цитируемый пост)
unsigned __int16 *c = new unsigned __int16[];

Это всё равно что new unsigned __int16[0], т.е. массив нулевой длины. В него нельзя ничего записывать, а то повредится память программы.

Вообще в приведенном коде нет ни одной правильной строчки. Его надо стереть и переписать заново.

Это сообщение отредактировал(а) leniviy - 1.11.2010, 10:16
PM MAIL   Вверх
xvr
Дата 1.11.2010, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



А вот тут 
Код

c[k] = (a[i] << b[j]) ? a[i++] : b[j++];
<< - это что бы надежнее сравнилось?  smile Операция 'меньше' - это '<', а то, что вы написали - это сдвиг влево

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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