Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program Project4;
- {$APPTYPE CONSOLE}
- {$R *.res}
- uses
- System.SysUtils;
- type
- SeqArr = Array of Integer;
- const
- MIN_N = 2;
- MIN_INT = Low(Integer);
- MAX_INT = High(Integer);
- function GetChoice() : String;
- var
- Choice : String;
- IsCorrect : Boolean;
- begin
- Writeln('Последовательность вводится из клавиатуры или из файла? (Key|File)');
- repeat
- begin
- Readln(Choice);
- if ((Choice = 'Key') or (Choice = 'File')) then
- IsCorrect := True
- else
- begin
- Writeln('Ошибка ввода. Введите "Key" или "File".');
- IsCorrect := False;
- end;
- end;
- until(IsCorrect) ;
- GetChoice := Choice;
- end;
- function GetFileName(Message : String) : String;
- var
- NameFile: String;
- IsCorrect: Boolean;
- begin
- Writeln(Message);
- repeat
- Readln(NameFile);
- if FileExists(NameFile) then
- IsCorrect := True
- else
- begin
- Writeln('Имя файла введено некорректно. Введите имя файла в формате "name.txt".') ;
- IsCorrect := False;
- end;
- until IsCorrect;
- GetFileName := NameFile;
- end;
- function CorrectInput(MIN_NUM, MAX_NUM : Integer) : Integer;
- var
- Num : Integer;
- IsCorrect : Boolean;
- begin
- IsCorrect := True;
- Num := 0;
- repeat
- try
- begin
- Readln(Num);
- if ((Num < MIN_NUM) or (Num > MAX_NUM)) then
- begin
- Writeln('Ошибка! Введите число от ', MIN_NUM, ' до ', MAX_NUM);
- IsCorrect := False;
- end
- else
- IsCorrect := True;
- end;
- except
- begin
- Writeln('Ошибка! Введите число от ', MIN_NUM, ' до ', MAX_NUM);
- IsCorrect := False;
- end;
- end;
- until (IsCorrect);
- CorrectInput := Num;
- end;
- function GetArr(N : Integer) : SeqArr;
- var
- I : Integer;
- ArrSequence : SeqArr;
- begin
- Setlength(ArrSequence, N );
- for I := 0 to (N-1) do
- begin
- Writeln('Введите ', (I + 1), ' элемент последовательности');
- ArrSequence[I] := CorrectInput(MIN_INT, MAX_INT);
- end;
- GetArr := ArrSequence;
- end;
- function GetN (FileName : String) : Integer;
- var
- S, N : Integer;
- IntSeq : SeqArr;
- f : TextFile;
- begin
- SetLength(IntSeq, N);
- try
- Assign(f, FileName);
- Reset(f);
- except
- WriteLn('Ошибка доступа, повторите попытку.');
- FileName := GetFileName('Введите имя файла в формате "name.txt"');
- end;
- N := 0;
- while not Eof(f)do
- begin
- Read(f,S);
- Inc(N)
- end;
- CloseFile(f);
- GetN := N;
- end;
- function EmptyFile (N : Integer) : Boolean;
- var
- IsCorrect : Boolean;
- begin
- if N = 0 then
- begin
- Writeln('Файл пуст. Повторите попытку.');
- IsCorrect := False;
- end
- else
- IsCorrect := True;
- EmptyFile := IsCorrect;
- end;
- function GetArrSequence(N : Integer; FileName: String) : SeqArr;
- var
- I : Integer;
- IntSeq : SeqArr;
- f : TextFile;
- begin
- try
- Assign(f, FileName);
- Reset(f);
- except
- WriteLn('Ошибка доступа, повторите попытку.');
- FileName := GetFileName('Введите имя файла в формате "name.txt"');
- end;
- SetLength(IntSeq, N);
- for I := 0 to N do
- Read(f, IntSeq[I]);
- CloseFile(f);
- GetArrSequence := IntSeq;
- end;
- function CheckElements (N : Integer; Sequence : SeqArr) : Boolean;
- var
- I : Integer;
- IsCorrect : Boolean;
- begin
- I := 1;
- while (I < N) and (IsCorrect) do
- begin
- if Sequence[I] > Sequence[I-1] then
- IsCorrect := False;
- Inc(I);
- end;
- CheckElements := IsCorrect;
- end;
- procedure WriteResult (IsCorrect : Boolean; N : Integer; NameFile : String; Sequence : SeqArr);
- var
- OutputFile : TextFile;
- I : Integer;
- begin
- try
- Assign(OutputFile, NameFile);
- ReWrite(OutputFile);
- I := 0;
- Write(OutputFile,'Последовательность ');
- while I < N do
- begin
- Write (OutputFile, Sequence[I], ' ');
- Inc(I);
- end;
- if IsCorrect = True then
- Writeln(OutputFile,' не является невозрастающей.')
- else
- Writeln (OutputFile,' является невозрастающей.');
- except
- Write(OutputFile,'Ошибка доступа, повторите попытку.');
- end;
- CloseFile(OutputFile);
- end;
- procedure FileOutputResult (IsCorrect : Boolean; N : Integer; NameFile : String; Sequence : SeqArr);
- var
- I : Integer;
- OutputFile : TextFile;
- S : String;
- begin
- Assign(OutputFile, NameFile);
- ReWrite(OutputFile);
- try
- Write(OutputFile,'Последовательность ');
- for I := 0 to (N-1) do
- Write(OutputFile, Sequence[I], ' ');
- if IsCorrect = True then
- Writeln(OutputFile,'является невозрастающей.')
- else
- Write (OutputFile, 'не является невозрастающей.');
- except
- Write('Ошибка доступа, повторите попытку.');
- end;
- CloseFile(OutputFile);
- end;
- procedure KeyOutputResult (N : Integer; IsCorrect : Boolean; Sequense : SeqArr; Mass : String);
- var
- I : Integer;
- begin
- I := 0;
- Write('Последовательность ');
- while (i < N) do
- begin
- Write(Sequense[i], ' ');
- Inc(I);
- end;
- if (IsCorrect = True) then
- Writeln(' является невозрастающей.', Mass)
- else
- Writeln(' не является невозрастающей.', Mass)
- end;
- procedure InputKeyboard();
- var
- N : Integer;
- IsCorrect : Boolean;
- ArrSequence : SeqArr;
- begin
- Writeln('Введите количество элементов последовательности');
- N := CorrectInput(MIN_N, MAX_INT);
- ArrSequence := GetArr(N);
- IsCorrect := CheckElements(N, ArrSequence);
- KeyOutputResult(N, IsCorrect, ArrSequence, '');
- Readln;
- end;
- procedure InputFile();
- var
- N : Integer;
- NameFile, NameOutputFile, StrSequence : String;
- IsCorrect : Boolean;
- ArrSequence : SeqArr;
- begin
- IsCorrect := True;
- while (IsCorrect) do
- begin
- NameFile := GetFileName('Введите имя файла в формате "Name.txt".');
- N := GetN(NameFile);
- IsCorrect := EmptyFile(N);
- end;
- ArrSequence := GetArrSequence(N, NameFile);
- IsCorrect := CheckElements(N, ArrSequence);
- NameOutputFile := GetFileName('Введите имя файла, в который нужно записать результат.');
- WriteResult(IsCorrect, N, NameOutputFile, ArrSequence);
- FileOutputResult(IsCorrect, N, NameOutputFile, ArrSequence);
- KeyOutputResult(N, IsCorrect, ArrSequence, ' Результат записан в указанный файл.');
- Readln;
- end;
- procedure Main();
- var
- Choice : String;
- begin
- Writeln ('Задача: Проверить является ли данная числовая последовательность а1, a2,..., an невозрастающей.');
- Choice := GetChoice;
- if (Choice = 'Key') then
- InputKeyboard
- else
- InputFile;
- end;
- begin
- Main;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement