Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Program Lab2_3;
- {$APPTYPE CONSOLE}
- {$R *.res}
- Uses
- System.SysUtils;
- Var
- Number, LengthA : Integer;
- ArrA : Array of Integer;
- Const
- MIN_NUMBER = 1;
- MAX_NUMBER = 1000000;
- Function GetNum(Min, Max : Integer): Integer;
- Var
- IsCorrect : Boolean;
- N : Integer;
- Begin
- Repeat
- IsCorrect := True;
- Try
- Read(N);
- Except
- IsCorrect := False;
- Writeln('Вы ввели некорректные данные. Попробуйте снова.');
- End;
- If IsCorrect And ((N > Max) Or (N < Min)) Then
- Begin
- IsCorrect := False;
- Writeln('Введено значение не входящее в диапазон допустимых значений');
- End;
- Until IsCorrect;
- GetNum := N;
- End;
- Function InputNumFromConsole(): Integer;
- Begin
- Writeln('Введите число для проверки, является ли оно палиндромом');
- InputNumFromConsole := GetNum(MIN_NUMBER, MAX_NUMBER);;
- End;
- Function CheckFile(Path : String; Var Num: Integer) : Boolean;
- Var
- IsFileCorrect : Boolean;
- InputFile : TextFile;
- Begin
- IsFileCorrect := True;
- If FileExists(Path) Then
- Begin
- AssignFile(InputFile, Path);
- Try
- Reset(InputFile);
- Except
- Writeln('Не удалось открыть файл');
- IsFileCorrect := False;
- End;
- Try
- Read(InputFile, Num);
- Except
- Writeln('Данные в файле представлены в неправильном формате!');
- IsFileCorrect := False;
- End;
- If IsFileCorrect And Not(EoF(InputFile)) Then
- Begin
- Writeln('Данные в файле представлены в неправильном формате');
- IsFileCorrect := False;
- End;
- If IsFileCorrect And ((Num < MIN_NUMBER) Or (Num > MAX_NUMBER)) Then
- Begin
- Writeln('Введено значение, не входящее в диапазон допустимых значений');
- IsFileCorrect := False;
- End;
- CloseFile(InputFile);
- End
- Else
- Begin
- Writeln('Файла по данному пути не существует!');
- IsFileCorrect := False
- End;
- CheckFile := IsFileCorrect;
- End;
- Function AnalysNum(Number : Integer) : Integer;
- Var
- K : Integer;
- Begin
- K := 0;
- While (Number > 0) Do Begin
- Number := Number Div 10;
- Inc(K);
- End;
- AnalysNum := K;
- End;
- Procedure CreatArr(Var Arr : Array Of Integer; Numb : Integer);
- Var
- I : Integer;
- Begin
- For I := 0 to High(ArrA) Do Begin
- ArrA[I] := Numb Mod 10;
- Numb := Numb Div 10;
- End;
- End;
- Function Check(Arr : Array Of Integer) : Boolean;
- Var
- I : Integer;
- Solution : Boolean;
- Begin
- Solution := True;
- For I := 0 To (High(ArrA) Div 2) Do
- If (ArrA[I] <> ArrA[High(ArrA) - I]) Then
- Solution := False;
- Check := Solution;
- End;
- Function InputNum() : Integer;
- Var
- Choice, Number : Integer;
- PathFile : String;
- IsFileCorrect : Boolean;
- Begin
- Writeln('Выберите способ ввода: ', #10, '1.Ввод из консоли', #10, '2.Ввод из файла');
- Choice := GetNum(1,2);
- If Choice = 1 Then
- Begin
- Number := InputNumFromConsole;
- End
- Else
- Begin
- Repeat
- Write('Введите путь к файлу с его расширением: ');
- Readln(PathFile);
- IsFileCorrect := CheckFile(PathFile, Number);
- Until IsFileCorrect;
- End;
- InputNum := Number;
- End;
- Procedure OutputSolution (ArrA : Array Of Integer);
- Var
- I,Choice : Integer;
- OutputFile : TextFile;
- Path: String;
- IsPathCorrect, Verdict : Boolean;
- Begin
- Writeln('Выберите способ вывода: ', #10, '1.Вывод в консоль', #10, '2.Вывод в файл');
- Choice := GetNum(1,2);
- Verdict := Check(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('Эта программа определит, является ли заданное натуральное число P палиндромом', #10, 'Диапазон для ввода числа от 1 до 1000000');
- Number := InputNum;
- LengthA := AnalysNum(Number);
- SetLength(ArrA, LengthA);
- CreatArr(ArrA, Number);
- OutputSolution(ArrA);
- Readln;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement