Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
spo_otchet_chumak.doc
Скачиваний:
6
Добавлен:
01.04.2025
Размер:
206.85 Кб
Скачать

Лабораторная работа №3 Программирование конечного автомата для транслитерации

1) Цель работы: Создать файл с русским текстом. Написать автомат, который переведет русские буквы в символы латинского алфавита. Результат записать в другой файл.

Графическое представление конечного автомата:

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,'text.txt');

reset(f);

assign(f1, 'data_out.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.

3) Результат:

'text.txt': привет мой хозяин

'data_out.txt': privet moi hozyain

Лабораторная работа №4 Программирование конечного автомата

1) Цель работы: Разработать конечный автомат, разметить его, написать программу, которая выбирает целые числа из текста и выводит их на экран.

Графическое представление конечного автомата:

2) Исходный текст программы:

program avtomat4;

var x:char;

f1: text;

s: integer;

flag: boolean;

buffer: string;

begin s:=0;

flag:=false;

assign(f1,'4.txt');

reset(f1);

while flag=false do begin

case s of

0: begin

read(f1,x);

if x in ['0'..'9'] then begin s:=1; buffer:=x; end;

if eof(f1)=true then s:=2;

end;

1: begin

read(f1,x);

if x in ['0'..'9'] then begin buffer:=buffer+x; end else

begin writeln(buffer); s:=0; end;

end;

2: begin

flag:=true;

close(f1);

end;

end; //case

end; //while

end.

3) Файл содержит в себе следующий текст: dtu76ghfc456hjlkj8f

Результат:

76  456 8

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]