//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 ' ') 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.