Egor_Vakar

lab2_3(delphi)

Oct 10th, 2021 (edited)
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 5.00 KB | None | 0 0
  1. program lab2_3;
  2. {$APPTYPE CONSOLE}
  3. {$R *.res}
  4. uses
  5.     System.SysUtils;
  6. Function GetSource(What: String): String;
  7. var
  8.     Source: String;
  9. begin
  10.     Write('Select the source for '+ what + ':'  + #13#10 + '1:Console'  + #13#10 + '2:File'  + #13#10 + 'Enter 1 or 2: ');
  11.     Readln(Source);
  12.     while (Source <> '1') and (Source <> '2') do
  13.     begin
  14.         Write('Incorrect input!!!' + #13#10 + 'Select the source for '+ what + ':'  + #13#10 +
  15.               '1:Console'  + #13#10 + '2:File'  + #13#10 + 'Enter 1 or 2: ');
  16.         Readln(Source);
  17.     end;
  18.     GetSource := Source;
  19. end;
  20. Function GetInPath: String;
  21. var
  22.     Path: String;
  23.     IsCorrect: Boolean;
  24. begin
  25.     Write('Enter file path: ');
  26.     repeat
  27.         IsCorrect := True;
  28.         Readln(Path);
  29.         if not FileExists(Path) then
  30.         begin
  31.             Write('File is not found' + #13#10 + 'Enter file path: ');
  32.             IsCorrect := False;
  33.         end
  34.         else
  35.             if ((Path[Length(Path)] <> 't') or (Path[Length(Path) - 1] <> 'x') or
  36.                 (Path[Length(Path)- 2] <> 't') or (Path[Length(Path)- 3] <> '.')) then
  37.             begin
  38.                 Write('File is found, but it is not ".txt" type file' + #13#10 + 'Enter file path: ');
  39.                 IsCorrect := False;
  40.             end;
  41.     until IsCorrect;
  42.     GetInPath := Path;
  43. end;
  44. Function GetOutPath: String;
  45. var
  46.     Path: String;
  47.     IsCorrect: Boolean;
  48. begin
  49.     Write('Enter file path: ');
  50.     repeat
  51.         IsCorrect := True;
  52.         Readln(Path);
  53.         if ((Path[Length(Path)] <> 't') or (Path[Length(Path) - 1] <> 'x') or
  54.             (Path[Length(Path)- 2] <> 't') or (Path[Length(Path) - 3] <> '.')) then
  55.         begin
  56.             Write('It should be a ".txt" type file' + #13#10 + 'Enter file path: ');
  57.             IsCorrect := False;
  58.         end;
  59.     until IsCorrect;
  60.     GetOutPath := Path;
  61. end;
  62. Function GetNumFromConsole: Integer;
  63. var
  64.     IsCorrect: Boolean;
  65.     Number: Integer;
  66. begin
  67.     Write('Enter number: ');
  68.     Number := 0;
  69.     repeat
  70.         IsCorrect := True;
  71.         try
  72.             Readln(Number);
  73.         except
  74.             Write('Incorrect input!!!' + #13#10 + 'Enter number: ');
  75.             IsCorrect := False;
  76.         end;
  77.         if (IsCorrect and (Number < 1)) then
  78.         begin
  79.             Write('The number must be more than 0', #13#10, 'Enter number: ');
  80.             IsCorrect := False;
  81.         end;
  82.     until IsCorrect;
  83.     GetNumFromConsole := Number;
  84. end;
  85. Function GetNumFromFile(Path: String): Integer;
  86. var
  87.     InFile: TextFile;
  88.     Number: Integer;
  89.     IsCorrect: Boolean;
  90. begin
  91.     Number := 0;
  92.     IsCorrect := True;
  93.     AssignFile(InFile, Path);
  94.     Reset(InFile);
  95.     try
  96.         Read(InFile,Number);
  97.     except
  98.         Writeln('Incorrect file content!!!');
  99.         number := 0;
  100.         IsCorrect := False;
  101.     end;
  102.     if IsCorrect and (not Eof(InFile)) then
  103.     begin
  104.         Writeln('Incorrect file content!!!');
  105.         number := 0;
  106.     end
  107.     else
  108.         if IsCorrect and (number < 1) then
  109.         begin
  110.             Writeln('Incorrect file content!!!(The number must be more than 0)');
  111.             number := 0;
  112.         end;
  113.     CloseFile(InFile);
  114.     GetNumFromFile := Number;
  115. end;
  116. Function GetNum(Source: String): Integer;
  117. var
  118.     InPath: String;
  119.     Number: Integer;
  120. begin
  121.     if (Source = '1') then
  122.         Number := GetNumFromConsole
  123.     else
  124.     begin
  125.         InPath := GetInPath;
  126.         Number := GetNumFromFile(InPath);
  127.         while (Number = 0) do
  128.         begin
  129.             InPath := GetInPath;
  130.             Number := GetNumFromFile(InPath);
  131.         end;
  132.     end;
  133.     GetNum := Number;
  134. end;
  135. Function GetReverse(Number: Integer): Integer;
  136. var
  137.     Reverse: Integer;
  138. begin
  139.     Reverse := 0;
  140.     While(Number > 0) do
  141.     begin
  142.         Reverse := Reverse * 10 + Number mod 10;
  143.         Number := Number div 10;
  144.     end;
  145.     GetReverse := Reverse;
  146. end;
  147. Function GetAnswer(Number,Reverse: Integer): String;
  148. begin
  149.     if Number = Reverse then
  150.         GetAnswer := 'Number is palindrome'
  151.     else
  152.         GetAnswer := 'Number is not palindrome';
  153. end;
  154. Procedure OutputToFile(Path, Answer: String);
  155. var
  156.     OutFile: TextFile;
  157. begin
  158.     AssignFile(OutFile, Path);
  159.     Rewrite(OutFile);
  160.     Writeln(OutFile, answer);
  161.     CloseFile(OutFile);
  162.     Writeln('Complete');
  163. end;
  164. Procedure Output(Source, Answer: String);
  165. var
  166.     OutPath: String;
  167. begin
  168.     if (Source = '1') then
  169.         Writeln(answer)
  170.     else
  171.     begin
  172.         OutPath := GetOutPath;
  173.         OutputToFile(OutPath,Answer);
  174.     end;
  175. end;
  176. var
  177.     InputSource, OutputSource, Answer: String;
  178.     Number, ReverseNumber: Integer;
  179. begin
  180.     Writeln('Welcome to the program that checks is a given number a palindrome.');
  181.     InputSource := getSource('entering the number');
  182.     Number := getNum(InputSource);
  183.     ReverseNumber := getReverse(Number);
  184.     Answer := getAnswer(Number,ReverseNumber);
  185.     OutputSource := getSource('output');
  186.     Output(OutputSource,Answer);
  187.     readln;
  188. end.
Add Comment
Please, Sign In to add comment