Семинары (1171138), страница 8

Файл №1171138 Семинары (Семинары) 8 страницаСеминары (1171138) страница 82020-04-27СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 8)

создать копию бинарного файла путем последовательного чтения данных изоригинального файла и записи их в копию.2. написать программу побайтного сравнения двух файлов.Исходный кодРезультат выполнения3Пример 3: Первый вариант алгоритма сжатия без потерь RLE:Сжатие в RLE происходит за счет того, что в исходном файле встречаются цепочкиодинаковых байт. Замена их на пары <счетчик повторений, значение> уменьшаетизбыточность данных.

Рассмотрим, например, следующую строку: abbbbzzzzddaaaaaffffuuпосле применения группового сжатия эта последовательность будет преобразована в:1a4b4z2d5a4f2u. В данном алгоритме признаком счетчика (counter) служат единицы в двухверхних битах считанного байта. Соответственно оставшиеся 6 бит расходуются на счетчик,который может принимать значения от 1 до 64. Строку из 64 повторяющихся байтов мыпревращаем в два байта, т.е. сожмем в 32 раза. Если же кодируемая последовательностьсодержит единичный байт, значение которого больше 191, то он так же кодируется парой<счетчик, значение>.Алгоритм декомпрессии при этом выглядит так: считываем счетчикInitialization(...);do {byte = ImageFile.ReadNextByte();if(является счетчиком(byte)) {counter = Low6bits(byte)+1;value = ImageFile.ReadNextByte();for(i=1 to counter)DecompressedFile.WriteByte(value)}else {DecompressedFile.WriteByte(byte)} while(ImageFile.EOF());Задание2:Начертить блок-схему первого варианта алгоритма RLEБлок-схема енкодера4Блок-схема декодера5Пример 3: второй вариант алгоритма сжатия без потерь RLE:Второй вариант этого алгоритма имеет больший максимальный коэффициентархивации и меньше увеличивает в размерах исходный файл.

Признаком повтора в данномалгоритме является единица в старшем разряде соответствующего байта:Алгоритм декомпрессии для него выглядит так: считываем счетчик повторяемых илиоригинальных байт. Если первый бит счетчика установлен в 1, значит следующий байтследует повторить n раз, n={0;127}. Как извлечь младшие 7 разрядов из байта см. в описаниилабораторной работы 1 (побитовые логические операции). Если первый бит счетчикаустановлен в 0, значит следующие n байт (n={0;127}) следует записать по одному разу.Initialization(...);do {byte = ImageFile.ReadNextByte();counter = Low7bits(byte)+1;if(если признак повтора(byte)) {value = ImageFile.ReadNextByte();for (i=1 to counter)CompressedFile.WriteByte(value)}else {for(i=1 to counter){value = ImageFile.ReadNextByte();CompressedFile.WriteByte(value)}CompressedFile.WriteByte(byte)} while(ImageFile.EOF());Задание 3:Начертить блок-схемe для второго варианта алгоритм RLEБлок-схема енкодераБлок-схема декодераХарактеристики алгоритма RLE:Коэффициенты компрессии:первый вариант: 32, 2, 0,5; (лучший, средний, худший коэффициенты);6второй вариант: 64, 3, 128/129; (лучший, средний, худший коэффициенты).Класс изображений: ориентирован алгоритм на изображения с небольшим количеством цветов:деловую и научную графику.Симметричность: примерно единица.Характерные особенности: К положительным сторонам алгоритма, пожалуй, можно отнести только то,что он не требует дополнительной памяти при архивации и разархивации, а также быстро работает.

Интереснаяособенность группового кодирования состоит в том, что степень архивации для некоторых изображений можетбыть существенно повышена всего лишь за счет изменения порядка цветов в палитре изображения.Задание 4:1. Реализовать RLE encoder/decoder по первому алгоритму.2. Реализовать RLE encoder/decoder по второму алгоритму.Программа должна предоставлять пользователю возможность: загрузитьпроизвольный файл, сжать его согласно варианту задания, загрузить сжатый файл,декодировать сжатый файл.При сдаче лабораторной предоставить два файла, один из которых демонстрируетэффективность работы алгоритма, а второй – наоборот, показывает, увеличение объемасжатого файла по сравнению с исходным.Исходный кодТестовые данныеРезультат выполнения7Контрольные вопросы1.2.3.4.5.6.Операции чтения и записи с двоичными файлами?Первый вариант алгоритма сжатия RLE: енкодер?Первый вариант алгоритма сжатия RLE: декодер?Второй вариант алгоритма сжатия RLE: енкодер?Второй вариант алгоритма сжатия RLE: декодер?Характеристики алгоритма RLE?СПИСОК ЛИТЕРАТУРЫ1.

Ватолин Д. С. Алгоритмы сжатия изображений. Методическое пособие: М.:Издательский отдел факультета Вычислительной Математики и Кибернетики МГУим. М.В.Ломоносова, 1999 г. — 76 с.2. Ахо, Альфред, В., Хопкрофт, Джон, Ульман, Джеффри, Д. Структуры данных иалгоритмы. — Издательский дом «Вильямс», 2000. — С. 384.3.

Дейтел Х. М. Как программировать на С++: Пер. с англ. – М.: ЗАО «ИздательствоБИНОМ», 2000 г. – 1024 с.: ил.4. Страуструп Б. Язык программирования С++. Специальное издание: ++: Пер. с англ. –М.: ЗАО «Издательство БИНОМ», 2008 г. – 1104 с. :ил.5. Шилдт Г. Полный справочник по С++: ++: Пер. с англ. – М.: Изд-во Вильямс, 2007 г.– 800 с.: ил.6.

Шилдт Г. С++: Базовый курс: ++: Пер. с англ. – М.: Изд-во Вильямс, 2008 г. – 624 с.:ил.8датаОтчет по лабораторной работе №10«Основы C++, работа с сокетами. Часть1.»ОценкаБонус заподпись(max 5)сложностьЦели работы:Изучение принципов функционированияпрограммированием сокетов и потоков.сетевыхсоединений,ознакомлениесЗадачи работы:-ознакомление с понятием сетевого соединения и сокетов-разработка простейшего клиентаКраткий конспект теоретической части (ответы на контрольные вопросы)Понятие сокета___________ ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________Типы сокетов_____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________Создание сокетов__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________Понятие IP адреса__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________Связывание сокета_________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________Создание канала связи (клиент/сервер)__________________________________________________________________ _____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________Передача данных _________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________UDP-клиент?____________ _____________________________________________________1______________________ __________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________2Основы C++, работа с сокетами.

Часть1.Пример 1: Создание сокета:Инициализация библиотеки WinSock, содржащей функции работы с сокетами.int WSAStartup (WORD wVersionRequested, LPWSADATA lpWSAData);wVersionRequested версия библиотеки WinSock, необходимая для работы вашего приложения.lpWSAData - параметр, содержащий указатель на структуру типа WSADATA , в которую будут записанысведения о конкретной реализации интерфейса Windows Sockets.В случае успеха функция WSAStartup возвращает нулевое значение. Если происходит ошибка, возвращаетсяодно из следующих значений:ЗначениеОписаниеWSASYSNOTREADYСетевое программное обеспечение не готово дляработыWSAVERNOTSUPPORTEDФункция не поддерживается данной реализациейинтерфейса Windows SocketsWSAEINVALБиблиотека DLL, обеспечивающая интерфейсeWindows Sockets, не соответствуетверсии,указанной приложением указанной в параметреwVersionRequestedОсвобождение ресурсов, выделенных для работы с сокетами:int WSACleanup (void);Эта функция может возвратить нулевое значение при успехе или значение SOCKET_ERROR в случае ошибки.Получение кода последней ошибки: int WSAGetLastError (void);Создание сокета: SOCKET socket (int af, int type, int protocol);Af - формат адреса.

Для этого параметра вы должны указывать значение AF_INET , что соответствует форматуадреса, принятому в Internet.type - тип сокетаprotocol - протокол, который будет использован для данного сокета.Типы сокетов:Тип сокетаОписаниеSOCK_STREAMСокет будет использован для передачи данных через каналсвязи с использованием протокола TCPSOCK_DGRAMПередача данных будет выполняться без создания каналовсвязи через датаграммный протокол UDPRAWвозможность пользовательского доступа к низлежащимкоммуникационным протоколам, поддерживающим сокетабстракции. Такие сокеты обычно являются датаграмориентированными.Что же касается параметра protocol, то вы можете указать для него нулевое значение, в этом случаенеобходимый протокол будет определен по умолчанию, исходя из предыдущих параметров.В случае успеха функция socket возвращает дескриптор, который нужно использовать для выполнения всехопераций над данным сокетом. Если же произошла ошибка, эта функция возвращает значениеINVALID_SOCKETНиже представлен фрагмент кода, в котором создается сокет для передачи данных с использованием протоколаTCP:srv_socket = socket(AF_INET , SOCK_STREAM, 0);if(srv_socket == INVALID_SOCKET){3MessageBox(NULL, "socket Error", "Error", MB_OK);return;}Удаление сокета: int closesocket (SOCKET sock);#include <stdio.h>#include <iostream>#include <fstream>#include <string.h>#include <winsock2.h>#include <windows.h>using namespace std;#define PORT 777#define SERVERADDR "127.0.0.1"int main(int argc, char* argv[]){char buff[1024];printf("TCP DEMO CLIENT\n");// Шаг 1 - инициализация библиотеки Winsockif (WSAStartup(0x202,(WSADATA *)&buff[0])){printf("WSAStart error %d\n",WSAGetLastError());return -1;}SOCKET my_sock;my_sock=socket(AF_INET,SOCK_STREAM,0);if (my_sock<0){printf("Socket() error %d\n",WSAGetLastError());return -1;}closesocket(my_sock);WSACleanup();return -1;}Результат создания проектаПример 2:Привязка сокета с адресам:Для связывания сокета с адресом и номером порта используют системный вызов bind:int bind (SOCKET sock, const struct sockaddr FAR * addr, int namelen);4Параметр sock должен содержать дескриптор сокета, созданного функцией socket .В поле addr следует записать указатель на подготовленную структуру SOCKADDR , а в поле namelen - размерэтой структуры.В случае ошибки функция bind возвращает значение SOCKET_ERROR .

Характеристики

Тип файла
PDF-файл
Размер
788,91 Kb
Материал
Тип материала
Высшее учебное заведение

Список файлов семинаров

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6455
Авторов
на СтудИзбе
305
Средний доход
с одного платного файла
Обучение Подробнее