close

Вход

Забыли?

вход по аккаунту

?

2 (3)

код для вставкиСкачать
Лабораторная работа №2
Программирование конечного автомата для транслитерации
Задание: Создать файл с русским текстом. Написать автомат, который переведет русские буквы в символы латинского алфавита. Результат записать в другой файл.
Графическое представление конечного автомата:
Текст программы:
program translit;
const string1:array [1..2] of char=('ú','ü');
string2ru:array [1..25] of char=('à','á','â','ã','ä','å','¸','ç','è','é','ê','ë','ì','í','î','ï','ð','ñ','ò','ó','ô','õ','ö','û','ý');
string3ru:array [1..7] of char=('æ','÷','ø','ù','û','þ','ÿ');
string2en:array [1..25] of char=('a','b','v','g','d','e','e','z','i','i','k','l','m','n','o','p','r','s','t','u','f','h','c','y','e');
string3en:array [1..7] of string=('zh','ch','sh','sch','bl','yu','ya');
var c:char;
s:string;
f,f1:text;
state,i,x:integer;
procedure compare(c:char; var i,state,x:integer);
begin for i:=1 to 2 do
if c=string1[i] then
begin
x:=i;
state:=1;
exit;
end;
for i:=1 to 25 do
if c=string2ru[i] then
begin
x:=i;
state:=2;
exit; end;
for i:=1 to 7 do
if c=string3ru[i] then
begin
x:=i;
state:=3;
exit;
end;
state:=4;
end;
procedure trans1(c:char; var i,state,x:integer);
begin
s:=s+string2en[x];
state:=1;
end;
procedure trans2(c:char; var i,state,x:integer);
begin
s:=s+string3en[x];
state:=1;
end;
procedure trans3(c:char; var i,state,x:integer);
begin
s:=s+c;
state:=1;
end;
begin
assign(f,'osn.txt');
reset(f);
assign(f1, 'transliter.txt');
rewrite(f1);
state:=1;
repeat
case state of
1:begin read(f,c); compare(c,i,state,x); end;
2:begin trans1(c,i,state,x); end;
3:begin trans2(c,i,state,x); end;
4:begin trans3(c,i,state,x); end;
else begin writeln(Перевод окончен'); end; end;
until eof(f);
close(f);
write(f1,s);
close(f1);
end.
Пример выполнение:
Исходный текст:
Спокойствие - ложь, есть только страсть.
Транслитерация:
Spokoistvie - lozh, est tolko strast.
Документ
Категория
Рефераты
Просмотров
7
Размер файла
28 Кб
Теги
1/--страниц
Пожаловаться на содержимое документа