Advertisement
deced

Untitled

Nov 5th, 2020
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.47 KB | None | 0 0
  1. program Lab3_2;
  2.  
  3. uses
  4. System.SysUtils;
  5.  
  6. type
  7. CharSet = Set of AnsiChar;
  8.  
  9. type
  10. CharArray = Array of AnsiChar;
  11.  
  12. function GetInputType(): String;
  13. var
  14. Ret: string;
  15. IsCorrect: Boolean;
  16. begin
  17. IsCorrect := False;
  18. repeat
  19. Writeln('Выберите способ ввода предложения файл/консоль (ф/к)');
  20. Readln(Ret);
  21. if (Ret = 'ф') or (Ret = 'Ф') or (Ret = 'Файл') or (Ret = 'файл') then
  22. begin
  23. Ret := 'File';
  24. IsCorrect := True;
  25. end
  26. else if (Ret = 'к') or (Ret = 'К') or (Ret = 'Консоль') or
  27. (Ret = 'консоль') then
  28. begin
  29. Ret := 'Console';
  30. IsCorrect := True;
  31. end;
  32. until IsCorrect;
  33. GetInputType := Ret;
  34. end;
  35.  
  36. function GetInputFilePath(): String;
  37. var
  38. Path: String;
  39. IsCorrect: Boolean;
  40. begin
  41. IsCorrect := False;
  42. repeat
  43. Writeln('Введите абсолютный путь к файлу ');
  44. Readln(Path);
  45. if FileExists(Path) then
  46. IsCorrect := True
  47. else
  48. Writeln('Файл не найден');
  49.  
  50. until IsCorrect;
  51. GetInputFilePath := Path;
  52. end;
  53.  
  54. function GetInputTextFromConsole(): String;
  55. var
  56. Ret: String;
  57. begin
  58. Writeln('Введите исходное предложение');
  59. Readln(Ret);
  60. GetInputTextFromConsole := Ret;
  61. end;
  62.  
  63. function GetInputTextFromFile(): String;
  64. var
  65. Ret, Temp, FilePath: String;
  66. InputFile: TextFile;
  67. begin
  68. FilePath := GetInputFilePath();
  69. AssignFile(InputFile, FilePath);
  70. Reset(InputFile);
  71. while not Eof(InputFile) do
  72. begin
  73. Readln(InputFile, Temp);
  74. Ret := Ret + Temp;
  75. end;
  76. CloseFile(InputFile);
  77. GetInputTextFromFile := Ret;
  78. end;
  79.  
  80. function GetInputText(): String;
  81. var
  82. Ret, InputType: String;
  83. begin
  84. InputType := GetInputType();
  85. if (InputType = 'Console') then
  86. Ret := GetInputTextFromConsole()
  87. else if (InputType = 'File') then
  88. Ret := GetInputTextFromFile();
  89. GetInputText := Ret;
  90. end;
  91.  
  92. function GetVowels(InputText: AnsiString): CharSet;
  93. var
  94. Vowels, Set1, Set2: CharSet;
  95. I: Integer;
  96. begin
  97. Vowels := ['e', 'y', 'u', 'i', 'o', 'a'];
  98. Set1 := [];
  99. Set2 := [];
  100. InputText := LowerCase(InputText);
  101. for I := 1 to Length(InputText) + 1 do
  102. begin
  103. if (InputText[I] in Vowels) then
  104. if not(InputText[I] in Set1) then
  105. Include(Set1, InputText[I])
  106. else
  107. Include(Set2, InputText[I]);
  108. end;
  109. GetVowels := Set1 - Set2;
  110. end;
  111.  
  112. function GetOutputDirectory(): String;
  113. var
  114. Ret: String;
  115. IsCorrect: Boolean;
  116. begin
  117. IsCorrect := False;
  118. repeat
  119. Writeln('Введите директорию, в которую хотите сохранить вывод программы');
  120. Readln(Ret);
  121. if DirectoryExists(Ret) then
  122. IsCorrect := True
  123. else
  124. Writeln('Такой директории не существует.Попробуйте ещё раз');
  125. until IsCorrect;
  126. GetOutputDirectory := Ret;
  127. end;
  128.  
  129. procedure PrintOutputToFile(ToPrint: CharSet);
  130. var
  131. OutputFile: TextFile;
  132. I: Integer;
  133. Directory: String;
  134. Vowels: CharArray;
  135. begin
  136. Vowels := ['a', 'e', 'i', 'o', 'u', 'y'];
  137. Directory := GetOutputDirectory();
  138. AssignFile(OutputFile, Directory + '\output.txt');
  139. Rewrite(OutputFile);
  140. Writeln(OutputFile, 'Гласные буквы, которые входят только в одно слово: ');
  141. for I := 0 to High(Vowels) do
  142. if Vowels[I] in ToPrint then
  143. Write(OutputFile, Vowels[I] + ' ');
  144. Writeln('Файл сохранён по указанному пути');
  145. CloseFile(OutputFile);
  146. end;
  147.  
  148. procedure PrintOutputToConsole(ToPrint: CharSet);
  149. var
  150. I: Integer;
  151. Vowels: CharArray;
  152. begin
  153. Vowels := ['a', 'e', 'i', 'o', 'u', 'y'];
  154. Writeln('Глассные буквы, которые входят только в одно слово: ');
  155. for I := 0 to High(Vowels) do
  156. if Vowels[I] in ToPrint then
  157. Write(Vowels[I] + ' ');
  158. Writeln;
  159. end;
  160.  
  161. Var
  162. InputString: AnsiString;
  163. Output: CharSet;
  164.  
  165. begin
  166. InputString := GetInputText();
  167. Output := GetVowels(InputString);
  168. PrintOutputToConsole(Output);
  169. PrintOutputToFile(Output);
  170. Readln;
  171.  
  172. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement