В качестве примера равномерного кода можно назвать ASCII-таблицу, где каждому из 256 символов сопоставлено двоичное значение от 00000000 до 11111111. Независимо от вероятности появления символа на его представление отводится 1 байт, или 8 бит. Как известно, национальные языки обладают большой избыточностью, то есть разницей между энтропией источника и максимально возможной энтропией, обусловленной равной вероятностью появления любого символа из алфавита. Например, избыточность русского языка составляет 70%, а английского – 50%. Это в частности означает, что некоторые буквы появляются в тексте гораздо чаще других и поэтому использовать равномерное кодирование нерационально.
При неравномерном кодировании часто встречающимся символам сопоставляются более короткие кодовые последовательности, редко встречающимся – более длинные. За счет этого удается значительно сократить объем файла без потерь информации. Существует несколько методов неравномерного кодирования, важнейших из которых является метод Шеннона-Фано.
Надеюсь понятно?
Поделитесь своими знаниями, ответьте на вопрос:
Написать программу, которая находит сумму элементов с n1 до n2 одномерного массива, заполненного случайным образом. номера элементов n1, n2 вводятся с клавиатуры с проверкой корректности ввода. необходимо вывести исходный одномерный массив, а затем сумму элементов введенного диапазона.
// Внимание! Если программа не работает, обновите версию!
begin
var n:=ReadInteger('Число элементов в массиве:');
var a:=ArrRandom(n,1,99);
Write('Исходный массив: '); a.Println;
var n1,n2:integer;
Write('Границы номеров элементов для суммы: '); Read(n1,n2);
if n1>n2 then Swap(n1,n2);
if (n1<1) or (n2>n) then Writeln('Границы выходят за пределы массива')
else Writeln('S=',a[n1-1:n2].Sum)
end.
Пример
Число элементов в массиве: 15
Исходный массив: 89 82 45 28 88 68 34 19 35 26 67 43 71 96 66
Границы номеров элементов для суммы: 4 9
S=272