Advertisement
Guest User

Untitled

a guest
Oct 16th, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 5.50 KB | None | 0 0
  1. program L24D;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses
  6.    System.SysUtils, Math;
  7.  
  8. type
  9.    TDArray = array of Integer;
  10.  
  11. function CheckFileName(FileName: String): Boolean;
  12. var Ans: Boolean;
  13.    i: Integer;
  14. begin
  15.    Ans := True;
  16.    i:=1;
  17.    while (i <= Length(FileName))And Ans do
  18.    begin
  19.       if(FileName[i] In ['\', '/', ':', '*', '?', '"', '<', '>', '|']) then
  20.       begin
  21.          Ans := False;
  22.          Writeln('\/:*?"<>| are forbidden characters...');
  23.       end;
  24.       Inc(i);
  25.    end;
  26.    if Length(FileName)=0 then
  27.    begin
  28.       Ans := False;
  29.       Writeln('File name is empty');
  30.    end;
  31.    CheckFileName := Ans;
  32. end;
  33.  
  34. function ReadInput(var B: Integer): Boolean;
  35. var Option: Char;
  36.    ErrorPos: Integer;
  37.    FileName, RawInput: String;
  38.    InFile: TextFile;
  39.    KeepReadFileName, KeepReadCosole: Boolean;
  40. begin
  41.    Writeln('[1] Read data from file');
  42.    Writeln('[2] Read data from console');
  43.    Writeln('[~] Close');
  44.    Readln(Option);
  45.    case Option of
  46.       '1':
  47.       begin
  48.          KeepReadFileName := True;
  49.          while KeepReadFileName do
  50.          begin
  51.             Writeln('Enter file name: ');
  52.             Readln(FileName);
  53.             if(CheckFileName(FileName))then
  54.             begin
  55.                AssignFile(InFile, FileName);
  56.                if(FileExists(FileName))then
  57.                begin
  58.                   KeepReadFileName := False;
  59.                   Reset(InFile);
  60.             //----------------------------------
  61.                   while ErrorPos <> 0 do
  62.                   begin
  63.                      Read(InFile, RawInput);
  64.                      Val(RawInput, B, ErrorPos);
  65.                   end;
  66.                   CloseFile(InFile);
  67.                   ReadInput := True;
  68.             //-----------------------------------
  69.                end
  70.                else
  71.                   Writeln('No such file...');
  72.             end;
  73.          end;
  74.       end;
  75.       '2':
  76.       begin
  77.          KeepReadCosole := True;
  78.          while KeepReadCosole do
  79.          begin
  80.             while(ErrorPos <> 0)do
  81.             begin
  82.                Writeln('Enter number system base: ');
  83.                Readln(RawInput);
  84.                Val(RawInput, B, ErrorPos);
  85.             end;
  86.             KeepReadCosole := False;
  87.          end;
  88.          ReadInput := True;
  89.       end;
  90.    else
  91.       ReadInput := False;
  92.    end;
  93. end;
  94.  
  95.  
  96.  
  97. procedure WriteInput(var A: TDArray);
  98. var Option: Char;
  99.    ErrorPos, i: Integer;
  100.    FileName, RawInput: String;
  101.    OutFile: TextFile;
  102.    KeepReadFileName, KeepReadOption: Boolean;
  103. begin
  104.    Writeln('[1] Write data to file');
  105.    Writeln('[2] Write data to console');
  106.    KeepReadOption:=True;
  107.    while KeepReadOption do
  108.    begin
  109.       Readln(Option);
  110.       if(Option = '1')then
  111.       begin
  112.          KeepReadOption := False;
  113.          KeepReadFileName := True;
  114.          while KeepReadFileName do
  115.          begin
  116.             Writeln('Enter file name: ');
  117.             Readln(FileName);
  118.             if(CheckFileName(FileName))then
  119.                KeepReadFileName := False;
  120.          end;
  121.          //==============================
  122.          AssignFile(OutFile, FileName);
  123.          if(FileExists(FileName))then
  124.          begin
  125.             KeepReadOption:=True;
  126.             Writeln('Do you want to clear file? [Y/N]: ');
  127.             while KeepReadOption do
  128.             begin
  129.                Readln(Option);
  130.                if(UpperCase(Option)='Y')then
  131.                begin
  132.                   Rewrite(OutFile);
  133.                   KeepReadOption := False;
  134.                end
  135.                else
  136.                if UpperCase(Option)='N' then
  137.                begin
  138.                   KeepReadOption := False;
  139.                   Append(OutFile);
  140.                end;
  141.             end;
  142.          end
  143.          else
  144.             Rewrite(OutFile);
  145.          //----------------------------------
  146.          if A[0]=-1 then
  147.             Writeln(OutFile, '-1')
  148.          else
  149.             for i := 0 to Length(A)-1 do
  150.                Writeln(OutFile, A[i]);
  151.          Writeln('Done.');
  152.          CloseFile(OutFile);
  153.          //-----------------------------------
  154.       end
  155.       else
  156.       if Option = '2' then
  157.       begin
  158.          KeepReadOption:=False;
  159.          if A[0]=-1 then
  160.             Writeln('-1')
  161.          else
  162.             for i := 0 to Length(A)-1 do
  163.                Writeln(A[i]);
  164.       end;
  165.    end;
  166. end;
  167.  
  168. procedure Main();
  169. var
  170.    B: Integer;
  171.    DigitArray: TDArray;
  172.    Close: Boolean;
  173. begin
  174.    while ReadInput(B) do
  175.    begin
  176.       try
  177.          SetLength(DigitArray, B);
  178.          if (B = 1) Or (B = 2) Or (B = 3) Or (B = 6) then
  179.          begin
  180.             DigitArray[0] := -1;
  181.             WriteInput(DigitArray);
  182.          end
  183.          else
  184.          if (B = 4) then
  185.          begin
  186.             DigitArray[0] := 2;
  187.             DigitArray[1] := 1;
  188.             DigitArray[2] := 0;
  189.             DigitArray[3] := 1;
  190.             WriteInput(DigitArray);
  191.          end
  192.          else
  193.          if (B = 5) then
  194.          begin
  195.             DigitArray[0] := 1;
  196.             DigitArray[1]:= 2;
  197.             DigitArray[2] := 0;
  198.             DigitArray[3] := 0;
  199.             DigitArray[4] := 2;
  200.             WriteInput(DigitArray);
  201.          end
  202.          else
  203.          begin
  204.             DigitArray[0] := 2;
  205.             DigitArray[1] := 1;
  206.             DigitArray[b - 5]:= 1;
  207.             DigitArray[b - 1] := b - 4;
  208.             WriteInput(DigitArray);
  209.          end;
  210.       except
  211.          on EInOutError do
  212.             Writeln('Input Error');
  213.       end;
  214.    end;
  215. end;
  216.  
  217. begin
  218.    Main;
  219. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement