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: 2 KB
PROGRAM folyo;
CONST
filePre = 'FOLYO';
inputExt = 'BE';
outputExt = 'KIX';
VAR
folyok: ARRAY [1..1000] OF RECORD
jel: BOOLEAN;
kov: INTEGER;
nev: STRING[20];
END;
VAR
i: BYTE;
id: CHAR;
inputFile, outputFile: STRING;
N0, N, Q: INTEGER;
FUNCTION FolyoNev(nev: STRING): INTEGER;
VAR
i: INTEGER;
BEGIN
i:= 1;
WHILE (i <= N0) AND (folyok[i].nev <> nev) DO INC(i);
IF i > N0 THEN
BEGIN
INC(N0);
folyok[N0].nev:= nev;
folyok[N0].kov:= 0;
END;
FolyoNev:= i;
END;
PROCEDURE Betolt;
VAR
T: Text;
i, f1, f2: INTEGER;
s1, s2: STRING[20];
BEGIN
Assign(T, inputFile);
Reset(T);
ReadLn(T, N);
N0:= 0;
FOR i:= 1 TO N DO
BEGIN
ReadLn(T, s1); f1:= FolyoNev(s1);
ReadLn(T, s2); f2:= FolyoNev(s2);
folyok[f1].kov:= f2;
END;
ReadLn(T, s1);
Q:= FolyoNev(s1);
Close(T);
END;
PROCEDURE Keres;
VAR
i, j, szamol: INTEGER;
kesz: BOOLEAN;
T: Text;
BEGIN
Assign(T, outputFile);
Rewrite(T);
FOR i:= 1 TO N0 DO folyok[i].jel:= FALSE;
folyok[Q].jel:= TRUE;
szamol:= 0;
REPEAT
kesz:= TRUE;
FOR i:= 1 TO N0 DO
BEGIN
IF folyok[i].jel THEN
BEGIN
FOR j:= 1 TO N0 DO
BEGIN
IF NOT (folyok[j].jel) AND (folyok[j].kov = i) THEN
BEGIN
INC(szamol);
folyok[j].jel:= TRUE;
kesz:= FALSE;
END;
END;
END;
END;
UNTIL kesz;
folyok[Q].jel:= FALSE;
WriteLn(T, szamol);
FOR i:= 1 TO N0 DO
BEGIN
IF folyok[i].jel THEN WriteLn(T, folyok[i].nev);
END;
j:= folyok[Q].kov;
szamol:= 0;
WHILE j <> 0 DO
BEGIN
INC(szamol);
j:= folyok[j].kov;
END;
WriteLn(T, szamol);
j:= folyok[Q].kov;
WHILE j <> 0 DO
BEGIN
WriteLn(T, folyok[j].nev);
j:= folyok[j].kov;
END;
Close(T);
END;
BEGIN
Write('sorszam: '); Read(id);
inputFile := filePre + id + '.' + inputExt;
outputFile := filePre + id + '.' + outputExt;
Betolt;
Keres;
END.