Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program Lab3_2;
- uses
- System.SysUtils;
- type
- CharSet = Set of AnsiChar;
- type
- CharArray = Array of AnsiChar;
- function GetInputType(): String;
- var
- Ret: string;
- IsCorrect: Boolean;
- begin
- IsCorrect := False;
- repeat
- Writeln('Выберите способ ввода предложения файл/консоль (ф/к)');
- Readln(Ret);
- if (Ret = 'ф') or (Ret = 'Ф') or (Ret = 'Файл') or (Ret = 'файл') then
- begin
- Ret := 'File';
- IsCorrect := True;
- end
- else if (Ret = 'к') or (Ret = 'К') or (Ret = 'Консоль') or
- (Ret = 'консоль') then
- begin
- Ret := 'Console';
- IsCorrect := True;
- end;
- until IsCorrect;
- GetInputType := Ret;
- end;
- function GetInputFilePath(): String;
- var
- Path: String;
- IsCorrect: Boolean;
- begin
- IsCorrect := False;
- repeat
- Writeln('Введите абсолютный путь к файлу ');
- Readln(Path);
- if FileExists(Path) then
- IsCorrect := True
- else
- Writeln('Файл не найден');
- until IsCorrect;
- GetInputFilePath := Path;
- end;
- function GetInputTextFromConsole(): String;
- var
- Ret: String;
- begin
- Writeln('Введите исходное предложение');
- Readln(Ret);
- GetInputTextFromConsole := Ret;
- end;
- function GetInputTextFromFile(): String;
- var
- Ret, Temp, FilePath: String;
- InputFile: TextFile;
- begin
- FilePath := GetInputFilePath();
- AssignFile(InputFile, FilePath);
- Reset(InputFile);
- while not Eof(InputFile) do
- begin
- Readln(InputFile, Temp);
- Ret := Ret + Temp;
- end;
- CloseFile(InputFile);
- GetInputTextFromFile := Ret;
- end;
- function GetInputText(): String;
- var
- Ret, InputType: String;
- begin
- InputType := GetInputType();
- if (InputType = 'Console') then
- Ret := GetInputTextFromConsole()
- else if (InputType = 'File') then
- Ret := GetInputTextFromFile();
- GetInputText := Ret;
- end;
- function GetVowels(InputText: AnsiString): CharSet;
- var
- Vowels, Set1, Set2: CharSet;
- I: Integer;
- begin
- Vowels := ['e', 'y', 'u', 'i', 'o', 'a'];
- Set1 := [];
- Set2 := [];
- InputText := LowerCase(InputText);
- for I := 1 to Length(InputText) + 1 do
- begin
- if (InputText[I] in Vowels) then
- if not(InputText[I] in Set1) then
- Include(Set1, InputText[I])
- else
- Include(Set2, InputText[I]);
- end;
- GetVowels := Set1 - Set2;
- end;
- function GetOutputDirectory(): String;
- var
- Ret: String;
- IsCorrect: Boolean;
- begin
- IsCorrect := False;
- repeat
- Writeln('Введите директорию, в которую хотите сохранить вывод программы');
- Readln(Ret);
- if DirectoryExists(Ret) then
- IsCorrect := True
- else
- Writeln('Такой директории не существует.Попробуйте ещё раз');
- until IsCorrect;
- GetOutputDirectory := Ret;
- end;
- procedure PrintOutputToFile(ToPrint: CharSet);
- var
- OutputFile: TextFile;
- I: Integer;
- Directory: String;
- Vowels: CharArray;
- begin
- Vowels := ['a', 'e', 'i', 'o', 'u', 'y'];
- Directory := GetOutputDirectory();
- AssignFile(OutputFile, Directory + '\output.txt');
- Rewrite(OutputFile);
- Writeln(OutputFile, 'Гласные буквы, которые входят только в одно слово: ');
- for I := 0 to High(Vowels) do
- if Vowels[I] in ToPrint then
- Write(OutputFile, Vowels[I] + ' ');
- Writeln('Файл сохранён по указанному пути');
- CloseFile(OutputFile);
- end;
- procedure PrintOutputToConsole(ToPrint: CharSet);
- var
- I: Integer;
- Vowels: CharArray;
- begin
- Vowels := ['a', 'e', 'i', 'o', 'u', 'y'];
- Writeln('Глассные буквы, которые входят только в одно слово: ');
- for I := 0 to High(Vowels) do
- if Vowels[I] in ToPrint then
- Write(Vowels[I] + ' ');
- Writeln;
- end;
- Var
- InputString: AnsiString;
- Output: CharSet;
- begin
- InputString := GetInputText();
- Output := GetVowels(InputString);
- PrintOutputToConsole(Output);
- PrintOutputToFile(Output);
- Readln;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement