Основы кодирования
Методы кодирования Шеннона-Фано и Хаффмана. Способы переведения числа в прямом и обратном порядке в двоичную, восьмеричную, шестнадцатеричную системы исчисления. Произведение сложения и вычитания полученных значений. Линейные вычислительные процессы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 08.06.2017 |
Размер файла | 3,9 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
1. Кодирование Шеннона - Фано Закодировать свою Фамилию имя очество кодом Шеннона - Фано с мощностью кода 4
Решение:
Кодируемая строка: Попов Андрей Сергеевич Длина строки 21 символ.
Буква |
Вероятность |
Шаг 1 |
Шаг 2 |
Шаг З |
Итог |
|
Е |
4/21 |
0 |
0 |
00 |
||
П |
2 /21 |
1 |
0 |
10 |
||
О |
2/21 |
1 |
11 |
|||
В space |
2/21 2/21 |
2 З |
12 13 |
|||
Р |
2/21 |
2 |
0 |
20 |
||
А |
1/21 |
1 |
21 |
|||
н |
1/21 |
2 |
22 |
|||
Д |
1 /21 |
3 |
23 |
|||
Й |
1/21 |
3 |
0 |
30 |
||
С |
1/21 |
1 |
31 |
|||
г |
1/21 |
З |
2 |
32 |
||
и |
1/21 |
3 |
33 |
|||
Ч |
1/21 |
4 |
0 |
40 |
Суммарная вероятность равна 21/4=5
Шифр строки:
П о п о в А н д р е й С е р г е е в и ч
10 11 10 11 12 13 21 22 23 20 00 30 13 31 00 20 32 00 00 12 33 10
2. Кодирование Хаффмана Закодировать свою фамилию имя отчество кодом Хаффмана с мощностью 4.
Решение:
Кодируемая строка: Попов Андрей Сергеевич Длина строки 21 символ
Таблица шифра:
Буква |
Вероятность |
код |
шаг 1 |
код |
шаг 2 |
код |
шаг 3 |
код |
шаг 4 |
код |
|
е |
4/22 |
3 |
4/22 |
3 |
6/22 |
2 |
6/22 |
1 |
6/22 |
0 |
|
п |
2/22 |
00 |
2/22 |
00 |
4/22 |
3 |
4/22 |
2 |
16/22 |
1 |
|
о |
2/22 |
01 |
2/22 |
01 |
4/22 |
00 |
8/22 |
3 |
|||
в |
2/22 |
02 |
2/22 |
02 |
4/22 |
01 |
8/22 |
00 |
|||
_ |
2/22 |
03 |
2/22 |
03 |
4/22 |
02 |
8/22 |
01 |
|||
Р |
2/22 |
10 |
2/22 |
10 |
4/22 |
03 |
|||||
а |
1/22 |
11 |
2/22 |
11 |
4/22 |
10 |
|||||
н |
1/22 |
12 |
2/22 |
12 |
4/22 |
11 |
|||||
д |
1/22 |
13 |
2/22 |
13 |
|||||||
й |
1/22 |
20 |
2/22 |
20 |
|||||||
с |
1/22 |
21 |
2/22 |
21 |
|||||||
г |
1/22 |
22 |
|||||||||
и |
1/22 |
23 |
|||||||||
ч |
1/22 |
100 |
Шифр строки:
Попов Андрей Сергеевич
0001000120311121310320032131022330223100
3. Системы исчисления Номер студенческого билета(последние 4 цифры) в прямом и обратном порядке перевести в двоичную, восьмеричную, шестнадцатеричную. Произвести сложение и вычитание полученных значений.
Решение:
1919 : 2 = |
959 |
1 |
|
959 : 2 = |
479 |
1 |
|
479 : 2 = |
239 |
1 |
|
239 : 2 = |
119 |
1 |
|
119 : 2 = |
59 |
1 |
|
59 : 2 = |
29 |
1 |
|
29 : 2 = |
14 |
1 |
|
14 : 2 = |
7 |
0 |
|
7 : 2 = |
3 |
1 |
|
3 : 2 = |
1 |
1 |
Последние цифры студенческого билета: 1919 В прямом: 1919 В обратном: 9191
В двоичную систему исчисления:191910=111011111112
9191 : 2 = |
4595 |
1 |
|
4595 : 2 = |
2297 |
1 |
|
2297 : 2 = |
1148 |
1 |
|
1148 : 2 = |
574 |
0 |
|
574 : 2 = |
287 |
0 |
|
287 : 2 = |
143 |
1 |
|
143 : 2 = |
71 |
1 |
|
71 : 2 = |
35 |
1 |
|
35 : 2 = |
17 |
1 |
|
17 : 2 = |
8 |
1 |
|
8 : 2 = |
4 |
0 |
|
4 : 2 = |
2 |
0 |
|
2 :2 = |
1 |
1 |
919110=100011111001112
В восьмеричную систему исчисления:
1919 : 8 = |
239 |
7 |
|
239 : 8 = |
29 |
7 |
|
29 : 8 = |
3 |
5 |
191910=35778
9191 : 8 = |
1148 |
7 |
|
1148 : 8 = |
143 |
4 |
|
143 : 8 = |
17 |
7 |
|
17 : 8 = |
2 |
1 |
919110=217478
1919 : 16 = |
119 |
15(F) |
|
119 : 16 = |
7 |
7 |
В шестнадцатеричную систему исчисления:
191910=77F16
9191 : 16 = |
574 |
7 |
|
574 : 16 = |
35 |
14(E) |
|
35 : 16 = |
2 |
3 |
919110=23E716
Сложение чисел:
Десятичное сложение: 191910 + 919110 = 1111010 Двоичное сложение: 111011111112 + 100011111001112=101011011001102 Восьмеричное сложение: 35778 + 217478 =255468 Шестнадцатеричное сложение: 77F16 + 23E716=2B6616
Вычитание чисел:
Десятичное вычитание: 919110 - 191910 = 727210 Двоичное вычитание: 100011111001112 - 111011111112= 11100011010002 Восьмеричное вычитание: 217478 - 35778 =161508 Шестнадцатеричное вычитание: 23E716 - 77F16 - =1C6816
4. Линейные вычислительные процессы Вычислить, упростив при помощи дополнительной переменной
кодирование исчисление вычислительный
Листинг программы на Паскаль:
program Task_4;
var
Rezultat: single;
A: single;
B: single;
C: Integer;
PromRes: single;
begin
Write('Введите значение A, B, C: '); Readln(A, B, C);
PromRes := (exp(C * ln(A))) / (sqr(B) + A * B + 1);
Rezultat := PromRes * ln(PromRes);
Writeln('Результат - ', Rezultat);
Writeln('press any key');
Readln;
end.
5. Простые разветвляющиеся вычислительные процессы 19. Определить превышает ли число x значение числа k, являющегося остатком от деления m на 7. Если превышает, то x уменьшить на k, в противном случае x увеличить в k раз.
Листинг программы на Паскаль:
program Task_5;
var
X:Integer;
K:Integer;
M: Integer;
begin
Write('Введите целые числа Х, M: ');
Readln (X, M);
K := m mod 7;
if X > k then
begin
X := X - k;
writeln('X > К');
end
else
begin
X := X * K;
writeln('X < K:');
end;
Writeln('X = ', X);
Readln;
end.
Листинг программы на Паскаль:
program Task_6;
var
A, B, C: Real;
Min1, Min2: Real;
D: Real;
begin
Writeln('Введите три любые числа: ');
Readln(A, B, C);
if ((a<b) and (a<c)) and (b<c) then
begin
writeln ('меньшие ', a,' и ',b);
Min1 := A;
Min2 := B;
end;
if ((a<b) and (a<c)) and (c<b) then
begin
writeln ('меньшие ', a,' и ',c) ;
min1 := A;
min2 := C;
end;
if ((c<a) and (c<b)) and (a<b) then
begin
writeln ('меньшие ', c,' и ',a);
min1 := C;
min2 := A;
end;
if ((c<b) and (c<a)) and (b<a) then
begin
writeln ('меньшие ', c,' и ',b) ;
min1 := C;
min2 := B;
end;
if ((b<c) and (b<c) and (c<a)) then
begin
writeln ('меньшие ', B,' и ',C);
min1 := C;
min2 := B;
end;
if ((b<a) and (b<c) and (a<c)) then
begin
writeln ('меньшие ', B,' и ',A);
min1 := A;
min2 := B;
end;
D := Min1 * Min2;
Writeln('Произведение двух наименьших чисел: ', D);
Readln;
end.
Процедура Formula:
Основной цикл:
Листинг программы на Паскаль:
program Task_7;
var
S: real;
n, k, I: Integer;
procedure formula(var n: integer);
begin
S := S + (Power(3, (n + 1)) / Power(n, 3));
end;
begin
S := 0;
Write('Введите верхний предел суммирования');Readln(k);
I := k;
for n := K downto 1 do
begin
formula(n);
end;
Writeln('Решение циклом FOR: ', S);
S := 0;
I := k;
while I >= 1 do
begin
formula(I);
I := I - 1;
end;
Writeln('Решение циклом while: ', S);
S := 0;
I := k;
repeat
formula(I);
I := I - 1;
until I < 1;
Writeln('Решение циклом repeat: ', S);
end.
procedure Init_Var; Procedure Rachet;
Листинг программы на Паскаль
program Tasr_8;
var
Sh, S: Real;
A, J, O: Integer;
const
I = 0.8;
Y = -3;
U = 8;
procedure Init_Var;
begin
J := 0;
S := 0;
Sh := Y;
end;
procedure Rachet;
begin
S := sqrt(abs(power(2, (A * Sh)) + sqr(Sh) + (A * Sh) - 3));
writeln('|', J:4, ' |', Sh:5:1, ' |', S:22:2, ' |');
Sh := Sh + I;
J := J + 1;
end;
begin
write(' Введите число А: ');Readln(A);
Init_Var;
while Sh <= U do
begin
Rachet;
end;
Init_Var;
repeat
Rachet;
until Sh > U;
Init_Var;
for O := 0 to 13 do
begin
Rachet;
end;
Readln;
end.
program Task_9;
const
a1 = 1;
a2 = 2;
a3 = 1;
var
stop: boolean;
arr: array of Real;
i: integer;
begin
Stop := false;
i := 4;
SetLength(Arr, i+1);
arr[1] := 1;
arr[2] := 2;
arr[3] := 1;
while stop = false do
begin
if arr[i - 3] <= 0 then Stop := True else
arr[i] := (Exp(-arr[i - 2]) + Exp(arr[i - 1])) / arr[i - 3];
if arr[i] >= 1 then
begin
i := i + 1;
SetLength(Arr, I + 1);
end
else
stop := true;
end;
Writeln('Количество первых членов, значение которых больше единицы:', i);
readln;
end.
Листинг программы на Паскаль
program massiv_10;
var
arr: array[1..13] of integer;
res_arr: array of Integer;
I, Ost, E, Ch, L: Integer;
begin
for I := 1 to 13 do
begin
write('Введите целые числа массива ', I, ' -> ');Readln(Ch);
Arr[I] := Ch;
end;
for I := 1 to 13 do
begin
E := arr[I];
ost := E mod I;
if ost = 0 then
begin
L := Length(Res_arr);
L := L + 1;
SetLength(res_arr, L );
res_arr[L - 1] := arr[I];
end;
end;
writeln('Всего найдено значений = ', L);
for I := 0 to L - 1 do
begin
write(res_arr[I], '; ');
end;
readln('press any key');
end.
procedure Output_mass;
program massiv_11;
var
Arr: array of integer;
N, I, Ch, Ost: Integer;
procedure Output_mass;
var
Y: integer;
begin
for Y := 0 to N - 1 do
begin
Writeln(Y:4, ' |', arr[Y]:17);
end;
end;
begin
write('Число знаков в массиве: ');Readln(N);
SetLength(Arr, N);
for I := 0 to N - 1 do
begin
write('Введите число массива №', I, '->');Readln(Ch);
arr[I] := Ch;
end;
writeln;
writeln('Массив заполненный без изменений');
Output_mass;
for I := 0 to N - 1 do
begin
ost := arr[I] mod 3;
if ost <> 0 then
begin
arr[I] := arr[I] + ost;
end;
end;
writeln('Массив изменённый');
Output_mass;
Readln;
end.
program massiv_12;
var
arr: array [1..3] of array [1..4] of integer;
I, Y, Ch, ost, Summ: Integer;
begin
Summ := 0;
for I := 1 to 3 do
for Y := 1 to 4 do
begin
Write('Введите число в ячейку массива ', I, ':', Y, ' -> ');Readln(Ch);
arr[I, Y] := Ch;
end;
Writeln('Рассчет массива');
for I := 1 to 3 do
for Y := 1 to 4 do
begin
ost := arr[I, Y] mod 3;
if ost <> 0 then
begin
Summ := Summ + ost;
end;
end;
Writeln('Сумма остатков от деления на 3 'не кратных элементов массива равна = ', Summ ');
readln;
end.
procedure Output_mass;
program massiv_13;
var
N, M, I, Y, Ch: Integer;
arr: array [,] of Integer;
procedure Output_mass;
var
A, B: Integer;
begin
for A := 0 to N - 1 do
for B := 0 to M - 1 do
begin
Writeln('|', A:2,':', B, ' |', arr[A, B]:6, ' |');
end;
end;
begin
Write('Введите размер массива N*M: ');Readln(N, M);
SetLength(Arr, N, M);
for I := 0 to N - 1 do
for Y := 0 to M - 1 do
begin
Write('Введите элемент массива ', I, ':', Y, ' -> ');Readln(Ch);
arr[I, Y] := Ch;
end;
writeln('Введенный вами массив');
Output_mass;
for I := 0 to N - 1 do
for Y := 0 to M - 1 do
begin
if sqr(arr[I, Y]) < 25 then
begin
arr[I, Y] *= 2;
end;
end;
writeln('Измененый массив');
Output_mass;
Readln;
end.
program Task_14;
var
F: file of real;
I: integer;
El: Real;
G: Real;
H: Real;
S: Real;
begin
I := 0;
S := 0;
// запись в файл данных
assign(F, 'f.dat');
Rewrite(F);
writeln('Вводите 13 чисел в файл, El: ');
for I := 1 to 13 do
begin
Write('Введите ', I, ' число: ');Readln(El);
Write(F, El);
end;
close(F);
// чтение из файла
assign(F, 'f.dat');
Reset(F);
while not Eof(F) do
begin
Read(F, El);
G := El * 4;
H := Sqr(El);
if G > H then S := S + El;
end;
Writeln('Сумма El*4 > Sqr(El): ', S);
Readln;
end.
Процедура PrintFile
Листинг программы на Паскаль
program Task_15;
var
F: file of Integer;
El: Integer;
Sz, Y: Integer;
Chetno: Integer;
SeredinaF: Integer;
Ed: Boolean;
Ed_t: string;
procedure PrinFile;
begin
while not Eof(F) do
begin
Read(F, El);
Write(El, ' ');
end;
end;
begin
Ed := true;
assign(F, 'F.dat');
Rewrite(F);
while Ed = true do
begin
write('Введите новое число в файл: ');Readln(El);
write('Если вы закончили ввод нажмите N: ');Readln(Ed_t);
if Ed_t = 'n' then Ed := false;
if Ed_t = 'N' then Ed := false;
Write(F, El);
end;
Close(F);
writeln('Данные файла до изменения');
assign(F, 'F.dat');
Reset(F);
PrinFile;
writeln;
Reset(F);
Sz := FileSize(F);
SeredinaF := (Sz div 2);
for Y := 0 to Sz - 1 do
begin
if Y < SeredinaF then
begin
Read(F, El);
end
else
begin
Read(F, El);
Chetno := El mod 4;
if Chetno = 0 then
begin
Seek(F, Y);
El := El div 4;
Write(F, El);
end;
end;
end;
Reset(F);
writeln('Данные файла после изменения');
PrinFile;
close(f);
end.
Листинг программы на Паскаль
program Task_16;
var
Arr: Array of Real;
ZnakCh: boolean;
OtrCh: integer;
Sum_OtrCh: Real;
PolCh: Integer;
El: Real;
L_arr, I: Integer;
First_El: Real;
End_El: Real;
begin
PolCh := 0;
OtrCh := 0;
Sum_OtrCh := 0;
Write('Сколько чисел вы введете?: '); Readln(L_arr);
SetLength(Arr, L_arr);
for I := 0 to L_arr - 1 do
begin
Write('Введите ', I + 1, ' число: '); Readln(El);
if El < 0 then
begin
OtrCh := OtrCh + 1;
Sum_OtrCh := Sum_OtrCh + El;
end;
if El > 0 then PolCh := PolCh + 1;
Arr[I] := El;
end;
Writeln('Оригинальный массив');
Writeln(Arr);
if otrCh > PolCh then
begin
for I := 0 to L_arr - 1 do
begin
El := Arr[I];
if El > 0 then Arr[I] := Sum_OtrCh;
end;
end
else
begin
First_El := arr[0];
End_El := Arr[L_arr - 1];
Arr[0] := End_El;
Arr[L_arr -1] := First_El;
end;
Writeln('измененый массив');
Writeln(Arr);
end.
Листинг программы на Паскаль
program Tasl_17;
var
Arr: array[,] of Integer;
M: Integer;
N: Integer;
K: Integer;
I, Y: Integer;
Sum_K: Integer;
El, min: Integer;
begin
Write('Введите размер массива: '); Read(M);
N := M;
SetLength(Arr, M, N);
for I := 0 to M - 1 do
for Y := 0 to N - 1 do
begin
Write('Введите число: '); Read(El);
Arr[I, Y] := El;
end;
Writeln('Введеный массив');
for I := 0 to M - 1 do
for Y := 0 to N - 1 do
begin
Write(Arr[I, Y]:1, ' ');
if Y = (N - 1) then Writeln;
end;
K := 0;
Sum_K := 0;
for I := 0 to M - 1 do
begin
Y := I;
El := Arr[I, Y];
if (El mod 2) = 0 then K := K + 1;
if (El mod 2) <> 0 then Sum_K := Sum_K + El;
end;
Writeln ('Сумма нечетных чисел в диагонали: ', Sum_K);
writeln('Количество четных чисел в диагонали: ', K);
min := 0;
for Y := 1 to N - 1 do
begin
if Arr[K - 1, Y] > Arr[K - 1, min] then min := Y;
end;
Writeln('Максимальное число в стреке ', K,' массива: ', Arr[K - 1, min]);
Arr[K - 1, min] := Sum_K;
Writeln('Массив измененый');
for I := 0 to M - 1 do
for Y := 0 to N - 1 do
begin
Write(Arr[I, Y]:1, ' ');
if Y = (N - 1) then Writeln;
end;
end.
Процедура Drob
Листинг программы на Паскаль
program Task_18;
var
X, Y, Z, K, M, N, S: REal;
function Drob(B, C: Real): Real;
begin
result := sin((Pi*Sqr(B))/(C + 1));
end;
begin
Writeln('Введите числа X, Y, Z, K, M, N: '); Readln(X, Y, Z, K, M, N);
S := arccos(Drob(X,K)) + arccos(Drob(Y,M)) - 3 * arccos(Drob(Z, N));
Writeln('Резултат вычисления выражения: ', S);
readln;
end.
Процедура Vvod2m(A, N: Integer; Name: array[,] of Real);
Процедура Vivod2m(A, N: Integer; Name: array[,] of Real);
функция SrArDiag(A: Real; N: Integer): Real;
Функция ZamenaPoboch(A, N: Integer; Name: array [,] of Real);
Основная блок схема
program Task_19;
var
Arr1: array [,] of Real;
Arr2: array [,] of Real;
Ch: Real;
SumSrArr1: REal;
SumSrArr2: Real;
SumArr1: Real;
SumArr2: Real;
Rarr1: Integer;
Rarr2: Integer;
I, Y: Integer;
DlArr: Integer;
procedure Vvod2m(A, N: Integer; Name: array[,] of Real);
begin
Ch := Random(0, 10);Writeln;
Name[A, N] := Ch;
end;
procedure Vivod2m(A, N: Integer; Name: array[,] of Real);
begin
Write(Name[A, N]:3, ' ');
end;
function SrArDiag(A: Real; N: Integer): Real;
begin
result := A / (N - 1);
end;
function ZamenaPoboch(A, N: Integer; Name: array [,] of Real);
begin
Name[A,N-i-1]:=SumSrArr1;
end;
begin
Write('Введите размер 1 массива: ');REadln(Rarr1);
Write('Введите размер 2 массива: ');Readln(Rarr2);
SetLength(Arr1, Rarr1, Rarr1);
SetLength(Arr2, Rarr2, Rarr2);
Writeln('заполнение первого массива');
for I := 0 to Rarr1 - 1 do
for Y := 0 to Rarr1 - 1 do
begin
Vvod2m(I, Y, Arr1);
end;
Writeln('заполнение второго массива');
for I := 0 to Rarr2 - 1 do
for y := 0 to Rarr2 - 1 do Vvod2m(I, Y, Arr2);
Writeln('Первый массив');
for I := 0 to Rarr2 - 1 do
for y := 0 to Rarr2 - 1 do
begin
Vivod2m(I, Y, Arr1);
if Y = Rarr1 - 1 then Writeln;
end;
Writeln('Второй массив');
for I := 0 to Rarr2 - 1 do
for y := 0 to Rarr2 - 1 do
begin
Vivod2m(I, Y, Arr2);
if Y = Rarr2 - 1 then Writeln;
end;
Y := 1;
SumArr1 := 0;
for I := 1 to Rarr1 - 1 do
begin
Y := I - 1;
SumArr1 := SumArr1 + Arr1[I, Y]
end;
SumSrArr1 := SrArDiag(SumArr1, Rarr1);
writeln('Среднее арифметическое поддиагонали 1 массива: ', SumSrArr1);
Y := 1;
SumArr2 := 0;
for I := 1 to Rarr2 - 1 do
begin
Y := I - 1;
if Y > Rarr2 - 1 then break;
SumArr2 := SumArr2 + Arr2[I, Y]
end;
SumSrArr2 := SrArDiag(SumArr2, Rarr2);
writeln('Среднее арифметическое поддиагонали 2 массива: ', SumSrArr2);
For I := 0 to Rarr2-1 do
ZamenaPoboch(I, Rarr2,Arr1);
Writeln('Второй массив c замененой побочной диагональю');
for I := 0 to Rarr2 - 1 do
for y := 0 to Rarr2 - 1 do
begin
Vivod2m(I, Y, Arr1);
if Y = Rarr1 -1 then Writeln;
end;
end.
Листинг программы на Паскаль
program Task_20;
var
F: File of Real;
SrA: Real;
EndInp: boolean;
YN: string;
Max: Real;
Min: Real;
Ch, Sum_Ch: Real;
N, I: Integer;
const
File_Name = 'F.dat';
begin
N := 0;
EndInp := true;
assign(F, File_Name);
Rewrite(F);
while EndInp = true do
begin
Write('Введите любое число: ');Readln(Ch);
Write('Закончили ввод? (Y/N): '); Readln(YN);
if (YN = 'Y') or (YN = 'y') then EndInp := false;
Write(F, Ch);
N := N + 1;
end;
Write('Данные файла F: ');
Seek(F, 0);
While not Eof(F) do
begin
Read(F, Ch);
Write(Ch, ' ');
end;
Writeln;
Sum_Ch := 0;
Seek(F, 0);
While not Eof(F) do
begin
Read(F, Ch);
if Ch > 0 then Sum_Ch := Sum_Ch + Ch;
end;
if Sum_Ch = 0 then
begin
Writeln('В файkе нет положительных чисел, преобразование невозможно!');
end
else
begin
SrA := Sum_Ch / N;
Writeln('Среднеарифметическая сумма чисел в файле: ', SrA);
Seek(F, 0);
While not Eof(F) do
begin
Read(F, Ch);
if Ch < Min then
begin
Min := Ch;
end;
if Ch > Max then
begin
Max := Ch;
end;
end;
Writeln('Минимальное число: ', Min);
Writeln('Максимальное число: ', Max);
Seek(F, 0);
for I := 0 to N - 1 do
begin
Seek(F, I);
Read(F, Ch);
if Ch = Min then
begin
Seek(F, I);
Write(F, SrA);
end;
if Ch = Max then
begin
Seek(F, I);
Write(F, SrA);
end;
end;
Write('Преобразованный файл F: ');
Seek(F, 0);
While not Eof(F) do
begin
Read(F, Ch);
Write(Ch, ' ');
end;
end;
Close(F);
Readln;
end.
Размещено на Allbest.ru
Подобные документы
Определение среднего количества информации. Зависимость между символами матрицы условных вероятностей. Кодирование методом Шеннона–Фано. Пропускная способность канала связи. Эффективность кодирования сообщений методом Д. Хаффмана, характеристика кода.
контрольная работа [94,6 K], добавлен 04.05.2015Изучение методов кодирования Хаффмана, Фано. Модель информационной системы Шеннона. Среднестатистическая информационная емкость сообщений для эргодических источников с заданным распределением частот символов. Формулы Хартли для удельной емкости на символ.
презентация [528,9 K], добавлен 19.10.2014Понятие и основные свойства алгоритма. Линейный, ветвящийся и циклический виды вычислительных процессов. Перевод числа из десятичной системы счисления в двоичную, восьмеричную, шестнадцатеричную системы, сложение чисел, выполнение вычитания и умножения.
контрольная работа [125,7 K], добавлен 15.09.2013Определение понятий кода, кодирования и декодирования, виды, правила и задачи кодирования. Применение теорем Шеннона в теории связи. Классификация, параметры и построение помехоустойчивых кодов. Методы передачи кодов. Пример построения кода Шеннона.
курсовая работа [212,6 K], добавлен 25.02.2009Методы арифметического кодирования. Основные функции программ, реализующие алгоритмы кодирования по методам Хаффмана, Голомба, Фибоначчи и Элиаса. Разработка программно-аппаратных средств оптимального арифметического кодирования и их экономический расчет.
дипломная работа [1,1 M], добавлен 26.05.2012Типы сжатия данных: с потерями (lossy) и без потерь (lossless). Сжатие с минимальной избыточностью. Кодирование методом Шеннона-Фано. Проверка работы программы по сжатию файлов формата bmp и xls. Реализация на Delphi алгоритма сжатия Шеннона и Хаффмана.
курсовая работа [2,6 M], добавлен 26.01.2011Общее представление о системах счисления. Перевод чисел в двоичную, восьмеричную и шестнадцатеричную системы счисления. Разбивка чисел на тройки и четверки цифр. Разряды символов числа. Перевод из шестнадцатеричной системы счисления в десятичную.
практическая работа [15,5 K], добавлен 19.04.2011Перевод десятичного числа в двоичную, восьмеричную и шестнадцатеричную системы счисления. Место автоматических систем управления (АСУ) в организации технического обслуживания. Информационное обеспечение управления и программное обеспечение АСУ.
контрольная работа [16,7 K], добавлен 09.10.2012Описание метода сжатия информации на основе двоичных кодирующих деревьев Хаффмана. Среда разработки Delphi версии 7.0. Понятия объектно-ориентированного программирования. Программа, разработанная в Delphi. Реализация на Delphi метода кодирования Хаффмана.
курсовая работа [2,1 M], добавлен 26.03.2013Особенности кодирования информации с помощью метода Хаффмана. Реализация кодера и декодера с использованием статического алгоритма Хаффмана. Структура программы, оценка ее эффективности (степени сжатия) в зависимости от типа и размера сжимаемых файлов.
курсовая работа [136,2 K], добавлен 15.06.2013