|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.04.2009, 20:45 | #1 |
Пользователь
Регистрация: 10.02.2009
Сообщений: 21
|
Построения оптимального кода. По формуле Хаффмена
мне даны z[1], z[2], z[3], ..., z[8]. (вероятности). Нужно решить эту задачау с помощью формулы Хаффмана
Последний раз редактировалось didar_; 19.04.2009 в 20:53. |
20.04.2009, 09:58 | #2 |
Пользователь
Регистрация: 10.02.2009
Сообщений: 21
|
Если кто-то прочел, помогите составить программу, плз
|
22.04.2009, 19:09 | #3 |
Пользователь
Регистрация: 10.02.2009
Сообщений: 21
|
Помогите плз!
вот составил программу. Но ее ответ не правильный
где ошибка? program qwerty; const n=10; type mas=array[1..n] of real; var a,at,at1:mas; b,v:array[1..n,1..n] of real; i,j,t,k:integer; s,s1,h,kh,ke:real; str:array[1..n] of string[10]; x,x1:string; procedure sortirovka(var r:mas); var i,j:integer; m:real; begin for i:=1 to n do for j:=i+1 to n do if (a[i]<a[j]) then begin m:=a[j]; a[j]:=a[i]; a[i]:=m; end; end; procedure zero(var rr:mas); var i:integer; begin for i:=1 to n do a[i]:=0; end; begin for i:=1 to n do begin write('a',i); write(' '); read(a[i]);end; for i:=1 to n do begin at[i]:=a[i]; at1[i]:=a[i]; end; sortirovka(a); for j:=1 to 1 do for i:=1 to n do b[i,j]:=a[i]; zero(a); for j:=2 to n do begin a[n-j+1]:=b[n-j+2,j-1]+b[n-j+1,j-1]; for i:=1 to n-j do a[i]:=b[i,j-1]; sortirovka(a); for i:=1 to n do b[i,j]:=a[i]; zero(a); end; for j:=n-1 downto 1 do for i:=1 to n-j do begin if ((j mod 2)=0) and ((i mod 2)=0) then v[i,j]:=1; if ((j mod 2)<>0) and ((i mod 2)<>0) then v[i,j]:=1; end; begin for k:=1 to n do for j:=2 to n-1 do for t:=n-j+1 downto 1 do for i:=n-j+2 downto 1 do if at[k]+b[i,j-1]=b[t,j] then if at[k]>=b[i,j-1] then str[k]:='1' else str[k]:='0'; end; begin for k:=1 to n do for j:=2 to n-1 do for t:=n-j+1 downto 1 do for i:=n-j+2 downto 1 do if at[k]+b[i,j-1]=b[t,j] then begin if v[t,j]=1 then str[k]:=str[k]+'1' else str[k]:=str[k]+'0'; at[k]:=b[t,j]; end; end; str[10]:='1'; for i:=1 to n do begin x1:=str[i]; for j:=1 to (length(x1) div 2) do begin x[j]:=x1[j]; x1[j]:=x1[length(x1)-j+1]; x1[length(x1)-j+1]:=x[j]; end; str[i]:=x1; delete(x1,1,10); end; for i:=1 to n do a[i]:=length(str[i]); s:=0; for i:=1 to n do s:=s+at1[i]*a[i]; h:=ln(10)/ln(2); s1:=0; for i:=1 to n do s1:=s1+at1[i]*ln(at1[i])/ln(2); s1:=-s1; ke:=s1/s; kh:=h/s; writeln('b:'); for i:=1 to n do begin for j:=1 to n do begin write(b[i,j]:0:3); write(' ');end; writeln; end; writeln('v:'); for i:=1 to n do begin for j:=1 to n do begin write(v[i,j]:0:3); write(' '); end; writeln; end; for i:=1 to n do begin write('a',i); write('-'); writeln(str[i]); end; writeln('kh=',kh:0:3); writeln('ke=',ke:0:3); end. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сжатие Хаффмена | zgest | Общие вопросы C/C++ | 1 | 23.03.2009 23:23 |
Кодирование методом Хаффмена(создание 2-ичьного файла) | Руслантус | Общие вопросы C/C++ | 0 | 04.12.2008 16:58 |
C++ Метод Хаффмена. Очень нужно ! | MTBiker | Фриланс | 2 | 11.05.2008 21:56 |
Нахождение оптимального маршрута | rednax | Помощь студентам | 6 | 08.06.2007 19:21 |