В качестве примера равномерного кода можно назвать ASCII-таблицу, где каждому из 256 символов сопоставлено двоичное значение от 00000000 до 11111111. Независимо от вероятности появления символа на его представление отводится 1 байт, или 8 бит. Как известно, национальные языки обладают большой избыточностью, то есть разницей между энтропией источника и максимально возможной энтропией, обусловленной равной вероятностью появления любого символа из алфавита. Например, избыточность русского языка составляет 70%, а английского – 50%. Это в частности означает, что некоторые буквы появляются в тексте гораздо чаще других и поэтому использовать равномерное кодирование нерационально. При неравномерном кодировании часто встречающимся символам сопоставляются более короткие кодовые последовательности, редко встречающимся – более длинные. За счет этого удается значительно сократить объем файла без потерь информации. Существует несколько методов неравномерного кодирования, важнейших из которых является метод Шеннона-Фано. как-то так
//где-то не закрыла begin end var A:array [1..40] of integer; sa,s3,s10,k,i: integer; begin sa:=0; s10:=0; s3:=0; k:=0; writeln('исходные значения'); for i:=1 to 40 do begin A[i]:= random(21); write(A[i],'') end; writeln; for i:=1 to 40 do begin if A[i]mod 2<>0 then begin sa:=sa+A[i]; k:=k+1; if A[i]<10 then s10:=s10+A[i]; if A[i] mod 3=0 then s3:=s3+A[i]; //здесь было странное выражение end; end; //здесь writeln('среднее арефмитическое нечетных чисел',sa/k:5:0); writeln('сумма чисел, не превышающих', s10); writeln('сумма чисел, кратных трем', s3); End.
При неравномерном кодировании часто встречающимся символам сопоставляются более короткие кодовые последовательности, редко встречающимся – более длинные. За счет этого удается значительно сократить объем файла без потерь информации. Существует несколько методов неравномерного кодирования, важнейших из которых является метод Шеннона-Фано.
как-то так
var A:array [1..40] of integer;
sa,s3,s10,k,i: integer;
begin
sa:=0;
s10:=0;
s3:=0;
k:=0;
writeln('исходные значения');
for i:=1 to 40 do
begin
A[i]:= random(21);
write(A[i],'')
end;
writeln;
for i:=1 to 40 do
begin
if A[i]mod 2<>0 then
begin
sa:=sa+A[i];
k:=k+1;
if A[i]<10 then s10:=s10+A[i];
if A[i] mod 3=0 then
s3:=s3+A[i]; //здесь было странное выражение
end;
end; //здесь
writeln('среднее арефмитическое нечетных чисел',sa/k:5:0);
writeln('сумма чисел, не превышающих', s10);
writeln('сумма чисел, кратных трем', s3);
End.