Archived
1
0
This repository has been archived on 2025-03-31. You can view files and clone it, but cannot push or open issues or pull requests.
pascal/ITG/LOTTO.PAS
2001-11-30 12:14:44 +01:00

115 lines
2.2 KiB
Plaintext

program Lotto_Ziehung;
uses Crt, CursorOnOff, Dos;
const prog:char='/';
freq=30;
pfreq=10;
var lotto: array[1..49] of longint;
fulr: array[1..freq] of real;
fuls: byte;
pers: byte;
full: real;
isec: longint;
h,m,s,ss: word;
procedure StartClock;
begin
GetTime(h,m,s,ss);
isec := h*3600+m*60+s;
end;
function RunSec: longint;
var nh,nm,ns,nss: word;
nsec: longint;
begin
GetTime(nh,nm,ns,nss);
nsec := nh*3600+nm*60+ns;
RunSec := nsec-isec;
end;
procedure Progress(how,much: real);
var wx,wy: word;
secs,tfull,rest: real;
i: byte;
fsum: real;
begin
secs := RunSec;
if (fuls<freq) then begin
tfull := secs / (how/much);
Inc(fuls);
fulr[fuls] := tfull;
if (full<>0) then rest := full - secs else rest := 0;
end else begin
fsum := 0;
for i:=1 to freq do fsum := fsum + fulr[i];
full := fsum / freq;
rest := full - secs;
fuls := 0;
end;
if (pers>pfreq) then begin
Write(prog,' [',(how/much)*100:6:2,'%] (',secs:4:0,'/',full:4:0,' ',rest:4:0,' left)');
pers := 0;
end else begin
Write(prog);
GotoXY(WhereX+11,WhereY);
Write('(',secs:4:0);
end;
Inc(pers);
GotoXY(14,WhereY);
case prog of
'/': prog:= '-';
'-': prog:= '\';
'\': prog:= '|';
'|': prog:= '/';
end;
end;
procedure init;
var i:byte;
begin
{ clrscr; }
fuls := 0;
full := 0;
pers := 0;
writeLn;
Randomize;
{ RandSeed := 123; }
for i:=1 to 49 do Lotto[i]:=0;
end;
procedure Ziehung;
var i,n: longint;
begin
write('Wieviel Ziehungen? '); ReadLn(n);
StartClock;
CursorOff;
write('Berechne ... ');
for i:=1 to n do begin
if i MOD 100000=0 then Progress(i,n);
inc(Lotto[Random(49)+1]);
end;
GotoXY(wherex-1,wherey); WriteLn(' fertig! ');
CursorOn;
end;
procedure Auswertung;
var z,i,max: byte;
begin
WriteLn('Die 6 h„ufigsten Ziehungen:');
for z:=1 to 6 do begin
max:=1;
for i:=2 to 49 do if Lotto[i]>Lotto[max] then max:=i;
WriteLn(z:1,': ',max:2,' [',Lotto[max],']');
Lotto[max]:=0;
end;
end;
begin
init;
Ziehung;
auswertung;
end.