Advertisement
deced

Untitled

Nov 4th, 2020 (edited)
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 5.17 KB | None | 0 0
  1. program Lab3_2;
  2.  
  3. uses
  4.     System.SysUtils;
  5.  
  6. type
  7.     CharArray = array of Char;
  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 GetEntryCount(Input: String; Symbol: Char):Byte;
  90. var
  91.     I, Count: Byte;
  92. begin
  93.     Count := 0;
  94.     for I := 1 to Input.Length do
  95.         if Input[I] = Symbol then
  96.             inc(Count);
  97.      GetEntryCount := Count;
  98. end;
  99.  
  100. function GetVowels(InputText: String): CharArray;
  101. var
  102.     Ret: CharArray;
  103.     Vowels: Set of Char;
  104.     I, Count: Integer;
  105. begin
  106.     Vowels := ['e', 'y', 'u', 'i', 'o', 'a'];
  107.     Count := 0;
  108.     Setlength(Ret, 6);
  109.     InputText := LowerCase(InputText);
  110.     for I := 1 to InputText.Length do
  111.     begin
  112.         if (InputText[I]in Vowels) and (GetEntryCount(InputText,InputText[I]) = 1) then
  113.         begin
  114.          Ret[Count] := InputText[I];
  115.          inc(Count);
  116.         end;
  117.     end;
  118.     Setlength(Ret, Count);
  119.     GetVowels := Ret;
  120. end;
  121.  
  122. function SortArray(UnSortedArray: CharArray): CharArray;
  123. var
  124.     I, J, Size: Integer;
  125.     Temp: Char;
  126. begin
  127.     Size := High(UnSortedArray) - 1;
  128.     for I := 0 to Size do
  129.         for J := 0 to Size do
  130.             if UnSortedArray[J] > UnSortedArray[J + 1] then
  131.             begin
  132.                 Temp := UnSortedArray[J + 1];
  133.                 UnSortedArray[J + 1] := UnSortedArray[J];
  134.                 UnSortedArray[J] := Temp;
  135.             end;
  136.     SortArray := UnSortedArray;
  137. end;
  138.  
  139. function GetSortedVowels(InputText: String): CharArray;
  140. var
  141.     Vowels: CharArray;
  142. begin
  143.     Vowels := GetVowels(InputText);
  144.     Vowels := SortArray(Vowels);
  145.     GetSortedVowels := Vowels;
  146. end;
  147.  
  148. function GetOutputDirectory(): String;
  149. var
  150.     Ret: String;
  151.     IsCorrect: Boolean;
  152. begin
  153.     IsCorrect := False;
  154.     repeat
  155.         Writeln('Введите директорию, в которую хотите сохранить вывод программы');
  156.         Readln(Ret);
  157.         if DirectoryExists(Ret) then
  158.             IsCorrect := True
  159.         else
  160.             Writeln('Такой директории не существует.Попробуйте ещё раз');
  161.     until IsCorrect;
  162.     GetOutputDirectory := Ret;
  163. end;
  164.  
  165. procedure PrintOutputToFile(ToPrint: CharArray);
  166. var
  167.     OutputFile: TextFile;
  168.     I: Integer;
  169.     Directory: String;
  170. begin
  171.     Directory := GetOutputDirectory();
  172.     AssignFile(OutputFile, Directory + '\output.txt');
  173.     Rewrite(OutputFile);
  174.     Writeln(OutputFile, 'Глассные буквы, которые входят только в одно слово: ');
  175.     for I := 0 to High(ToPrint) do
  176.         Write(OutputFile, ToPrint[I] + '  ');
  177.     Writeln('Файл сохранён по указанному пути');
  178.     CloseFile(OutputFile);
  179. end;
  180.  
  181. procedure PrintOutputToConsole(ToPrint: CharArray);
  182. var
  183.     I: Integer;
  184. begin
  185.     Writeln('Глассные буквы, которые входят только в одно слово: ');
  186.     for I := 0 to High(ToPrint) do
  187.         Write(ToPrint[I] + '  ');
  188.     Writeln;
  189. end;
  190.  
  191. Var
  192.     InputString: String;
  193.     Output: CharArray;
  194.  
  195. begin
  196.     InputString := GetInputString();
  197.     Output := GetSortedVowels(InputString);
  198.     PrintOutputToConsole(Output);
  199.     PrintOutputToFile(Output);
  200.     Readln;
  201.  
  202. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement