Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Program Project2;
- uses
- System.SysUtils,
- System.Math;
- Const
- CHOICE_OF_CONSOLE = 1;
- CHOICE_OF_FILE = 2;
- LENGTH_OF_TXT_EXTENSION = 4;
- TXT_EXT = '.txt';
- LENGTH_OF_EMPTY_STRING = 0;
- Var
- MainString, PathToFile, TargetLetters, OutputPathToFile: String;
- IsCorrect: Boolean;
- Function ChooseVariant(Condition: String): Integer;
- Var
- IsCorrect: Boolean;
- Variant: Integer;
- Begin
- IsCorrect := False;
- Repeat
- Write(Condition);
- IsCorrect := True;
- Try
- Readln(Variant);
- Except
- Writeln('Выбор должен быть числом.');
- IsCorrect := False;
- End;
- If IsCorrect And ((Variant < CHOICE_OF_CONSOLE) Or (Variant > CHOICE_OF_FILE)) Then
- Begin
- Writeln('Выбор должен равняться либо ', CHOICE_OF_CONSOLE, ' либо ', CHOICE_OF_FILE);
- IsCorrect := False;
- End;
- Until IsCorrect;
- Result := Variant;
- End;
- Function IsFilesExtTxt(PathToFile: String): Boolean;
- Var
- ExtensionFromPath: String;
- LengthOfPath: Integer;
- Begin
- LengthOfPath := Length(PathToFile);
- If LengthOfPath <= LENGTH_OF_TXT_EXTENSION Then
- Result := False
- Else
- Begin
- ExtensionFromPath := Copy(PathToFile, LengthOfPath - LENGTH_OF_TXT_EXTENSION + 1, LENGTH_OF_TXT_EXTENSION);
- Result := (ExtensionFromPath = TXT_EXT);
- End;
- End;
- Procedure GetDataFromFile(Var PathToFile: String; Var MainString:String);
- Var
- F: TextFile;
- IsCorrectFile: Boolean;
- NumElements: Integer;
- ElementsString: String;
- Begin
- Repeat
- Write('Введите путь к файлу для чтения информации: ');
- Readln(PathToFile);
- If FileExists(PathToFile) Then
- Begin
- If IsFilesExtTxt(PathToFile) Then
- Begin
- Assignfile(F, PathToFile);
- Reset(F);
- IsCorrectFile := True;
- Readln(F, NumElements);
- Readln(F, ElementsString);
- Close(F);
- MainString := ElementsString;
- End
- Else
- Begin
- Writeln('Неправильное расширение файла. Файл должен иметь расширение ', TXT_EXT);
- IsCorrectFile := False;
- End;
- End
- Else
- Begin
- Writeln('Файла с таким названием не существует, повторите попытку.');
- IsCorrectFile := False;
- End;
- Until IsCorrectFile;
- End;
- Function ReadData(Var PathToFile, MainString:String): String;
- Var
- Condition: String;
- Variant: Integer;
- Begin
- Condition := 'Введите ' + IntToStr(CHOICE_OF_CONSOLE) + ' если хотите ввести данные в консоль или введите ' + IntToStr(CHOICE_OF_FILE) + ' если хотите использовать данные из файла: ';
- Variant := ChooseVariant(Condition);
- If Variant = CHOICE_OF_CONSOLE Then
- ReadDataFromConsole(MainString)
- Else If Variant = CHOICE_OF_FILE Then
- GetDataFromFile(PathToFile, MainString);
- Result := MainString;
- End;
- Function LongestIncreasingSubsequence(Const Sequence: String): String;
- Var
- Lengths: Array Of Integer;
- Predecessors: Array Of Integer;
- ResultSeq: string;
- I, J, MaxLength, MaxIndex: Integer;
- Begin
- SetLength(Lengths, Length(Sequence));
- SetLength(Predecessors, Length(Sequence));
- MaxLength := 0;
- MaxIndex := 0;
- For I := 1 To Length(Sequence) Do
- Begin
- Lengths[I] := 1;
- Predecessors[I] := 0;
- For J := 1 To I - 1 Do
- Begin
- If (Sequence[J] < Sequence[I]) And (Lengths[J] + 1 > Lengths[I]) Then
- Begin
- Lengths[I] := Lengths[J] + 1;
- Predecessors[I] := J;
- End;
- End;
- If Lengths[I] > MaxLength Then
- Begin
- MaxLength := Lengths[I];
- MaxIndex := I;
- End;
- End;
- I := MaxIndex;
- ResultSeq := '';
- While I <> 0 Do
- Begin
- ResultSeq := Sequence[I] + ResultSeq;
- I := Predecessors[I];
- End;
- Result := ResultSeq;
- End;
- Procedure PrintLongestIncreasingSubsequence(Const Sequence: String);
- Var
- LongestSubsequence: String;
- Begin
- LongestSubsequence := LongestIncreasingSubsequence(Sequence);
- Writeln('Наибольшая возрастающая последователньость: ', LongestSubsequence);
- End;
- Procedure WriteCountToFile(OutputPathToFile: String; MainString: String; FilePath: String);
- Var
- Subsequence: String;
- FileHandle: TextFile;
- IsCorrectFile: Boolean;
- Begin
- Repeat
- Write('Введите имя файла для записи ответа: ');
- Readln(OutputPathToFile);
- IsCorrectFile := True;
- If Not IsFilesExtTxt(OutputPathToFile) Then
- Begin
- Writeln('Вы обратились к файлу с расширением, отличным от текстового, повторите поп
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement