Работа вам нужна срочно. Не волнуйтесь, уложимся!
Заполните, пожалуйста, данные для автора:
- 22423 авторов готовы помочь тебе.
- 2402 онлайн
Упаковка, или сжатие информации. В двухбайтную переменную unsigned short r (16 бит) запишем 16/2=8 чисел из диапазона 0..3.
unsigned short P (unsigned short mymax,unsigned short shift, unsigned short n )
{ randomize(); unsigned short num, r=0;
for (int j=1; j<=n; j++)
{ r<<=shift; // или r=r< num=random(mymax+1); cout< r |= num; // или r+= num; } return r; } void main() { unsigned short R= P(3, 2, 8); printf(" \n % x % d",R, R); getch(); } Распаковка. Как из числа r, в котором хранятся восемь чисел из диапазона 0..3, “взять” каждое из них и вывести? void UnPark (unsigned short r, unsigned short shift, unsigned short n) { unsigned Maska=0xC000, k=14; for (int j=1; j<=n; j++,k –=2, Maska>>=shift) { short num= (r & Maska)>>k; cout< } void main() { unsigned short R= P(3, 2, 8); /* Функцию P см. в примере 11 */ printf(" \n % x % d\n",R, R); UnPark(R,2,8); getch(); }Пример 2:
Решение от преподавателя: