Advertisement
ALTracer

Array filler

May 14th, 2016
374
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.80 KB | None | 0 0
  1. program ArrayFiller;
  2. uses SysUtils;
  3. var a:array of array of Integer;
  4.   foutname:String;
  5.   Fout:Text;
  6.   hbd:Boolean; //has been destroyed
  7.   i,j,m,n:Word;
  8.   IORes:Integer;
  9.   fillfunc:function(x:Integer):Integer;
  10.   range:Integer;
  11.   neg:Char;
  12.  
  13. function NegFiller(range:Integer):Integer;
  14. var res:Integer;
  15. begin
  16.   res:=random(range*2)-range;
  17.   NegFiller:=res;
  18. end;
  19. function PosFiller(range:Integer):Integer;
  20. var res:Integer;
  21. begin
  22.   res:=random(range);
  23.   PosFiller:=res;
  24. end;
  25. //main
  26. begin
  27.   WriteLn('I see you are in deep trouble');
  28.   WriteLn('Tough times have come');
  29.   WriteLn('Which file should I fill?');
  30.   foutname:='';
  31.   ReadLn(foutname);
  32.   while foutname='' do
  33.   begin
  34.     WriteLn('Write some filename, fool!');
  35.     ReadLn(foutname);
  36.   end;
  37.   Assign(Fout,foutname);
  38.   hbd:=False;
  39.   if FileExists(foutname) then hbd:=True;
  40.   {$I-}
  41.   ReWrite(Fout);
  42.   {$I+}
  43.   IORes:=IOResult;
  44.   if IORes<>0 then
  45.   begin
  46.     WriteLn('Even I cannot solve your problem this way.');
  47.     WriteLn('Input/Output error #',IORes);
  48.     ReadLn();
  49.     halt(IORes);
  50.   end;
  51.   if hbd then WriteLn('That file has just been sacrificed.');
  52.   WriteLn;
  53.   Write('How big your trouble is? (rows, columns): ');
  54.   ReadLn(m,n);
  55.   WriteLn(Fout,m,' ',n);
  56.   SetLength(a,m+1,n+1);
  57.   WriteLn('Now I shall call the Great Randomizer.');
  58.   Randomize;
  59.   Write('Would you want to limit it? (int.) :');
  60.   ReadLn(range);
  61.   Write('Negatives? (y/n)');
  62.   ReadLn(neg);
  63.   case neg of
  64.     'y': fillfunc:=@NegFiller;
  65.     'n': fillfunc:=@PosFiller;
  66.   end;
  67.   for i:=1 to m do
  68.   begin
  69.     for j:=1 to n do
  70.     begin
  71.       a[i,j]:=fillfunc(range);
  72.       Write(Fout,a[i,j]:3,' ');
  73.     end;
  74.   WriteLn(Fout);
  75.   end;
  76.  
  77.   Close(Fout);
  78.   WriteLn('Your praises have been answered.');
  79.   WriteLn('Check the ',foutname);
  80.   ReadLn();
  81. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement