| Типы программирования, программирование, языки программирования, книги программирование | На сайте представлена информация про программирование в Интернете и работу |
|
Заблокировать доступ к принтеру или модему, Заблокировать доступ к принтеру или моде COM порт передача данных Содержимое Table скинуть в Excel 2003, Delphi 7 (пример из фака не пашет) Application, ошибка при содании Контекстное меню к файлу, как вызвать? Excel protect, и delphi Автоподбор ширины, через СOM Com-объект Oper'ы отображаются компоненты excel, данные Как из дельфи кинуть данные в новый doc-файл..., ... в таблицу + заголовки столбцов.. Открытие файла из формы Delphi, Как? Чтение значения реестра... Дайте <HEAD>!, TWebBrowser EOleException Персональный мини Excel Возможно ли получить доступ к Таблице в html файле sharemem TWebBrowser: доступ к не-HTML элементам Как создать TWebBrowser в ран-тайм? WebBrowser frozen..., как оживить Работа с Word из Консоли... старт ole server Как отслеживать изменение файла?, отлов update файла на сетке Проблемы с локальным COM сервером Оцените код, для сосздания/удаления COM-объекта *.TLB Проблемы с установкой OCX компонента guid Просмотр документа Word Сохранить в вордовский файл из DBEdit Как Вы относитесь к курящим девушкам? Проблемка с загрузкой инфы в OLEContainer, Неопознанная ошибка как задать Feature.Name, MapInfo MapX 5.0 ListView Операции с таблицей Excel, по технологии СОМ Создание вертикальных заголовков в Excel, Использование технологии СОМ OLEContainer и DOC, Показывается только первая страница :( Компонент TWordApplication, Как пронумеровать страницы ??? Microsoft Word, открыть файл Delphi & Exсel, Взаимодействие Сохраняю оле контейнер, как избавиться от OLE headera Office 97, Создание Add-In для Outlook 97/98 передача страницы из TWebBrowser в MS WORD Как попроще подключить Ассеss через ADO, Банально, но в DRKB непонятно написано Работа с Wordовскими файлами, Как прочитать файл с расширением doc Как Вы относитесь к курящим девушкам? Помощь программистам на Pascal, Компиляторы, русификация, литература Проект lazarus, Всем паскалистам предлагаю взглянуть Предлагаем темы для FAQ, точнее сами статьи Составление БД выражений Pascal, Проект "Межъязыковый словарь" поиск минимальной траектории Взаимодействие программных МОДУЛЕЙ(теория), Защитить реферат на тему мод.прог. Многозадачность в Паскале Помогите разобраться с if... then-ом, почему то не работает Проблема с тетрисом Работа с MailSlots, Подкинте примерчик? Помогите С поиском в Глубину!!!! Автостоянка, Поиск размещения макс. кол-ва авто Turbo Vision Помогите решить задачу по Паскалю!!!, Нужно решить позарез!!! Очень сложная задача, Помогите SetActivePage, :( Сортировка Шелла Факториалы, Кто хочет вспомнить школу? Сортировка на компонетном Паскале, Сортировка Binary Insertion на BlackBox Помогите..., ...с изучением паскаля Возведение в произвольную степень., Требуется алгоритм или процедура. D G, Delphi games Моделирование системы передачи сигналов. |
Платные хостинги Раскрутка сайта Книги по программированию Моделирование системы передачи сигналов.
- Ребята помогите кто нибудь написать комментарии к проге ... в универе достал готовую прогуи никак немогу в ней разобраться ... если кому не сложно помогите ... завтра вечером сдаватьа как не знаю В общем прога по предмету "Теория информации и кодирования" <<Цель работы : Моделирование системы передачи сигналов.Задание. Написать программу, моделирующую работу системы передачи сигналов. Сообщения источни-ка кодируются (сжимается) кодером источника (кодирование Хаффмена), затем кодером канала добавля-ется избыточность, необходимая для обнаружения и исправления независимой одиночной ошибки (ко-дирование по Хеммингу), которая вносится в сообщение при прохождении через канал ( белый шум). Декодер канала исправляет ошибки и декодирует сообщение (удаляет проверочные символы). Декодер приемника восстанавливает принятое сообщение. >>Код {Лабораторная работа №5}program lab_05;var stroka: string[100]; stroka_z,symb,stroka_r,stroka_b,stroka_fc,symb_5,symb_6,symb_7: string; stroka_ac,place,stroka_rz:string; bukv: array[1..50] of char; {Массив, в котором находятся буквы} kod: array[1..50,1..2] of string; {Массив, в кот. хранятся коды Хаффмана} {Перв. строка - буферная Вторая - основная} vero: array[1..50,1..50] of longint; {Массив, в котором преобразуются вероятности} bait:array[1..50] of string; i,k,ind,l,ind2,len_bukv,prov,dobav:integer; posl2:longint;{Функция преобразования строкового типа в целочисленный}function value(st: string):integer;var I,Code:integer;begin Val(st, I, Code); if code = 0 then value:=I; if code<>0 then value:=0;end;(* Подпрограмма канала *)function chanel(s1:string) : string;var poz: integer;begin {выбор случайным образом количества ошибок} poz:=random(6)+1; if s1[poz]='1' then s1[poz]:='0' else s1[poz]:='1'; chanel:=s1;end;{Функция преобразования двоичного числа в десятичное}function bin2dec(s: string): integer;var razm,i,k,index: integer; y: char; vv,chislo: integer;begin razm:=length(s); index:=2; vv:=0; chislo:=0; for i:=razm downto 1 do begin if (i=razm) and (s[i]='1') then chislo:=1; if (i=razm-1) and (s[i]='1') then chislo:=2; if (i<(razm-1)) and (s[i]='1') then begin chislo:=1; for k:=1 to index do chislo:=chislo*2; end; vv:=vv+chislo; if i<(razm-1) then index:=index+1; chislo:=0; end; bin2dec:=vv;end;BEGINwrite('Введите строку: '); readln(stroka);{Блок получения неравномерного кода Хаффмана}{Поиск всех вероятных букв в сообщении}bukv[1]:=stroka[1];ind:=2;l:=0;for i:=2 to length(stroka) do begin for k:=1 to ind do if bukv[k]=stroka[i] then inc(l); if l=0 then begin bukv[ind]:=stroka[i]; inc(ind); end; l:=0; end;dec(ind);{Просчет вероятностей}for i:=1 to length(stroka) do for k:=1 to ind do if stroka[i]=bukv[k] then begin vero[1,k]:=vero[1,k]+1; break; end;for i:=1 to ind do{ vero[1,i]:=round((vero[1,i]/length(stroka))*1000);}{ind - индекс столбца .. .. .. .. ..}ind2:=2; {Индекс строки .. .. ..}l:=ind;len_bukv:=ind;while ind>2 dobeginposl2:=vero[ind2-1,ind]+vero[ind2-1,ind-1]; {складываем 2 последних элемента}k:=1;for i:=1 to ind-1 do begin if vero[ind2-1,k]>posl2 then begin vero[ind2,i]:=vero[ind2-1,k]; inc(k); end else begin vero[ind2,i]:=posl2; posl2:=-1; end; end;inc(ind2);dec(ind);end;dec(ind2);writeln;writeln(' Матрица вероятностей: ');writeln;write(' ');for k:=1 to l do write(' ',bukv[k],' ');writeln;writeln;for k:=1 to ind2 do begin for i:=1 to l do write(' ',(vero[k,i]/length(stroka)):3:3); writeln; readln; dec(l);end;{------------------------------------------------------------------------}{Блок Распределения кодов (0 и 1)}if vero[ind2,1]>=vero[ind2,2] then begin kod[1,1]:='0'; kod[2,1]:='1'; end else begin kod[1,1]:='1'; kod[2,1]:='0'; end;kod[1,2]:=kod[1,1]; kod[2,2]:=kod[2,1];while (ind<len_bukv) and (ind2>1) dobegin{------------------------------------------------------------------}{Нахождение вероятности, кот. явл. суммой двух последних предыдущих вероятностей}{2- осн. строка, 1 - буферная}for i:=1 to ind do if vero[ind2,i]=vero[ind2-1,ind]+vero[ind2-1,ind+1] then begin kod[ind+1,1]:=kod[i,2]; kod[ind,1]:=kod[i,2]; prov:=i; break; end;{------------------------------------------------------------------------}{Блок просмотра вероятностей поединично}k:=1;for i:=1 to ind do if i<>prov then begin kod[k,1]:=kod[i,2]; inc(k); end;{Блок просмотра двух последних элементов}{if (ind+1<len_bukv) and ((ind2-1)>1) then} if vero[ind2-1,ind]>=vero[ind2-1,ind+1] then begin kod[ind,1]:=kod[prov,2]; kod[ind,1]:=kod[ind,1]+'0'; kod[ind+1,1]:=kod[prov,2]; kod[ind+1,1]:=kod[ind+1,1]+'1'; end else begin kod[1,ind]:=kod[prov,2]; kod[1,ind]:=kod[ind,1]+'1'; kod[1,ind+1]:=kod[prov,2]; kod[1,ind+1]:=kod[ind+1,1]+'0'; end;for i:=1 to ind+1 do begin kod[i,2]:=kod[i,1]; kod[i,1]:=''; end;dec(ind2);inc(ind);end;for k:=1 to len_bukv do begin write(kod[k,2],' '); end;{Кодировка}for k:=1 to length(stroka) do begin symb:=stroka[k]; for i:=1 to 50 do if bukv[i]=symb then begin stroka_z:=stroka_z+kod[i,2]; break; end; end;writeln;writeln;write('Закодированная строка: ',stroka_z);{Разбиение на байты}stroka_b:=stroka_z;i:=1;while stroka_b<>'' do begin bait[i]:=copy(stroka_b,1,8); delete(stroka_b,1,8); inc(i); end;dec(i);if length(bait[i])<8 then begin dobav:=8-length(bait[i]); bait[i]:=bait[i]+copy('00000000',1,8-length(bait[i])); end;writeln;{Строка, разбитая на байты}write('Строка, разбитая на байты: ');k:=1;stroka_z:='';while k<=i do begin write(bait[k],' '); stroka_z:=stroka_z+bait[k]; inc(k); end;writeln;{Кодирование по методу Хейминга}stroka_fc:='';while stroka_z<>'' do begin stroka_fc:=stroka_fc+copy(stroka_z,1,4); {5-ый символ} l:=value(stroka_z[2])+value(stroka_z[3])+value(stroka_z[4]); if (l mod 2)<>0 then symb_5:='1' else symb_5:='0'; {6-ый символ} l:=value(stroka_z[1])+value(stroka_z[3])+value(stroka_z[4]); if (l mod 2)<>0 then symb_6:='1' else symb_6:='0'; {7-ый символ} l:=value(stroka_z[1])+value(stroka_z[2])+value(stroka_z[4]); if (l mod 2)<>0 then symb_7:='1' else symb_7:='0'; stroka_fc:=stroka_fc+symb_5+symb_6+symb_7+'0'; delete(stroka_z,1,4); end;writeln('Строка, для пропускания в канал: ',stroka_fc);stroka_b:=stroka_fc;stroka_fc:='';symb:='';while stroka_b<>'' do begin symb:=copy(stroka_b,1,8); randomize; symb:=chanel(symb); stroka_fc:=stroka_fc+symb; delete(stroka_b,1,8); symb:=''; end;writeln('Строка, после канала: ',stroka_fc);stroka_ac:='';{исправление ошибок по методу Хейминга}stroka_fc:=stroka_fc+'9999';while stroka_fc<>'9999' do begin symb:=copy(stroka_fc,1,8); place:=''; {1-ая сумма} l:=value(symb[4])+value(symb[5])+value(symb[6])+value(symb[7]); if (l mod 2)<>0 then place:=place+'1' else place:=place+'0'; {2-ая сумма} l:=value(symb[2])+value(symb[3])+value(symb[6])+value(symb[7]); if (l mod 2)<>0 then place:=place+'1' else place:=place+'0'; {3-ья сумма} l:=value(symb[1])+value(symb[3])+value(symb[5])+value(symb[7]); if (l mod 2)<>0 then place:=place+'1' else place:=place+'0'; {place - позиция ошибки, записанная в двоичном виде} if bin2dec(place)<>0 then if symb[bin2dec(place)]='1' then symb[bin2dec(place)]:='0' else symb[bin2dec(place)]:='1'; delete(stroka_fc,1,8); stroka_ac:=stroka_ac+symb; symb:=''; end;writeln('Исправленная строка: ',stroka_ac);stroka_r:='';while stroka_ac<>'' do begin stroka_r:=stroka_r+copy(stroka_ac,1,4); delete(stroka_ac,1,8); end;writeln;writeln('Полученная строка: ',stroka_r);delete(stroka_r,length(stroka_r)-dobav+1,dobav);writeln('Строка для раскодировки: ',stroka_r);symb:='';stroka_rz:='';for i:=1 to length(stroka_r) do begin symb:=symb+stroka_r[i]; for k:=1 to 50 do if kod[k,2]=symb then begin stroka_rz:=stroka_rz+bukv[k]; symb:=''; break; end; end;writeln('Полученная строка: ',stroka_rz);readln;END.highlightSyntax('delphiTI2MmI','delphi'); |