Advertisement
lithie_oce

lab 3.1

Nov 19th, 2023 (edited)
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 7.49 KB | Source Code | 0 0
  1. Program Lab3task1;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. Uses
  6.   SysUtils;
  7.  
  8. Function ChoiceCheck() : Integer;
  9. Var
  10.     Choice: Integer;
  11.     IsCorrect: Boolean;
  12. Begin
  13.     Repeat
  14.         IsCorrect:=True;
  15.         Try
  16.             Readln(Choice);
  17.         Except
  18.             Writeln('Error! Input a number');
  19.             IsCorrect := False;
  20.         End;
  21.         If (IsCorrect And ((Choice < 1) Or (Choice > 2))) Then
  22.         Begin
  23.             Writeln('Error! Input 1 or 2');
  24.             IsCorrect := False;
  25.         End;
  26.     Until  (IsCorrect);
  27.     ChoiceCheck := Choice;
  28. End;
  29.  
  30. Function InputCheck(): String;
  31. Var
  32.     IsCorrect: Boolean;
  33.     Str: String;
  34.     I: Integer;
  35. Begin
  36.     Repeat
  37.         Writeln ('Input the string consisting of numbers, letters of the English alphabet and symbols "-", "+", "." ');
  38.         IsCorrect := True;
  39.         Readln(Str);
  40.         For I:=1 To Length(Str) Do
  41.         Case Ord(Str[I]) Of
  42.             1..42, 44, 47, 58..64, 91..96, 123..255: IsCorrect :=  False;
  43.         End;
  44.         If Not(IsCorrect) Then
  45.         Writeln('Incorrect string format');
  46.     Until  (IsCorrect);
  47.     InputCheck := Str;
  48. End;
  49.  
  50. Function CheckInputFilePath(): String;
  51. Var
  52.     Path: String;
  53.     IsCorrect: Boolean;
  54.     InputFile: File;
  55. Begin
  56.     Repeat
  57.         Writeln('Input path to the file');
  58.         IsCorrect := True;
  59.         Readln(Path);
  60.         If (Not(FileExists(Path))) Then
  61.         Begin
  62.             IsCorrect := False;
  63.             Writeln('Could not find the file');
  64.         End;
  65.         If (IsCorrect) Then
  66.         Begin
  67.             Try
  68.                 AssignFile(InputFile, Path);
  69.                 ReSet(InputFile);
  70.             Except
  71.                 IsCorrect := False;
  72.                 Writeln('Could not open the file');
  73.             End;
  74.         End;
  75.     Until (IsCorrect);
  76.     CloseFile(InputFile);
  77.     CheckInputFilePath := Path;
  78. End;
  79.  
  80. Function FileCheckString() : String;
  81. Var
  82.     InputFile: TextFile;
  83.     I: Integer;
  84.     Path, Str: String;
  85.     IsCorrect: Boolean;
  86. Begin
  87.     Repeat
  88.         Path := CheckInputFilePath();
  89.         IsCorrect := True;
  90.         AssignFile(InputFile, Path);
  91.         Reset(Inputfile);
  92.         Read(InputFile, Str);
  93.         If (IsCorrect And (Length(Str) < 1)) Then
  94.         Begin
  95.             IsCorrect := False;
  96.             Writeln ('The string is empty');
  97.         End;
  98.         If ((IsCorrect) And Not(EoF(InputFile))) Then
  99.         Begin
  100.             IsCorrect := False;
  101.             Writeln ('There should be only one string in the file');
  102.         End;
  103.         If (IsCorrect) Then
  104.         Begin
  105.             For I:=1 To Length(Str) Do
  106.             Case Ord(Str[I]) Of
  107.                 1..42, 44, 47, 58..64, 91..96, 123..255: IsCorrect :=  False;
  108.             End;
  109.             If Not(IsCorrect) Then
  110.             Writeln('Incorrect string format');
  111.         End;
  112.  
  113.     Until (IsCorrect);
  114.     FileCheckString := Str;
  115. End;
  116.  
  117. Function InputChoice (): String;
  118. Var
  119.     Str: String;
  120.     Choice: Integer;
  121. Begin
  122.     Writeln('Choose input option: ', #10, '1.Input from console', #10,
  123.             '2.Input from file');
  124.     Choice := ChoiceCheck();
  125.     If (Choice = 1)  Then
  126.     Str := InputCheck()
  127.     Else
  128.     Str:= FileCheckString();
  129.     InputChoice := Str;
  130. End;
  131.  
  132. Function CheckOutputFilePath(): String;
  133. Var
  134.     Path: String;
  135.     IsCorrect: Boolean;
  136.     OutputFile: File;
  137. Begin
  138.     Writeln('Input file path and the name of the file for', #10, 'example, Ñ:\Projects\Number\FileName.txt. If the ', #10, 'file does not exist, then it will be created', #10,'automatically in the root folder of the program');
  139.     IsCorrect := True;
  140.     Readln(Path);
  141.     If (Not(FileExists(Path))) Then
  142.     Begin
  143.         IsCorrect := False;
  144.         Writeln('Could not find the file');
  145.     End;
  146.     If (IsCorrect)Then
  147.     Try
  148.         AssignFile(OutputFile, Path);
  149.         ReSet(OutputFile);
  150.     Except
  151.         IsCorrect := False;
  152.         Writeln('Could not open the file');
  153.     End;
  154.     If (Not(IsCorrect)) Then
  155.     Begin
  156.     Writeln ('File will be created in the root folder of the program');
  157.     Path := 'Result.txt';
  158.     End
  159.     Else
  160.     CloseFile(OutputFile);
  161.     CheckOutputFilePath := Path;
  162. End;
  163.  
  164. Procedure FindConsoleSubStr(Str: String);
  165. Var
  166. SubStr: String;
  167. I: Integer;
  168. IsFound: Boolean;
  169. Begin
  170.     IsFound := False;
  171.     For I := 1 to Length(Str) Do
  172.         Case Ord(Str[I]) Of
  173.             43, 45: Begin
  174.                         If (Length(SubStr)>1) Then
  175.                             Writeln(Substr)
  176.                         Else
  177.                             If (Str[I-1]='0') Then
  178.                                 Writeln('0');
  179.                         SubStr := ''+Str[I];
  180.                         IsFound := True;
  181.                     End;
  182.             46, 65..90, 97..122: Begin
  183.                                      IsFound := False;
  184.                                          If (Length(SubStr)>1) Then
  185.                                              Writeln (SubStr)
  186.                                          Else
  187.                                          If (Str[I-1]='0') Then
  188.                                              Writeln('0');
  189.                                      SubStr := '';
  190.                                  End;
  191.             48:  If (IsFound) And Not((Substr[Length(Substr)]='+') Or (Substr[Length(Substr)]='-')) Then
  192.                     SubStr:= SubStr+Str[I];
  193.             49..57: If (IsFound) Then
  194.                     SubStr:= SubStr+Str[I];
  195.         End;
  196.         If (IsFound) And (Length(SubStr)>1) Then
  197.             Writeln (SubStr);
  198. End;
  199.  
  200. Procedure FindFileSubStr(Str: String);
  201. Var
  202. SubStr, Path: String;
  203. I: Integer;
  204. IsFound: Boolean;
  205. OutputFile: TextFile;
  206. Begin
  207.     Path:=CheckOutputFilePath();
  208.     AssignFile (OutputFile, Path);
  209.     Rewrite(OutputFile);
  210.     IsFound := False;
  211.     For I := 1 to Length(Str) Do
  212.         Case Ord(Str[I]) Of
  213.             43, 45: Begin
  214.                         If (Length(SubStr)>1) Then
  215.                             Writeln (OutputFile, SubStr)
  216.                         Else
  217.                             If (Str[I-1]='0') Then
  218.                                 Writeln(OutputFile, '0');
  219.                         SubStr := ''+Str[I];
  220.                         IsFound := True;
  221.                     End;
  222.             46, 65..90, 97..122: Begin
  223.                                      IsFound := False;
  224.                                      If (Length(SubStr)>1) Then
  225.                                          Writeln (OutputFile, SubStr)
  226.                                      Else
  227.                                          If (Str[I-1]='0') Then
  228.                                              Writeln(OutputFile, '0');
  229.                                      SubStr := '';
  230.                                  End;
  231.             48:  If (IsFound) And Not((Substr[Length(Substr)]='+') Or (Substr[Length(Substr)]='-')) Then
  232.                     SubStr:= SubStr+Str[I];
  233.             49..57: If (IsFound) Then
  234.                     SubStr:= SubStr+Str[I];
  235.         End;
  236.         If (IsFound) And (Length(SubStr)>1) Then
  237.         Writeln (OutputFile, SubStr);
  238.         Close(OutputFile);
  239.     Writeln('Successful output');
  240. End;
  241.  
  242. Procedure OutputChoice (Str: String);
  243. Var
  244.     Choice: Integer;
  245. Begin
  246.     Writeln('Choose output option: ', #10, '1.Output through console', #10,
  247.               '2.Output through file');
  248.     Choice := ChoiceCheck();
  249.     If (Choice = 1) Then
  250.     FindConsoleSubStr(Str)
  251.     Else
  252.     FindFileSubStr(Str);
  253. End;
  254.  
  255. Var
  256.     Str: String;
  257. Begin
  258.     Str :=  InputChoice();
  259.     OutputChoice(Str);
  260.     Readln
  261. End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement