Az alábbi letöltési lehetőségek közül választhatsz: (
segítség)
Típus: text/plain
Tartalmaz szöveget
Karakterkódolás: us-ascii
Méret: 3 KB
PROGRAM jatek;
CONST
inputFile = 'jatek4.be';
maxKor = 30000;
maxm = 1000;
maxj = 10;
TYPE
mezo = RECORD
ugras: INTEGER;
tipus: BYTE;
END;
jatekos = RECORD
mezo: INTEGER;
kimarad: BOOLEAN;
END;
VAR
N: INTEGER;
palya: ARRAY [1..maxm] OF mezo;
M: INTEGER;
lista: ARRAY [1..maxj] OF jatekos;
PROCEDURE Betolt;
VAR
T: Text;
i: INTEGER;
BEGIN
Assign(T, inputFile);
Reset(T);
ReadLn(T, N, M);
FOR i:= 1 TO N DO
BEGIN
ReadLn(T, palya[i].ugras, palya[i].tipus);
END;
Close(T);
END;
PROCEDURE AlapHelyzet;
VAR
i: INTEGER;
BEGIN
FOR i:= 1 TO maxj DO
BEGIN
lista[i].mezo := 1;
lista[i].kimarad := FALSE;
END;
END;
PROCEDURE Leut(mezo: INTEGER);
VAR
i: INTEGER;
BEGIN
FOR i:= 1 TO M DO
BEGIN
IF lista[i].mezo = mezo THEN
BEGIN
lista[i].mezo := 1;
lista[i].kimarad := FALSE;
END;
END;
END;
FUNCTION JatekosLep(k, j: INTEGER): BOOLEAN;
VAR
dobas: BYTE;
mezo: INTEGER;
BEGIN
JatekosLep:= FALSE;
IF lista[j].kimarad = TRUE THEN
BEGIN
lista[j].kimarad := FALSE;
EXIT;
END;
mezo:= lista[j].mezo;
IF (palya[mezo].tipus IN [1..6]) THEN
BEGIN
dobas:= Random(6)+1;
IF dobas <> palya[mezo].tipus THEN EXIT;
END;
dobas:= Random(6)+1;
mezo:= mezo + dobas;
IF mezo > N THEN
BEGIN
mezo := N - (mezo - N);
END;
IF mezo < N THEN mezo := palya[mezo].ugras;
IF mezo >= N THEN
BEGIN
JatekosLep:= TRUE;
EXIT;
END;
Leut(mezo);
lista[j].mezo:= mezo;
IF palya[mezo].tipus = 7 THEN
BEGIN
lista[j].kimarad:= TRUE;
END;
END;
FUNCTION JatekKor(k: INTEGER): BOOLEAN;
VAR
i: INTEGER;
vege: BOOLEAN;
BEGIN
vege:= FALSE;
FOR i:= 1 TO M DO
BEGIN
IF JatekosLep(k, i) THEN vege:= TRUE;
END;
JatekKor := vege;
END;
PROCEDURE Kiir(k: INTEGER);
VAR
i: INTEGER;
BEGIN
END;
FUNCTION Lejatsz(): INTEGER;
VAR
kor: INTEGER;
BEGIN
AlapHelyzet;
Kiir(0);
FOR kor:= 1 TO maxKor DO
BEGIN
IF JatekKor(kor) THEN
BEGIN
Kiir(kor);
Lejatsz:= kor;
EXIT;
END;
Kiir(kor);
END;
Lejatsz:= maxKor+1;
END;
PROCEDURE FoProg;
VAR
i, cur, min, max: INTEGER;
sum: LONGINT;
avg: DOUBLE;
BEGIN
Randomize;
cur:= Lejatsz;
min := cur; max := cur; sum := cur;
FOR i:= 2 TO 1000 DO
BEGIN
cur:= Lejatsz;
sum := sum+cur;
IF max < cur THEN max := cur;
IF min > cur THEN min := cur;
END;
avg := sum;
avg := avg / 1000;
WriteLn(min, '/',max, '/', avg:6:2);
END;
BEGIN
Betolt;
FoProg;
END.