All pastes #183348 Raw Edit

Stuff

public text v1 · immutable
#183348 ·published 2006-09-26 20:43 UTC
rendered paste body
//Parašyti programa išrinkimo rušiavimo algoritmui, kuri dirba daug kartu ir  //
//rušiuoja ivairiu dydžiu failus (failu dydžiai atsitiktiniai), matuodama     //
//darbo laika, skaiciuodama lyginimo operaciju kieki, ir sudaro tokiu darbo   //
//laiku ir lyginimo operaciju kiekiu pasiskirstyma.                           //
//5 Gr studento, Lino Mockaus                                                 //
program Pirma_20;
Uses sysutils, crt;
Const T = 32000;
      ilgis = 100;
Type
      TMas = array[1..T] of string[ilgis];
Var A: TMas; n, x, pal  :integer; sek :double;

//------------------------------------------------------------------------------
procedure KurtiRandFaila;
var F: text; i, s, m  :integer;
begin
  Assign (F, 'tmp.txt');
  ReWrite(F);
  Randomize;
  m := Random(T);
  for i:= 1 to m do
  begin
    s := Random(9);
    Write(F,s);
    if (i mod ilgis = 0) then  Write(F, ' ' );
  end;
  Close(F);
end;
//------------------------------------------------------------------------------
procedure SkaitytiFaila (Var A : TMas; var n : integer);
var F:text;  c :char; i :integer;
begin
  Assign (F, 'tmp.txt');
  Reset(F);
  n := 0;
  Read (F, c);
  while NOT EoF (F)  and (n<T)do
  begin
  n := n + 1;
  A[n] := '';
  while (c <> ' ') and (c <> #26) do
    begin
      A[n]:= A[n] + c;
      Read (F, c);
    end;
    Read(F,c);

  end;

  Close(F);

end;
//------------------------------------------------------------------------------
function times ( tend: boolean; var tinit: double ): double;

var
mseconds: double;
TS : TTimeStamp;
DT : TDateTime;

begin

if tend = false then begin
        TS:=DateTimeToTimeStamp(Now);
        tinit := TimeStampToMSecs ( TS );
end

else begin
        TS:=DateTimeToTimeStamp(Now);
        mseconds := ( TimeStampToMSecs ( TS ) - tinit );
        times := mseconds;
end;
end;
//------------------------------------------------------------------------------

procedure Isrinkimas(Var A : TMas; n : integer; var pal: integer);
var i,j,min:integer; t : string[ilgis];
begin
  pal := 0;
  for i := 1 to n-1 do
  begin
    min := i;
    for j :=i+1 to n do
      if A[j] < A[min] then begin min := j; pal := pal +1; end;
      t := A[min];
      A[min] := A[i];
      A[i] := t
    end;
  end;

//------------------------------------------------------------------------------


begin


  Write ('Kiek skirtingu failu sukurti: ');
  ReadLn(x);

  WriteLn ('|---------------------------------------------------------------------|');
  WriteLn ('| Duomenu kiekis |  Palyginimu skaicius | Laikas                      |');
  while (x>0) do
  begin

    KurtiRandFaila;
    SkaitytiFaila(A,n);
    times(false,sek);
    Isrinkimas (A,n, pal);
  //  delay (2000);
    WriteLn('| ', n:14, ' | ' ,pal:20,' | ', times(true,sek), '     |');
    x := x - 1;
  end;
  WriteLn ('|---------------------------------------------------------------------|');
    
  Readln;

end.