{ Если мы попробуем кодировать точку нулем, тире - единицей, то получаем число в двоичной системе с максимальным числом разрядов, равным 4. К сожалению, в такой кодировке комбинации, начинающиеся с точки, будут неоднозначными, потому что будут начинаться с незначащих нулей. Для устранения неоднозначности можно добавить еще три бита слева, которые будут указывать количество точек в коде до первого тире (0-4), но лучше добавить 4 бита и использовать для кодирования полный байт. Тогда его первая шестнадцатиричная цифра даст число незначащих нулей (точек), а вторая - сам код. Исключение - символ 'э', который кодируется 5 символами. Для разделения слов введем еще символ пробела -...-
Конечно, можно было бы просто поместить коды в элементы массива и поиск нужного производить поэлементым сравнением, но принятая нами кодировка позволит получать номер элемента массива сразу. Иными словами, мы построили так называемую ХЭШ-ФУНКЦИЮ для доступа к таблице перекодировки. Это очень популярное решение, которое применяется достаточно часто в различных алгоритмах кодировки и поиска. Максимальный номер среди полученных нами = 64, минимальный - 1. Следовательно, нужно создать массив T[1..64] и поместить русские буквы в элементы с соответствующими индексами (а - в 17-й элемент, б - в 8-й и т.д.) Получив очередное слово - "символ" азбуки Морзе, например, '..-.', выполняем следующие шаги: 1) Если пять правых символов слова равны '..-..', искомый символ T[52]; 2) Если пять правых символов слова равны '-...-', искомый символ T[63]; 3) Подсчитываем k - количество точек в четырех правых символах слова a5a6a7a8, пока не встретим тире. Вычисляем значение k:=16*k; 4) Начиная с первого слева тире заменяем в символах слова точки нулями, тире - единицами; 5) Вычисляем сумму n=a5*8+a6*4+a7*2+a8 и увеличиваем на нее значение k. k:=k+n 6) Искомый символ равен T[k] Алгоритм кажется сложным, но его реализация в функции Hash проста. }
var ptr: integer;
function Hash(s: string): integer; {Возвращает номер элемента в таблице Т по коду Морзе из строки s} var i, k, n, m: integer; begin if s = '' then Result := 0 else if s = '..-..' then Result := 52 else if s = '-...-' then Result := 63 else begin i := 1; k := 0; while i <= length(s) do if s[i] = '.' then begin i := i + 1; k := k + 1 end else i := 5; n := 0; m := 1; for i := length(s) downto max(k, 1) do begin if s[i] = '-' then n := n + m; m := m * 2 end; Result := 16 * k + n end end;
function GetWord(s: string): string; {Возвращает очередное слово строки s, начиная поиск с позиции ptr По окончании поиска ptr устанавливается на следующий за пробелом символ или выходит за конец строки} var i: integer; c: string; begin c := ''; i := PosEx(' ', s, ptr); if i > 0 then begin Result := Copy(s, ptr, i - ptr); ptr := i + 1 end else begin Result := Copy(s, ptr, length(s) - ptr + 1); ptr := length(s) + 1 end; end;
var s: string; n: integer; T: array[1..64] of char;
Понимание вопроса организации хранения информации в электронных устройствах является одним из важнейших моментов для тех, кто только начинает изучать компьютер. В этом материале вы узнаете, где и в каком виде хранятся личные данные пользователя, нужные программы и прочая необходимая информация.
Диски
Вся информация пользователя, включая операционную систему, программы, игры, документы и прочие данные, хранится на специальных носителях, называемых дисками. Внутри компьютера, как правило, размещается магнитный (в основном) или твердотельный накопитель, именуемый жестким диском (винчестер). Так же данные могут храниться на всевозможных внешних носителях, к которым относятся гибкие магнитные накопители (дискеты), оптические диски (CD, DVD, Blu-Ray), карты памяти (носители, используемые для хранения данных в цифровых устройствах, например фотоаппаратах, плеерах и т.д.), флэш-диски и прочие. При этом все они предназначены для долговременного хранения информации.
Работа со всеми перечисленными дисками практически однотипна. Каждому носителю или устройству хранения данных, операционной системой присваивается уникальное логическое имя в виде латинской буквы алфавита и двоеточия после нее. Устройствам для работы с дискетами дают имена «A:» и «B:». За ними, начиная с буквы «C», в алфавитном порядке следуют имена жестких дисков, которых может быть несколько. После жестких дисков, так же в алфавитном порядке начинают присваиваться имена для оптических приводов (устройств чтения/записи оптических дисков). Затем следуют названия сетевых дисков и устройств считывания данных с флэш-карт.
Информация, хранящаяся на компьютере, измеряется в байтах. При этом самая маленькая единица измерения данных называется битом. В одном байте содержится 8 бит.
Современные программы и данные пользователей имеют размеры в несколько десятков и сотен тысяч байт, так что в реальных условиях используются гораздо более крупные единицы измерения: килобайты, мегабайты, гигабайты и терабайты.
var mas: array [1..5] of integer; i:integer; begin for i:=1 to 5 do read(mas[i]); for i:=1 to 5 do begin mas[i]:=mas[i]-20; write(mas[i],' '); end; end.
2)
var mas: array [1..8] of real; i:integer; begin for i:=1 to 8 do read(mas[i]); for i:=1 to 8 do begin if i mod 2 = 0 then write(mas[i]-1,' ') else write(mas[i]+1,' ') end; end.
Просто впиши ссылку на существующий сайт, через несколько минут они сами выделяться и будет возможность перейти на ссылку, но не уверена, что именно в блокноте это работает. Попробуй другой текстовой редактор, если не получится.