Перевод двумерного массива в одномерный(язык С)
"Можно рассматривать чёрно-белую картинку как двумерный массив,заполненый нулями и единицами,если 0 изображает белую,а 1 - чёрную точку.
Одним из способов сэкономить на размере файла-отнестись к массиву,как одномерному,содержащему последовательности единиц и нулей и выразить каждую последовательность через её длину.
Например:
011110010010110011111111
1421211228
Для удобства предположим,что первый член массива всегда 0. Назовём это представление сжатым представлением.
1.Написать функцию int compact(int A[N][M],int[]),
которая получает двумерный массив целых чисел
А размером NxM,представляющий чёрно-белую картинку. Функция запишет в В сжатое представление массива А и возвратит количество последовательностей.Можно предположить,что В достаточно велик.
В этой функции нельзя пользоваться дополнительными массивами
2. Написать функцию
void printpicture(int B[],int n,int rowSize)
которая получает массив В и его длину n ,которые представляют собой сжатое представление картинки,а также длину строки несжатой картинки
rowsize. Функция печатает картинку,таким образом.что белое это двойной пробел" ",а чёрное-"@@". В этой функции нельзя пользоваться дополнительными массивами,также нельзя пользоваться константами M и N.
3. Напишите программу принимающую от пользователя двумерный массив размером NxM представляющий чёрно-белую картинку,сжимающую картинку в одномерный массив L(допустить,что L достаточно велик) с помощью compact,выводящую на экран сжатое представление картинки(включая количество последовательностей и выводящую на экран картинку с помощью printpicture.
Используйте константы:
#define N 32
#define M32
#define L250 "
Оригинальный массив,с которым нужно работать присоединён....
Такие вот задания на нашем химическом факультете.
Заранее спасибо
На случай,если кто-то знает иврит,оригинал задания тут:
http://webcourse.cs.technion.ac.il/234112/Winter2005-2006/hw/WCFiles/HW5.doc
Цитата:
Оригинальный массив,с которым нужно работать присоединён....
НЕ понял,массив присоединился или нет? Если нет-вернусь через несколько часов и попытаюсья присобачить