Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
Топ:
Особенности труда и отдыха в условиях низких температур: К работам при низких температурах на открытом воздухе и в не отапливаемых помещениях допускаются лица не моложе 18 лет, прошедшие...
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Процедура выполнения команд. Рабочий цикл процессора: Функционирование процессора в основном состоит из повторяющихся рабочих циклов, каждый из которых соответствует...
Интересное:
Наиболее распространенные виды рака: Раковая опухоль — это самостоятельное новообразование, которое может возникнуть и от повышенного давления...
Берегоукрепление оползневых склонов: На прибрежных склонах основной причиной развития оползневых процессов является подмыв водами рек естественных склонов...
Подходы к решению темы фильма: Существует три основных типа исторического фильма, имеющих между собой много общего...
Дисциплины:
2017-12-21 | 428 |
5.00
из
|
Заказать работу |
|
|
Сжатие и кодирование информации требуется прежде всего для организации долговременного хранения и передачи данных. Обычно пакеты программ, игрушки и т.п. передают в виде архивов, запакованных специальными программами упаковщиками. Наиболее распространенными из них являются ARJ, ZIP, RAR. Любой упаковщик работает на трех основных принципах.
Если взять любой файл на диске, например этот текст, в нем есть часто встречающиеся символы, редко встречающиеся и вовсе отсутствующие. Например пробел в этом тексте встречается 2756 раз, точка 1139 раз, буква i 620 раз, но из 255 возможных символов алфавита 162 символа в этом тексте не встречаются ни разу. Это более половины алфавита ЭВМ. Следовательно, для этого файла, два символа можно закодировать одним.
Кроме этого существуют повторяющиеся последовательности, например строка из пробелов. Тогда тоже достаточно в архиве сохранить один символ и указать количество его повторений.
Для маленьких файлов существует третий способ сократить занимаемое ими место. Файловая система MS DOS не может выделить для записи на диск блоками по 4 кБ. Даже если указывается, что файл занимает 1 байт, на самом деле он занимает 4 кБ, или для большего файла кратный 4 кБ размер. По этому даже простое слияние нескольких файлов в один, уже сокращает занимаемое ими место.
При передачи данных по каналам связи, например модем, встает обратная задача. Необходимо добавить к каждому передаваемому байту проверочную информацию, которая должна позволить принимаемой стороне распознать и если возможно исправить ошибку возникшую в канале связи. Этот процесс называется кодированием.
Может быть применено и шифрование. Тогда с информацией производят преобразования, например замену всех символов на другие значения из специальной таблицы. Понять такой текст без этой таблицы (ключа) невозможно.
|
Программа анализа файла
#include <stdio.h>
#include <conio.h>
int main(void)
{
char name1[20],ch; /* Имя обрабатываемого файла */
FILE *File1; /* Указатель на файл */
unsigned int nc[256],i,n; /* nc - счетчик вхождений символов */
printf("\n Введите имя исходного файла: ");
scanf("%s",name1);
File1=fopen(name1, "rt");
if(File1==NULL)
{
printf("\n Открыть указанный файл невозможно."); return(1);
} /* Кон. if(ошибка открытия файла) */
for(i=0;i<256;i++) nc[i]=0; /* Обнуление счетчика */
while(!feof(File1))
{
fscanf(File1,"%1c",&ch);
nc[ch]++;
} /* Кон. while() просмотр файла */
fclose(File1);
n=0;
for(i=0;i<256;i++) if(nc[i]==0) n++; /* Подсчет числа неиспользуемых символов */
printf("\n В файле содержатся:");
for(i=1;i<256;i++)
{
printf("\n Символ: %c (%3d) содержимся %5d раз.",i,i,nc[i]);
if((i%20)==0) getch(); /* Задержка после вывода страницы */
} /* Кон. for() */
printf("\n В файле ни разу не использовались %d символов.",n);
return(1);
} /* Кон. main() */
Упаковщик файлов
Необходимо реализовать простейший упаковщик реализующий следующий алгоритм сжатия. Составляется таблица перекодировки символов, символы не используемые в файле в ней отсутствуют. Если количество не используемых символов велико, то можно записать в один символ несколько. Для этого рекомендуется использовать операцию сдвига.
В предлагаемой программе предлагается записывать два символа в один, это возможно если число используемых символов в тексте не превышает 32, только заглавные или строчные буквы. Иначе программа должно вывеси сообщение о невозможности сжать файл.
Позиционирование по файлу
Позиционирование по файлу осуществляет функция: fseek(*<Файл>, <Смещение>, <Откуда>) <Откуда> - одно из
SEEK_SET начало файла
SEEK_CUR - текущая позиция.
SEEK_END - конец файла.
*<Файл> - Указатель на файл полученный из open().
Двоичный сдвиг
<Переменная или число> >> <Количество разрядов>
|
<Переменная или число> << <Количество разрядов>
Операция выполняет двоичный сдвиг числа на указанное число разрядов, так как числа представляются в двоичной системе счисления, сдвиг на 1 разряд эквивалентен делению или умножению на 2.
Операция допустима только над типами int, long, char.
|
|
История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!