Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2010, 18:38   #1
ATAMAN200
Пользователь
 
Регистрация: 30.08.2010
Сообщений: 41
Вопрос Не происходит объединение?

Код:
#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
ATAMAN200 вне форума Ответить с цитированием
Старый 31.10.2010, 20:20   #2
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Код:
new unsigned char[];
Это не похоже на С++.
Код:
*a2 = HIBYTE(c[k]);
*b2 = LOBYTE(c[k]);
Записывается всегда в a2[0] и b2[0].
Somebody вне форума Ответить с цитированием
Старый 31.10.2010, 20:25   #3
ATAMAN200
Пользователь
 
Регистрация: 30.08.2010
Сообщений: 41
По умолчанию

Цитата:
Сообщение от Somebody Посмотреть сообщение
Код:
new unsigned char[];
Это не похоже на С++.
Код:
*a2 = HIBYTE(c[k]);
*b2 = LOBYTE(c[k]);
Записывается всегда в a2[0] и b2[0].
записал но результат не изменился
ATAMAN200 вне форума Ответить с цитированием
Старый 31.10.2010, 20:53   #4
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
Вопрос

Цитата:
Сообщение от ATAMAN200 Посмотреть сообщение
записал но результат не изменился
Что куда записал? Я говорю, тут только в нулевой элемент пишется, а в остальные нет.
Somebody вне форума Ответить с цитированием
Старый 31.10.2010, 20:56   #5
ATAMAN200
Пользователь
 
Регистрация: 30.08.2010
Сообщений: 41
Вопрос

я ведь не давно начал интересоваться C++ и поэтому много чего не знаю врядли я смогу добиться сам результата
ATAMAN200 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как происходит Компиляция? ZhekON Свободное общение 21 22.04.2010 10:06
Не происходит заполнение таблицы Lokos БД в Delphi 18 22.04.2010 09:48
[HELP] C; сравнение не происходит AlexandrSN Общие вопросы C/C++ 2 11.06.2009 03:13
Почему так происходит? Zeraim Общие вопросы Delphi 1 05.05.2008 14:10