Task

Write two equal-sized numerical arrays 'x' and 'y' to
a two-column text file named 'filename'.

The first column of the file contains values from an 'x'-array with a
given 'xprecision', the second -- values from 'y'-array with 'yprecision'.

For example, considering:

   x = {1, 2, 3, 1e11};
   y = {1, 1.4142135623730951, 1.7320508075688772, 316227.76601683791}; 
                                                          /* sqrt(x) */
   xprecision = 3;
   yprecision = 5;

The file should look like:

   1    1
   2    1.4142
   3    1.7321
   1e+011   3.1623e+005

This task is intended as a subtask for Measure relative performance of sorting algorithms implementations.




 
program Write_float_arrays_to_a_text_file;
 
{$APPTYPE CONSOLE}
 
uses
  System.SysUtils,
  System.IoUtils;
 
function ToString(v: TArray<Double>): TArray<string>;
var
  fmt: TFormatSettings;
begin
  fmt := TFormatSettings.Create('en-US');
  SetLength(Result, length(v));
 
  for var i := 0 to High(v) do
    Result[i] := v[i].tostring(ffGeneral, 5, 3, fmt);
end;
 
function Merge(a, b: TArray<string>): TArray<string>;
begin
  SetLength(Result, length(a));
  for var i := 0 to High(a) do
    Result[i] := a[i] + ^I + b[i];
end;
 
var
  x, y: TArray<Double>;
 
begin
  x := [1, 2, 3, 1e11];
  y := [1, 1.4142135623730951, 1.7320508075688772, 316227.76601683791];
 
  TFile.WriteAllLines('FloatArrayColumns.txt', Merge(ToString(x), ToString(y)));
end.