Курсовая работа: Программа для перевода текстов с транслита
В приложении №1 приводится блок-схема этого алгоритма.
Обратный перевод осуществляется аналогично прямому за исключением того, что из строки с транслитом сначала выбирается подстрока с длинной равной наибольшей длинне буквы в словаре транслита (для правильной обработки символов типа «ъ» - «’ ’» и «ь» - «’ ’»):
procedure TMainForm.acLatTuCyrExecute(Sender: TObject);
const
lat_small : set of char = ['a'..'z',''''];
lat_up : set of char = ['A'..'Z'];
var
i1,j1,i3,max_l,tek_l,len :integer;
str,str1,st2 :string;
ch :char;
ok1,f_ok :boolean;
function find(var st_in:string):boolean; //Эта функция ищет в alph['А'..'Я'] заданную строку
var //т.е. пытается определить какой букве русского алфавита соответствует введенная строка
i2 :char;
j2,i3 :integer;
st_mod :string;
ok :boolean;
begin
st_mod:= st_in; //Будем работать с локальной переменной, чтоб не испортить исходную строку
forj2:= 1 tolength(st_mod) do //уменьшаем регистр у символов в строке
st_mod[j2]:= downcase(st_mod[j2]);
find:= false; //Присваиваем начальное значение результату функции
ifb_jo = st_modthen //буква определяется Ё отдельно
begin
st_mod:= 'Ё';
if st_in[1] in lat_small then st_mod:= 'ё'; //проверяем должна ли буква быть маленькой
st_in:= st_mod; //меняем исходную на переведенную
find:= true; //да, мы нашли соответствие возвращаем true
exit; //досрочныйвыход.