Advertisement
Guest User

Untitled

a guest
Dec 2nd, 2016
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.16 KB | None | 0 0
  1. Program laba_4;
  2. const
  3. MaxWord: integer = 200;
  4.  
  5. type
  6. TBook = array[1..MaxWord] of string; // тип для выходного массива слов
  7.  
  8. function GetWords(const line: string; var words: TBook; var count: integer): integer; // разбиение строки на слова по разделителю
  9. const
  10. s = [' ',',','.','(',')',':','?','!','"','-','«','»']; //separator — разделитель
  11. var
  12. back,p,n: integer;
  13. begin
  14. p:=1;
  15. while p <= length(line) do
  16. begin
  17. while (p <= length(line)) and (line[p] in s) do p:=p+1;
  18. if p <= length(line) then
  19. begin
  20. back:=p;
  21. while (p <= length(line)) and not(line[p] in s) do p:=p+1;
  22. count:=count+1;
  23. words[count]:=copy(line,back,p-back);
  24. end;
  25. end;
  26. GetWords:=count;
  27. end;
  28.  
  29. var
  30. book,txt: TBook;
  31. shifr: array[1..MaxWord] of integer;
  32. i,j,k,n,m,x: integer;
  33. enter: boolean;
  34. str: string;
  35. key: byte;
  36. f: text;
  37.  
  38. begin
  39. assign(f,'f.txt');
  40. reset(f);
  41. n:=0;
  42. while not eof(f) do
  43. begin
  44. readln(f,str);
  45. n:=GetWords(str,book,n);
  46. end;
  47. close(f);
  48. writeln('Кодировочная книга успешно прочитана');
  49. repeat
  50. writeln;
  51. writeln('Введите номер пункта : ');
  52. writeln(' 1 - зашифровать текст');
  53. writeln(' 2 - расшифровать текст');
  54. writeln(' 3 - выход');
  55. writeln;
  56. readln(key);
  57. case key of
  58. 1: begin
  59. write('Введите текст : ');
  60. readln(str);
  61. write('Зашифрованный текст : ');
  62. k:=0;
  63. k:=GetWords(str,txt,k);
  64. j:=1;
  65. for i:=1 to k do
  66. begin
  67. enter:=false;
  68. for x:=1 to n do
  69. if book[x] = txt[i] then enter:=true;
  70. if enter = true then
  71. begin
  72. enter:=false;
  73. repeat
  74. if txt[i] = book[j] then
  75. begin
  76. shifr[i]:=j;
  77. enter:=true;
  78. end;
  79. if (j = n) and (enter = false) then j:=1 else j:=j+1;
  80. until enter = true;
  81. j:=1;
  82. 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;
  83. end
  84. else shifr[i]:=0;
  85. end;
  86. for i:=1 to k do write((shifr[i]));
  87. writeln;
  88. end;
  89. 2: begin
  90. write('Введите количество слов в тексте : ');
  91. readln(k);
  92. write('Введите шифр : ');
  93. for i:=1 to k do read(shifr[i]);
  94. writeln;
  95. write('Расшифрованный текст : ');
  96. for i:=1 to k do
  97. if shifr[i] <> 0 then write(book[shifr[i]],' ');
  98. writeln;
  99. end;
  100. 3: writeln('Нажмите любую клавишу для выхода');
  101. end;
  102. until key = 3;
  103. readln;
  104. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement