Осенний турнир 2016 / std.floats3

ru en cn

с начала прошло: 3007 д. 00:43
страница обновлена: 25.11.2024 08:43

std.floats3: floats3.dpr

{$APPTYPE CONSOLE}
uses
  SysUtils;

var
  fin,fout,fans: TextFile;

const osn = 3;
      eps = 1e-3;

procedure Ex(const s: string; ec: integer; ln: integer = -1);
begin
   write(s);
   if ln >= 0 then write(' in pos ', ln);
   try
     close(fin); close(fout); close(fans);
   except
   end;
   halt(ec);
end;

var
   s1, s2: double;
   i: integer;
   wa: string;

begin
   wa := '%%0.%df instead of %%0.%df'; wa := format(wa, [osn, osn]);
   try
      assign(fin,paramstr(1)); reset(fin);
   except on e: Exception do
      Ex('Error opening input: ' + e.Message, 3);
   end;
   try
      assign(fans,paramstr(3)); reset(fans);   
   except on e: Exception do
      Ex('Error opening answer: ' + e.Message, 3);
   end;
   try
      assign(fout,paramstr(2)); reset(fout);
   except on e: Exception do
      Ex('Can''t open output: ' + e.Message, 2);
   end;
   i := 0;
   try
      while (not SeekEof(fout)) and (not SeekEof(fans)) do begin
         inc(i);
         read(fout,s1); read(fans,s2);
         if abs(s1 - s2) > eps then begin
            Ex(format(wa, [s1, s2]), 1, i);
         end;
      end;
      if not SeekEof(fout) then Ex('Extra lines', 2);
      if not SeekEof(fans) then Ex('Too few lines', 2);
   except
      Ex('PE', 2);
   end;
   Ex('', 0);
end.
Дальневосточный федеральный университет