Advertisement
deced

Untitled

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