Advertisement
dxvmxnd

Untitled

Nov 11th, 2023
16
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.58 KB | None | 0 0
  1. Program L3_1_D;
  2.  
  3. Uses
  4. System.SysUtils, Windows;
  5.  
  6. Type
  7. TStrings = Array of String;
  8.  
  9. Var
  10. IsCorrect , IsChanged : Boolean;
  11. Str, Str1, Str2 : WIdeString;
  12. I, J : Integer;
  13. Strings : TStrings;
  14.  
  15. Procedure OutputTask();
  16. Begin
  17.  
  18. Writeln('Данная программа кодирует текст по выбранным кодировкам и обратно.');
  19.  
  20. End;
  21.  
  22. Function ReadFromConsole() : String;
  23. Var
  24. Str : String;
  25. Begin
  26. Writeln('Введите строку с клавиатуры: ');
  27. Readln(Str);
  28.  
  29. ReadFromConsole := Str;
  30. End;
  31.  
  32. Function ChoicePath() : String;
  33. Var
  34. Path : String;
  35. TextF : TextFile;
  36. IsCorrect : Boolean;
  37.  
  38. Begin
  39. Repeat
  40. IsCorrect := True;
  41. Writeln('Введите путь файла: ');
  42. Try
  43. Readln(Path);
  44. AssignFile(TextF, Path);
  45. Reset(TextF);
  46. Except
  47. IsCorrect := False;
  48. Writeln('Неверный путь файла!');
  49. End;
  50. Until IsCorrect;
  51. Writeln('Файл успешно открыт!');
  52. ChoicePath := Path;
  53. CloseFile(TextF);
  54. End;
  55.  
  56. Function InputStrFromFile(var TextF : TextFile; Path : String) : String;
  57.  
  58. Var
  59. Str : WideString;
  60.  
  61. Begin
  62. AssignFile(TextF, Path);
  63. Reset(TextF);
  64. IsCorrect := True;
  65. Writeln('Запись строки...');
  66. Try
  67. Readln(TextF, Str);
  68. Except
  69. IsCorrect := False;
  70. Writeln('Ошибка ввода! Введите строку с клавиатуры!');
  71. ReadFromConsole();
  72. End;
  73. Writeln('Строка для перекодирования: ', Str);
  74. CloseFile(TextF);
  75.  
  76. InputStrFromFile := Str
  77. End;
  78.  
  79. Function InputKeyFromFile(var TextF : TextFile; Path : String) : TStrings;
  80.  
  81. Var
  82. Str1, Str2, Line : WideString;
  83. Keys : TStrings;
  84.  
  85. Begin
  86. AssignFile(TextF, Path);
  87. Reset(TextF);
  88. Readln(TextF, Line);
  89.  
  90. IsCorrect := True;
  91. Writeln('Запись ключа str1...');
  92. Try
  93. Readln(TextF, Str1);
  94. Except
  95. IsCorrect := False;
  96. Writeln('Ошибка ввода! Введите ключ Str1 с клавиатуры!');
  97. ReadFromConsole();
  98. End;
  99. Writeln('Ключ 1: ', Str1);
  100.  
  101. IsCorrect := True;
  102. Writeln('Запись ключа str2...');
  103. Try
  104. Readln(TextF, Str2);
  105. Except
  106. IsCorrect := False;
  107. Writeln('Ошибка ввода! Введите ключ Str2 с клавиатуры!');
  108. ReadFromConsole();
  109. End;
  110. Writeln('Ключ 2: ', Str2);
  111. CloseFile(TextF);
  112.  
  113. SetLength(Keys, 2);
  114. Keys[0] := Str1;
  115. Keys[1] := Str2;
  116.  
  117. InputKeyFromFile := Keys;
  118. End;
  119.  
  120. Function InputFromFile() : TStrings;
  121.  
  122. Var
  123. TextF : TextFile;
  124. Path : String;
  125. Strings, Keys : TStrings;
  126.  
  127. Begin
  128. Path := ChoicePath();
  129.  
  130. Str := InputStrFromFile(TextF, Path);
  131. Keys := InputKeyFromFile(TextF, Path);
  132.  
  133. SetLength(Strings, 3);
  134. Strings[0] := Str;
  135. Strings[1] := Keys[0];
  136. Strings[2] := Keys[1];
  137.  
  138. InputFromFile := Strings;
  139. End;
  140.  
  141. Function InputFromConsole() : TStrings;
  142.  
  143. Var
  144. Strings : TStrings;
  145. I, J : Integer;
  146. IsCorrect, IsDifferent : Boolean;
  147. Str, Str1, Str2 : String;
  148.  
  149. Begin
  150. Repeat
  151. IsCorrect := True;
  152. Writeln('Введите строку, которую нужно перекодировать: ');
  153. Try
  154. Readln(Str);
  155. Except
  156. Writeln('Ошибка ввода! Текст слишком большой!');
  157. IsCorrect := False;
  158. End;
  159. Until IsCorrect;
  160.  
  161. Repeat
  162. IsCorrect := True;
  163. Writeln('Введите str1: ');
  164. Readln(Str1);
  165. Writeln('Введите str2: ');
  166. Readln(Str2);
  167. If (Length(Str1) <> Length(Str2)) Then
  168. Begin
  169. Writeln('Размеры строк должны быть одинаковыми!');
  170. IsCorrect := False;
  171. End
  172. Else
  173. Begin
  174. For I := 1 To (High(Str1) - 1) Do
  175. Begin
  176. For J := (I+1) To High(Str1) Do
  177. Begin
  178. If ((Str1[I] = Str1[J]) Or (Str2[I] = Str2[J])) Then
  179. IsDifferent := False;
  180. End;
  181. End;
  182. If Not IsDifferent Then
  183. Begin
  184. IsCorrect := False;
  185. Writeln('Символы не должны повторяться!');
  186. End;
  187. End;
  188. Until IsCorrect;
  189.  
  190. SetLength(Strings, 3);
  191.  
  192. Strings[0] := Str;
  193. Strings[1] := Str1;
  194. Strings[2] := Str2;
  195.  
  196. InputFromConsole := Strings;
  197. End;
  198.  
  199. Function ChoiceOfInput() : TStrings;
  200.  
  201. Var
  202. Strings : TStrings;
  203. Choice : Integer;
  204. IsCorrect : Boolean;
  205. Begin
  206.  
  207. Repeat
  208. IsCorrect := True;
  209. Writeln('Выберите, откуда вводить данные. Введите 0, если с консоли; 1, если с файла');
  210. Try
  211. Readln(Choice);
  212. Except
  213. IsCorrect := False;
  214. End;
  215. If ((Not IsCorrect) Or ((Choice <> 0) And (Choice <> 1))) Then
  216. Begin
  217. Writeln('Неверный ввод данных!');
  218. IsCorrect := False;
  219. End;
  220. Until IsCorrect;
  221. If (Choice = 0) Then
  222. Strings := InputFromConsole()
  223. Else
  224. Strings := InputFromFile();
  225.  
  226. ChoiceOfInput := Strings;
  227. End;
  228.  
  229. Begin
  230.  
  231. { Repeat
  232. IsCorrect := True;
  233. Writeln('Введите str1: ');
  234. Readln(Str1);
  235. Writeln('Введите str2: ');
  236. Readln(Str2);
  237. If (Length(Str1) <> Length(Str2)) Then
  238. Begin
  239. Writeln('Размеры строк должны быть одинаковыми!');
  240. IsCorrect := False;
  241. End;
  242. Until IsCorrect;
  243.  
  244. Writeln('Введите строку для кодировки: ');
  245. Readln(Str);
  246.  
  247. For I := 1 To High(Str) Do
  248. Begin
  249. IsChanged := False;
  250. For J := 1 To High(Str1) Do
  251. Begin
  252. If ((Str[I] = Str1[J]) And (Not IsChanged)) Then
  253. Begin
  254. Str[I] := Str2[J];
  255. IsChanged := True;
  256. End;
  257. End;
  258. End;
  259.  
  260. Writeln(Str);
  261. Readln; }
  262. { SetConsoleCP(1251);
  263. SetConsoleOutputCP(1251); }
  264. OutputTask();
  265. Strings := ChoiceOfInput();
  266. Writeln(Strings[0], Strings[1], Strings[2]);
  267. { Coding(Strings);
  268. Uncoding(Strings);
  269. OutputAnswer(Strings); }
  270. Readln;
  271. End.
  272.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement