Advertisement
Guest User

Untitled

a guest
Oct 16th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 5.68 KB | None | 0 0
  1. program L4D;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses
  6.    System.SysUtils;
  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, StopReadB: 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.                   StopReadB := False;
  61.                   repeat
  62.                      Readln(InFile, RawInput);
  63.                      Val(RawInput, B, ErrorPos);
  64.                      if B > 0 then
  65.                         StopReadB := True
  66.                      else
  67.                         Writeln('B must be greater than zero...');
  68.                   until (ErrorPos = 0) And (StopReadB);
  69.                   CloseFile(InFile);
  70.                   ReadInput := True;
  71.                end
  72.                else
  73.                   Writeln('No such file...');
  74.             end;
  75.          end;
  76.       end;
  77.       '2':
  78.       begin
  79.          KeepReadCosole := True;
  80.          while KeepReadCosole do
  81.          begin
  82.             StopReadB := False;
  83.             repeat
  84.                Writeln('Enter number system base: ');
  85.                Readln(RawInput);
  86.                Val(RawInput, B, ErrorPos);
  87.                if B > 0 then
  88.                   StopReadB := True
  89.                else
  90.                   Writeln('B must be greater than zero...');
  91.             until (ErrorPos = 0) And (StopReadB);
  92.             KeepReadCosole := False;
  93.          end;
  94.          ReadInput := True;
  95.       end;
  96.    else
  97.       ReadInput := False;
  98.    end;
  99. end;
  100.  
  101. procedure WriteInput(A: TDArray);
  102. var Option: Char;
  103.    ErrorPos, i: Integer;
  104.    FileName, RawInput: String;
  105.    OutFile: TextFile;
  106.    KeepReadFileName, KeepReadOption: Boolean;
  107. begin
  108.    Writeln('[1] Write data to file');
  109.    Writeln('[2] Write data to console');
  110.    KeepReadOption := True;
  111.    while KeepReadOption do
  112.    begin
  113.       Readln(Option);
  114.       if (Option = '1') then
  115.       begin
  116.          KeepReadOption := False;
  117.          KeepReadFileName := True;
  118.          while KeepReadFileName do
  119.          begin
  120.             Writeln('Enter file name: ');
  121.             Readln(FileName);
  122.             if (CheckFileName(FileName)) then
  123.                KeepReadFileName := False;
  124.          end;
  125.          AssignFile(OutFile, FileName);
  126.          if (FileExists(FileName)) then
  127.          begin
  128.             KeepReadOption := True;
  129.             Writeln('Do you want to clear file? [Y/N]: ');
  130.             while KeepReadOption do
  131.             begin
  132.                Readln(Option);
  133.                if (UpperCase(Option) = 'Y') then
  134.                begin
  135.                   Rewrite(OutFile);
  136.                   KeepReadOption := False;
  137.                end
  138.                else
  139.                if UpperCase(Option) = 'N' then
  140.                begin
  141.                   KeepReadOption := False;
  142.                   Append(OutFile);
  143.                end;
  144.             end;
  145.          end
  146.          else
  147.             Rewrite(OutFile);
  148.          if A[0] = -1 then
  149.             Writeln(OutFile, '-1')
  150.          else
  151.             for i := 0 to Length(A) - 1 do
  152.                Writeln(OutFile, A[i]);
  153.          Writeln('Done.');
  154.          CloseFile(OutFile);
  155.       end
  156.       else
  157.       if Option = '2' then
  158.       begin
  159.          KeepReadOption := False;
  160.          if A[0] = -1 then
  161.             Writeln('-1')
  162.          else
  163.             for i := 0 to Length(A) - 1 do
  164.                Writeln(A[i]);
  165.       end;
  166.    end;
  167. end;
  168.  
  169. procedure Main();
  170. var
  171.    B: Integer;
  172.    DigitArray: TDArray;
  173.    Close: Boolean;
  174. begin
  175.    while ReadInput(B) do
  176.    begin
  177.       try
  178.          SetLength(DigitArray, B);
  179.          if (B = 1) Or (B = 2) Or (B = 3) Or (B = 6) then
  180.          begin
  181.             DigitArray[0] := -1;
  182.             WriteInput(DigitArray);
  183.          end
  184.          else
  185.          if (B = 4) then
  186.          begin
  187.             DigitArray[0] := 2;
  188.             DigitArray[1] := 1;
  189.             DigitArray[2] := 0;
  190.             DigitArray[3] := 1;
  191.             WriteInput(DigitArray);
  192.          end
  193.          else
  194.          if (B = 5) then
  195.          begin
  196.             DigitArray[0] := 1;
  197.             DigitArray[1] := 2;
  198.             DigitArray[2] := 0;
  199.             DigitArray[3] := 0;
  200.             DigitArray[4] := 2;
  201.             WriteInput(DigitArray);
  202.          end
  203.          else
  204.          begin
  205.             DigitArray[0] := 2;
  206.             DigitArray[1] := 1;
  207.             DigitArray[B - 5] := 1;
  208.             DigitArray[B - 1] := b - 4;
  209.             WriteInput(DigitArray);
  210.          end;
  211.       except
  212.          on EInOutError do
  213.             Writeln('Input Error');
  214.       end;
  215.    end;
  216. end;
  217.  
  218. begin
  219.    Main;
  220. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement