Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Program L3_1_D;
- Uses
- System.SysUtils, Windows;
- Type
- TStrings = Array of String;
- Var
- IsCorrect , IsChanged : Boolean;
- Str, Str1, Str2 : WIdeString;
- I, J : Integer;
- Strings : TStrings;
- Procedure OutputTask();
- Begin
- Writeln('Данная программа кодирует текст по выбранным кодировкам и обратно.');
- End;
- Function ReadFromConsole() : String;
- Var
- Str : String;
- Begin
- Writeln('Введите строку с клавиатуры: ');
- Readln(Str);
- ReadFromConsole := Str;
- End;
- Function ChoicePath() : String;
- Var
- Path : String;
- TextF : TextFile;
- IsCorrect : Boolean;
- Begin
- Repeat
- IsCorrect := True;
- Writeln('Введите путь файла: ');
- Try
- Readln(Path);
- AssignFile(TextF, Path);
- Reset(TextF);
- Except
- IsCorrect := False;
- Writeln('Неверный путь файла!');
- End;
- Until IsCorrect;
- Writeln('Файл успешно открыт!');
- ChoicePath := Path;
- CloseFile(TextF);
- End;
- Function InputStrFromFile(var TextF : TextFile; Path : String) : String;
- Var
- Str : WideString;
- Begin
- AssignFile(TextF, Path);
- Reset(TextF);
- IsCorrect := True;
- Writeln('Запись строки...');
- Try
- Readln(TextF, Str);
- Except
- IsCorrect := False;
- Writeln('Ошибка ввода! Введите строку с клавиатуры!');
- ReadFromConsole();
- End;
- Writeln('Строка для перекодирования: ', Str);
- CloseFile(TextF);
- InputStrFromFile := Str
- End;
- Function InputKeyFromFile(var TextF : TextFile; Path : String) : TStrings;
- Var
- Str1, Str2, Line : WideString;
- Keys : TStrings;
- Begin
- AssignFile(TextF, Path);
- Reset(TextF);
- Readln(TextF, Line);
- IsCorrect := True;
- Writeln('Запись ключа str1...');
- Try
- Readln(TextF, Str1);
- Except
- IsCorrect := False;
- Writeln('Ошибка ввода! Введите ключ Str1 с клавиатуры!');
- ReadFromConsole();
- End;
- Writeln('Ключ 1: ', Str1);
- IsCorrect := True;
- Writeln('Запись ключа str2...');
- Try
- Readln(TextF, Str2);
- Except
- IsCorrect := False;
- Writeln('Ошибка ввода! Введите ключ Str2 с клавиатуры!');
- ReadFromConsole();
- End;
- Writeln('Ключ 2: ', Str2);
- CloseFile(TextF);
- SetLength(Keys, 2);
- Keys[0] := Str1;
- Keys[1] := Str2;
- InputKeyFromFile := Keys;
- End;
- Function InputFromFile() : TStrings;
- Var
- TextF : TextFile;
- Path : String;
- Strings, Keys : TStrings;
- Begin
- Path := ChoicePath();
- Str := InputStrFromFile(TextF, Path);
- Keys := InputKeyFromFile(TextF, Path);
- SetLength(Strings, 3);
- Strings[0] := Str;
- Strings[1] := Keys[0];
- Strings[2] := Keys[1];
- InputFromFile := Strings;
- End;
- Function InputFromConsole() : TStrings;
- Var
- Strings : TStrings;
- I, J : Integer;
- IsCorrect, IsDifferent : Boolean;
- Str, Str1, Str2 : String;
- Begin
- Repeat
- IsCorrect := True;
- Writeln('Введите строку, которую нужно перекодировать: ');
- Try
- Readln(Str);
- Except
- Writeln('Ошибка ввода! Текст слишком большой!');
- IsCorrect := False;
- End;
- Until IsCorrect;
- Repeat
- IsCorrect := True;
- Writeln('Введите str1: ');
- Readln(Str1);
- Writeln('Введите str2: ');
- Readln(Str2);
- If (Length(Str1) <> Length(Str2)) Then
- Begin
- Writeln('Размеры строк должны быть одинаковыми!');
- IsCorrect := False;
- End
- Else
- Begin
- For I := 1 To (High(Str1) - 1) Do
- Begin
- For J := (I+1) To High(Str1) Do
- Begin
- If ((Str1[I] = Str1[J]) Or (Str2[I] = Str2[J])) Then
- IsDifferent := False;
- End;
- End;
- If Not IsDifferent Then
- Begin
- IsCorrect := False;
- Writeln('Символы не должны повторяться!');
- End;
- End;
- Until IsCorrect;
- SetLength(Strings, 3);
- Strings[0] := Str;
- Strings[1] := Str1;
- Strings[2] := Str2;
- InputFromConsole := Strings;
- End;
- Function ChoiceOfInput() : TStrings;
- Var
- Strings : TStrings;
- Choice : Integer;
- IsCorrect : Boolean;
- Begin
- Repeat
- IsCorrect := True;
- Writeln('Выберите, откуда вводить данные. Введите 0, если с консоли; 1, если с файла');
- Try
- Readln(Choice);
- Except
- IsCorrect := False;
- End;
- If ((Not IsCorrect) Or ((Choice <> 0) And (Choice <> 1))) Then
- Begin
- Writeln('Неверный ввод данных!');
- IsCorrect := False;
- End;
- Until IsCorrect;
- If (Choice = 0) Then
- Strings := InputFromConsole()
- Else
- Strings := InputFromFile();
- ChoiceOfInput := Strings;
- End;
- Begin
- { Repeat
- IsCorrect := True;
- Writeln('Введите str1: ');
- Readln(Str1);
- Writeln('Введите str2: ');
- Readln(Str2);
- If (Length(Str1) <> Length(Str2)) Then
- Begin
- Writeln('Размеры строк должны быть одинаковыми!');
- IsCorrect := False;
- End;
- Until IsCorrect;
- Writeln('Введите строку для кодировки: ');
- Readln(Str);
- For I := 1 To High(Str) Do
- Begin
- IsChanged := False;
- For J := 1 To High(Str1) Do
- Begin
- If ((Str[I] = Str1[J]) And (Not IsChanged)) Then
- Begin
- Str[I] := Str2[J];
- IsChanged := True;
- End;
- End;
- End;
- Writeln(Str);
- Readln; }
- { SetConsoleCP(1251);
- SetConsoleOutputCP(1251); }
- OutputTask();
- Strings := ChoiceOfInput();
- Writeln(Strings[0], Strings[1], Strings[2]);
- { Coding(Strings);
- Uncoding(Strings);
- OutputAnswer(Strings); }
- Readln;
- End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement