Помогите пожалуйста с задачей! Язык C/C++

Помогите пожалуйста с задачей!Язык C/C++

  • Было уже http://otvet.mail.ru/question/95413077
    Задача на самом деле фигня.
    Только вот смысл писать за вас такой объем?
    Вы сами, понятно, ничего делать не хотите.
    А новичок -- это не оправдание. Все когда-то были новичками.

    > я не понимаю принципа упаковки массива на с++..что от меня требуется ?
    Пусть есть массив, ну к примеру, unsigned short:
    1 2 3 4 5 6 7
    в двоичном виде
    00000001|00000010|00000011|00000100|00000101|00000110

    легко заметить, что минимальное число битов для хранения любого элемента данного массива равно трем, вот их и возьмем:

    001|010|011|100|101|110

    переведем эту последовательность в массив unsigned char, дополнив остаток нулями:

    00101001|11001011|10000000

    или в десятичном виде

    41 203 128

    это и будет упакованный массив.

    Распаковка происходит в обратном порядке. Нужно еще будет хранить размер упакованного элемента.

  • По-видимому, речь идет о данных целого типа.
    Например, если в исходном массиве имеются числа в диапазоне от 0 до 31, то для представления любого из них достаточно 5 бит.
    Если рассматривать память, отведенную под упакованный массив как непрерывную последовательность бит, то каждые 5 бит упакованного массива будут содержать число исходного массива. В общем случае, для произвольных данных, и упаковка данных в такой массив, и распаковка данных из него - не очень простая задача.