Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Program Lab2_4;
- {$APPTYPE CONSOLE}
- Uses
- System.SysUtils;
- Type
- TArr = Array Of Integer;
- Var
- N, LengthA : Integer;
- ArrA : TArr;
- Const
- MIN_ARR_LENGTH = 1;
- MAX_ARR_LENGTH = 100;
- MAX_ARR_VALUE = 100;
- MIN_ARR_VALUE = -100;
- Function GetInt(Min, Max : Integer): Integer;
- Var
- IsCorrect : Boolean;
- N : Integer;
- Begin
- Repeat
- IsCorrect := True;
- Try
- Readln(N);
- Except
- IsCorrect := False;
- Writeln('Вы ввели некорректные данные. Попробуйте снова.');
- End;
- If IsCorrect And ((N > Max) Or (N < Min)) Then
- Begin
- IsCorrect := False;
- Writeln('Введено значение не входящее в диапазон допустимых значений');
- End;
- Until IsCorrect;
- GetInt := N;
- End;
- Procedure InputArrFromConsole(Var Arr : TArr);
- Var
- I, LengthArr : Integer;
- Begin
- Writeln('Введите длину массива');
- LengthArr := GetInt(MIN_ARR_LENGTH, MAX_ARR_LENGTH);
- SetLength(Arr, LengthArr);
- For I := 0 To High(Arr) Do
- Begin
- Writeln('Введите элемент массива №', I + 1, ': ');
- Arr[I] := GetInt(MIN_ARR_VALUE, MAX_ARR_VALUE);
- End;
- End;
- Function CheckFile(Path : String) : Boolean;
- Var
- IsFileCorrect : Boolean;
- InputFile : TextFile;
- I, Length : Integer;
- Arr : TArr;
- Begin
- IsFileCorrect := True;
- If FileExists(Path) Then
- Begin
- AssignFile(InputFile, Path);
- Try
- Reset(InputFile);
- Except
- Writeln('Не удалось открыть файл');
- IsFileCorrect := False;
- End;
- If IsFileCorrect Then
- Begin
- Try
- Read(InputFile, Length);
- Except
- Writeln('Данные в файле представлены в неправильном формате!');
- IsFileCorrect := False;
- End;
- If (Length < MIN_ARR_LENGTH) Or (Length > MAX_ARR_LENGTH) Then
- Begin
- Writeln('Введена длина массива, не входящая в диапазон допустимых значений');
- IsFileCorrect := False;
- End;
- SetLength(Arr, Length);
- While (IsFileCorrect And (I < Length)) Do
- Begin
- Try
- Read(InputFile, Arr[I]);
- Except
- Writeln('Данные в файле в неправильном формате');
- IsFileCorrect := False;
- End;
- If (Arr[I] < MIN_ARR_VALUE) Or (Arr[I] > MAX_ARR_VALUE) Then
- Begin
- Write('Элементы массива не входят в диапазон допустимых значений');
- IsFileCorrect := False;
- End;
- Inc(I);
- End;
- If IsFileCorrect And Not(EoLn(InputFile)) Then
- Begin
- Writeln('Данные в файле представлены в неправильном формате');
- IsFileCorrect := False;
- End;
- If IsFileCorrect And Not(EoF(InputFile)) Then
- Begin
- Writeln('Данные в файле представлены в неправильном формате');
- IsFileCorrect := False;
- End;
- End;
- CloseFile(InputFile);
- End
- Else
- Begin
- Writeln('Файла по данному пути не существует!');
- IsFileCorrect := False
- End;
- CheckFile := IsFileCorrect;
- End;
- Function AnalizeArr(Arr : TArr) : Boolean;
- Var
- I : Integer;
- IsNonIncreasing : Boolean;
- Begin
- IsNonIncreasing := True;
- For I := 0 To High(Arr) - 1 Do
- If Arr[I + 1] > Arr[I] Then
- IsNonIncreasing := False;
- AnalizeArr := IsNonIncreasing;
- End;
- Procedure InputArrayFromFile(Path: String; Var Arr : TArr);
- Var
- InputFile: TextFile;
- LengthArr, I: Integer;
- Begin
- AssignFile(InputFile, Path);
- Reset(InputFile);
- Read(InputFile, LengthArr);
- SetLength(Arr, LengthArr);
- For I := 0 To High(Arr) Do
- Read(InputFile, Arr[I]);
- CloseFile(InputFile);
- End;
- Procedure InputArray(Var Arr: TArr);
- Var
- IsFileCorrect: Boolean;
- Path: String;
- InputFile: TextFile;
- Choice : Integer;
- Begin
- Writeln('Выберите способ ввода: ', #10, '1.Ввод из консоли', #10, '2.Ввод из файла');
- Choice := GetInt(1,2);
- If Choice = 1 Then
- Begin
- InputArrFromConsole(Arr);
- End
- Else
- Begin
- Repeat
- Writeln('Введите путь к файлу: ');
- Readln(Path);
- IsFileCorrect := CheckFile(Path);
- Until IsFileCorrect;
- InputArrayFromFile(Path, Arr);
- End;
- End;
- Procedure OutputVerdict (ArrA : TArr);
- Var
- I,Choice : Integer;
- OutputFile : TextFile;
- Path: String;
- IsPathCorrect, Verdict : Boolean;
- Begin
- Writeln('Выберите способ вывода: ', #10, '1.Вывод в консоль', #10, '2.Вывод в файл');
- Choice := GetInt(1,2);
- Verdict := AnalizeArr(ArrA);
- If Choice = 1 Then
- Begin
- If Verdict Then
- Writeln('Последовательность является невозрастающей')
- Else
- Writeln('Последовательность не является невозрастающей');
- Readln;
- End
- Else
- Begin
- Writeln('Для вывода введите путь к файлу и его имя(например, С:\Projects\Number\Имя файла.txt). Если файл отсутствует, то он будет создан автоматически по указанному пути или в корневой папке программы(по умолчанию)');
- Repeat
- IsPathCorrect := True;
- Write('Введите путь: ');
- Readln(Path);
- If Path = '' Then
- IsPathCorrect := False
- Else
- Begin
- AssignFile(OutputFile, Path);
- Try
- Rewrite(OutputFile);
- Except
- Writeln('Не удалось вывести в файл');
- IsPathCorrect := False;
- End;
- End;
- Until IsPathCorrect;
- If Verdict Then
- Write(OutputFile, 'Последовательность является невозрастающей')
- Else
- Write(OutputFile, 'Последовательность не является невозрастающей');
- CloseFile(OutputFile);
- Writeln('Вывод данных прошёл успешно!');
- Readln;
- End;
- End;
- Begin
- Writeln('Эта программа определит, является ли заданная последовательность невозрастающей');
- InputArray(ArrA);
- OutputVerdict(ArrA);
- Readln;
- End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement