Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program lab2_3;
- {$APPTYPE CONSOLE}
- {$R *.res}
- uses
- System.SysUtils;
- Function GetSource(What: String): String;
- var
- Source: String;
- begin
- Write('Select the source for '+ what + ':' + #13#10 + '1:Console' + #13#10 + '2:File' + #13#10 + 'Enter 1 or 2: ');
- Readln(Source);
- while (Source <> '1') and (Source <> '2') do
- begin
- Write('Incorrect input!!!' + #13#10 + 'Select the source for '+ what + ':' + #13#10 +
- '1:Console' + #13#10 + '2:File' + #13#10 + 'Enter 1 or 2: ');
- Readln(Source);
- end;
- GetSource := Source;
- end;
- Function GetInPath: String;
- var
- Path: String;
- IsCorrect: Boolean;
- begin
- Write('Enter file path: ');
- repeat
- IsCorrect := True;
- Readln(Path);
- if not FileExists(Path) then
- begin
- Write('File is not found' + #13#10 + 'Enter file path: ');
- IsCorrect := False;
- end
- else
- if ((Path[Length(Path)] <> 't') or (Path[Length(Path) - 1] <> 'x') or
- (Path[Length(Path)- 2] <> 't') or (Path[Length(Path)- 3] <> '.')) then
- begin
- Write('File is found, but it is not ".txt" type file' + #13#10 + 'Enter file path: ');
- IsCorrect := False;
- end;
- until IsCorrect;
- GetInPath := Path;
- end;
- Function GetOutPath: String;
- var
- Path: String;
- IsCorrect: Boolean;
- begin
- Write('Enter file path: ');
- repeat
- IsCorrect := True;
- Readln(Path);
- if ((Path[Length(Path)] <> 't') or (Path[Length(Path) - 1] <> 'x') or
- (Path[Length(Path)- 2] <> 't') or (Path[Length(Path) - 3] <> '.')) then
- begin
- Write('It should be a ".txt" type file' + #13#10 + 'Enter file path: ');
- IsCorrect := False;
- end;
- until IsCorrect;
- GetOutPath := Path;
- end;
- Function GetNumFromConsole: Integer;
- var
- IsCorrect: Boolean;
- Number: Integer;
- begin
- Write('Enter number: ');
- Number := 0;
- repeat
- IsCorrect := True;
- try
- Readln(Number);
- except
- Write('Incorrect input!!!' + #13#10 + 'Enter number: ');
- IsCorrect := False;
- end;
- if (IsCorrect and (Number < 1)) then
- begin
- Write('The number must be more than 0', #13#10, 'Enter number: ');
- IsCorrect := False;
- end;
- until IsCorrect;
- GetNumFromConsole := Number;
- end;
- Function GetNumFromFile(Path: String): Integer;
- var
- InFile: TextFile;
- Number: Integer;
- IsCorrect: Boolean;
- begin
- Number := 0;
- IsCorrect := True;
- AssignFile(InFile, Path);
- Reset(InFile);
- try
- Read(InFile,Number);
- except
- Writeln('Incorrect file content!!!');
- number := 0;
- IsCorrect := False;
- end;
- if IsCorrect and (not Eof(InFile)) then
- begin
- Writeln('Incorrect file content!!!');
- number := 0;
- end
- else
- if IsCorrect and (number < 1) then
- begin
- Writeln('Incorrect file content!!!(The number must be more than 0)');
- number := 0;
- end;
- CloseFile(InFile);
- GetNumFromFile := Number;
- end;
- Function GetNum(Source: String): Integer;
- var
- InPath: String;
- Number: Integer;
- begin
- if (Source = '1') then
- Number := GetNumFromConsole
- else
- begin
- InPath := GetInPath;
- Number := GetNumFromFile(InPath);
- while (Number = 0) do
- begin
- InPath := GetInPath;
- Number := GetNumFromFile(InPath);
- end;
- end;
- GetNum := Number;
- end;
- Function GetReverse(Number: Integer): Integer;
- var
- Reverse: Integer;
- begin
- Reverse := 0;
- While(Number > 0) do
- begin
- Reverse := Reverse * 10 + Number mod 10;
- Number := Number div 10;
- end;
- GetReverse := Reverse;
- end;
- Function GetAnswer(Number,Reverse: Integer): String;
- begin
- if Number = Reverse then
- GetAnswer := 'Number is palindrome'
- else
- GetAnswer := 'Number is not palindrome';
- end;
- Procedure OutputToFile(Path, Answer: String);
- var
- OutFile: TextFile;
- begin
- AssignFile(OutFile, Path);
- Rewrite(OutFile);
- Writeln(OutFile, answer);
- CloseFile(OutFile);
- Writeln('Complete');
- end;
- Procedure Output(Source, Answer: String);
- var
- OutPath: String;
- begin
- if (Source = '1') then
- Writeln(answer)
- else
- begin
- OutPath := GetOutPath;
- OutputToFile(OutPath,Answer);
- end;
- end;
- var
- InputSource, OutputSource, Answer: String;
- Number, ReverseNumber: Integer;
- begin
- Writeln('Welcome to the program that checks is a given number a palindrome.');
- InputSource := getSource('entering the number');
- Number := getNum(InputSource);
- ReverseNumber := getReverse(Number);
- Answer := getAnswer(Number,ReverseNumber);
- OutputSource := getSource('output');
- Output(OutputSource,Answer);
- readln;
- end.
Add Comment
Please, Sign In to add comment