Advertisement
Guest User

Untitled

a guest
Sep 16th, 2014
207
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 2.20 KB | None | 0 0
  1. program Project2;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses
  6.   SysUtils,
  7.   DateUtils;
  8.  
  9.  
  10. type
  11.   T1 = Record
  12.     time: TDateTime;
  13.     closest: Integer;
  14.   end;
  15.  
  16.   T2 = Record
  17.     time: TDatetime;
  18.     closest: Integer;
  19.   end;
  20.  
  21. const
  22.   N = 9;
  23.  
  24. var
  25.   k, i: integer;
  26.   mas1: Array [0..N] of T1;
  27.   mas2: Array [0..N] of T2;
  28.  
  29.  
  30.  
  31. procedure Fclosest1(var arr1: array of T1; var arr2: array of T2);
  32. var
  33. z,j,sec: Integer;
  34.  
  35. begin
  36.   z := 0;
  37.   j := 0;
  38.   for z := 0 to Length(arr1) - 1 do
  39.   begin
  40.     sec := 61;
  41.  
  42.     while (SecondsBetween(arr2[j].time, arr1[z].time) < sec) and (j <= Length(arr2)) do
  43.     begin
  44.       sec :=  SecondsBetween(arr2[j].time, arr1[z].time);
  45.       inc(j);
  46.     end;
  47.     dec(j);
  48.     if sec < 60 then
  49.       arr1[z].closest := j
  50.     else
  51.       arr1[z].closest := -1;
  52.  
  53.   end;
  54. end;
  55.  
  56. procedure Fclosest2(var arr1: array of T1; var arr2: array of T2);
  57. var
  58. z,j,sec: Integer;
  59.  
  60. begin
  61.   z := 0;
  62.   j := 0;
  63.   for z := 0 to Length(arr2) - 1 do
  64.   begin
  65.     sec := 61;
  66.  
  67.     while (SecondsBetween(arr1[j].time, arr2[z].time) < sec) and (j <= Length(arr1)) do
  68.     begin
  69.       sec :=  SecondsBetween(arr1[j].time, arr2[z].time);
  70.       inc(j);
  71.     end;
  72.     dec(j);
  73.     if sec < 60 then
  74.       arr2[z].closest := j
  75.     else
  76.       arr2[z].closest := -1;
  77.  
  78.   end;
  79. end;
  80.  
  81. procedure FillClosest(var arr1: array of T1; var arr2: array of T2);
  82. begin
  83.   Fclosest1(arr1, arr2);
  84.   Fclosest2(arr1, arr2);
  85. end;
  86.  
  87.  
  88. begin
  89.   //Randomize;
  90.  
  91.   WriteLn(#10#13 + 'Now first array:');
  92.  
  93.   for i := 0 to N do
  94.    begin
  95.     mas1[i].time := IncSecond(Now, i*10);
  96.     mas1[i].closest := -1;
  97.  
  98.     WriteLn(i, ': ' + DateTimeToStr(mas1[i].time));
  99.    end;
  100.  
  101.   WriteLn(#10#13 + 'Now second array:');
  102.  
  103.   for i := 0 to N do
  104.    begin
  105.     mas2[i].time := IncSecond(Now, i*8);
  106.     mas2[i].closest := -1;
  107.  
  108.     WriteLn(i, ': ' + DateTimeToStr(mas2[i].time));
  109.   end;
  110.  
  111.   Writeln(#10#13 + 'Really now is:');
  112.   WriteLn(DateTimeToStr(Now)  + #10#13);
  113.  
  114.   Fclosest1(mas1, mas2);
  115.   Fclosest2(mas1, mas2);
  116.  
  117.   for i := 0 to N do
  118.   begin
  119.   Write(i, ': ' + DateTimeToStr(mas1[i].time),' closest: ', mas1[i].closest);
  120.   WriteLn(' || '+ DateTimeToStr(mas2[i].time),' closest: ', mas2[i].closest)
  121.   end;
  122.  
  123.   ReadLn;
  124. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement