Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Program laba_4;
- const
- MaxWord: integer = 200;
- type
- TBook = array[1..MaxWord] of string; // тип для выходного массива слов
- function GetWords(const line: string; var words: TBook; var count: integer): integer; // разбиение строки на слова по разделителю
- const
- s = [' ',',','.','(',')',':','?','!','"','-','«','»']; //separator — разделитель
- var
- back,p,n: integer;
- begin
- p:=1;
- while p <= length(line) do
- begin
- while (p <= length(line)) and (line[p] in s) do p:=p+1;
- if p <= length(line) then
- begin
- back:=p;
- while (p <= length(line)) and not(line[p] in s) do p:=p+1;
- count:=count+1;
- words[count]:=copy(line,back,p-back);
- end;
- end;
- GetWords:=count;
- end;
- var
- book,txt: TBook;
- shifr: array[1..MaxWord] of integer;
- i,j,k,n,m,x: integer;
- enter: boolean;
- str: string;
- key: byte;
- f: text;
- begin
- assign(f,'f.txt');
- reset(f);
- n:=0;
- while not eof(f) do
- begin
- readln(f,str);
- n:=GetWords(str,book,n);
- end;
- close(f);
- writeln('Кодировочная книга успешно прочитана');
- repeat
- writeln;
- writeln('Введите номер пункта : ');
- writeln(' 1 - зашифровать текст');
- writeln(' 2 - расшифровать текст');
- writeln(' 3 - выход');
- writeln;
- readln(key);
- case key of
- 1: begin
- write('Введите текст : ');
- readln(str);
- write('Зашифрованный текст : ');
- k:=0;
- k:=GetWords(str,txt,k);
- j:=1;
- for i:=1 to k do
- begin
- enter:=false;
- for x:=1 to n do
- if book[x] = txt[i] then enter:=true;
- if enter = true then
- begin
- enter:=false;
- repeat
- if txt[i] = book[j] then
- begin
- shifr[i]:=j;
- enter:=true;
- end;
- if (j = n) and (enter = false) then j:=1 else j:=j+1;
- until enter = true;
- j:=1;
- if (i <> 1) or ((txt[1] = txt[2]) and (k >= 2)) then for m:=1 to i do if txt[i] = txt[m] then j:=shifr[m]+1;
- end
- else shifr[i]:=0;
- end;
- for i:=1 to k do write((shifr[i]));
- writeln;
- end;
- 2: begin
- write('Введите количество слов в тексте : ');
- readln(k);
- write('Введите шифр : ');
- for i:=1 to k do read(shifr[i]);
- writeln;
- write('Расшифрованный текст : ');
- for i:=1 to k do
- if shifr[i] <> 0 then write(book[shifr[i]],' ');
- writeln;
- end;
- 3: writeln('Нажмите любую клавишу для выхода');
- end;
- until key = 3;
- readln;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement