program
KromoakDerrigorrezkoAginduak_2023ko_uztaila;
uses
crt, sysutils;
const
iMAX =
340
;
type
integer
=
smallint
;
tsKate25 =
string
[
25
];
tsKate199 =
string
[
199
];
trdBalioak =
record
iDefentsan,
iKontrolean,
iErasoan,
iGuztira:
integer
;
end
;
trdKromoa =
record
iZenbakia :
integer
;
sIzena : tsKate25;
sTokia,
sTaldea : tsKate25;
rdBalioak : trdBalioak;
iZenbatAle:
integer
;
end
;
tfrdBilduma =
file
of
trdKromoa;
trdJokalaria =
record
sIzena : tsKate25;
sTokia : tsKate25;
boHartuta:
boolean
;
end
;
tardJokalariak =
array
[
1..
iMAX]
of
trdJokalaria;
tardNireTaldea =
array
[
1..11
]
of
trdJokalaria;
function
fncKonfigurazioaHautatu:
char
;
var
cHautapena:
char
;
begin
writeln
;
writeln
(
'KONFIGURAZIOAK'
:
20
);
writeln
(
'=============='
:
20
);
writeln
(
' A) 4-4-2 (atezain 1, 4 atzelari, 4 erdilari eta 2 aurrelari)'
:
74
);
writeln
(
' B) 4-5-1 (atezain 1, 4 atzelari, 5 erdilari eta aurrelari 1)'
:
74
);
writeln
(
' C) 4-3-3 (atezain 1, 4 atzelari, 3 erdilari eta 3 aurrelari)'
:
74
);
writeln
(
' D) 3-4-3 (atezain 1, 3 atzelari, 4 erdilari eta 3 aurrelari)'
:
74
);
writeln
;
repeat
write
(
'Zure aukera: '
:
20
);
READLN(cHautapena);
cHautapena := upcase(cHautapena);
until
(cHautapena >=
'A'
)
and
(cHautapena <=
'D'
);
FNCKONFIGURAZIOAHAUTATU := cHautapena;
end
;
procedure
FitxategikoDatuBatzukArrayBatera( sFitxIzen: tsKate199;
sPostuaZelaian: tsKate25;
var
ardJokalariak: tardJokalariak;
var
iLuzera:
integer
);
var
rdKromoBat: trdKromoa;
f_B : tfrdBilduma;
begin
assign(f_B, sFitxIzen);
reset(f_B);
iLuzera :=
0
;
while
not
eof(f_B)
do
begin
READ(f_B, rdKromoBat);
IF
(rdKromoBat
.
sTokia = sPostuaZelaian)
AND
(rdKromoBat
.
iZenbatAle >
0
)
THEN
BEGIN
iLuzera := iLuzera +
1
;
ardJokalariak[iLuzera].sIzena := rdKromoBat
.
sIzena;
ardJokalariak[iLuzera].sTokia := sPostuaZelaian;
ardJokalariak[iLuzera].boHartuta :=
FALSE
;
END
;
end
;
close(f_B);
end
;
procedure
TaldeaIkusi(
const
ardJokalariak: tardNireTaldea);
var
iKont:
integer
;
begin
writeln
(
'IZENA'
:
30
,
'TOKIA ZELAIAN'
:
20
);
writeln
(
'-----'
:
30
,
'-------------'
:
20
);
FOR
iKont:=
1
TO
11
DO
BEGIN
WRITELN
(ardJokalariak[iKont].sIzena:
30
, ardJokalariak[iKont].sTokia:
20
);
END
;
writeln
;
end
;
procedure
JokalariakAukeratu(
var
ardJokalariak: tardJokalariak;
iLuzJokalariak:
integer
;
var
ardNireTaldea: tardNireTaldea;
var
iLuzNireTaldea:
integer
;
iZenbat:
integer
);
var
iKont:
integer
;
iZbk :
integer
;
begin
randomize;
FOR
iKont:=
1
TO
iZenbat
DO
BEGIN
repeat
iZbk := RANDOM(iLuzJokalariak) +
1
;
write
(
'iLuzJokalariak = '
, iLuzJokalariak:
3
,
'iZbk = '
:
12
, iZbk:
3
);
if
ardJokalariak[iZbk].boHartuta
then
writeln
(
'JOKALARI HAU HARTUTA DAGO, ERREPIKATU!'
:
42
)
else
writeln
;
until
(
not
ardJokalariak[iZbk].boHartuta);
iLuzNireTaldea := iLuzNireTaldea +
1
;
ardNireTaldea[iLuzNireTaldea].sIzena := ardJokalariak[iZbk].sIzena;
ardNireTaldea[iLuzNireTaldea].sTokia := ardJokalariak[iZbk].sTokia;
ardNireTaldea[iLuzNireTaldea].boHartuta :=
TRUE
;
ardJokalariak[iZbk].boHartuta :=
TRUE
;
END
;
end
;
procedure
JokalariaBilatu( sFitxIzen:tsKate199;
sJokalaria:tsKate25;
VAR
RDKROMOBAT:trdKromoa);
var
f_B : tfrdBilduma;
boAurkitua:
boolean
;
begin
assign(f_B, sFitxIzen);
reset(f_B);
boAurkitua :=
FALSE
;
WHILE
NOT
boAurkitua
AND
NOT
eof(f_B)
DO
BEGIN
READ(f_B, rdKromoBat);
if
upcase(rdKromoBat
.
sIzena) = upcase(sJokalaria)
then
boAurkitua :=
TRUE
END
;
if
not
boAurkitua
then
rdKromoBat
.
iZenbakia := -
1
;
close(f_B);
end
;
procedure
TaulaBezalaErakutsi(
const
rdKromoBat:trdKromoa);
begin
with
rdKromoBat, rdBalioak
do
begin
WRITE
(iZenbakia:
6
);
WRITE
(sIzena:
17
);
WRITE
(sTokia:
15
);
WRITE
(sTaldea:
12
);
WRITE
(iDefentsan:
6
, iKontrolean:
6
, iErasoan:
6
, iGuztira:
7
);
writeln
;
end
;
end
;
function
fniPuntuakKalkulatu( sFitxIzen: tsKate199;
const
ardNireTaldea: tardNireTaldea):
integer
;
var
rdKromoBat: trdKromoa;
iKont :
integer
;
iMetatua :
integer
;
begin
IMETATUA :=
0
;
writeln
(
'ZBK.'
:
7
,
'IZENA'
:
16
,
'TOKIA'
:
15
,
'TALDEA'
:
12
,
'DEF.'
:
7
,
'KON.'
:
6
,
'ERA.'
:
6
,
'GUZT.'
:
7
);
writeln
(
'--------------------------------------------------------------------------'
:
76
);
for
iKont:=
1
to
11
do
begin
JokalariaBilatu(sFitxIzen, ardNireTaldea[iKont].sIzena, rdKromoBat);
TaulaBezalaErakutsi(rdKromoBat);
IMETATUA := IMETATUA + rdKromoBat
.
rdBalioak
.
iGuztira;
end
;
writeln
(
'--------------------------------------------------------------------------'
:
76
);
FNIPUNTUAKKALKULATU := IMETATUA;
end
;
var
sFitxIzen : tsKate199;
ardAtezainak : tardJokalariak;
ardAtzelariak : tardJokalariak;
ardErdilariak : tardJokalariak;
ardAurrelariak : tardJokalariak;
iLuzAtezainak :
integer
;
iLuzAtzelariak :
integer
;
iLuzErdilariak :
integer
;
iLuzAurrelariak :
integer
;
cAukera :
char
;
iNireAtzelariak :
integer
;
iNireErdilariak :
integer
;
iNireAurrelariak:
integer
;
ardNireTaldea : tardNireTaldea;
iLuzNireTaldea :
integer
;
iPuntuak :
integer
;
begin
clrscr;
write
(
'Fitxategiaren izena eman ("KROMOAK.DAT" edo "JOKALARIAK.DAT"): '
);
readln(sFitxIzen);
if
not
fileexists(sFitxIzen)
then
writeln
(
'ERROREA!!! "'
, sFitxIzen,
'" izeneko fitxategirik ez da'
)
else
begin
writeln
;
writeln
;
writeln
(
'1. URRATSA: LAU ARRAYAK BETE'
);
writeln
(
'============================'
);
writeln
;
FitxategikoDatuBatzukArrayBatera(sFitxIzen,
'Atezaina'
, ardAtezainak, iLuzAtezainak);
FitxategikoDatuBatzukArrayBatera(sFitxIzen,
'Atzelaria'
, ardAtzelariak, iLuzAtzelariak);
FitxategikoDatuBatzukArrayBatera(sFitxIzen,
'Erdilaria'
, ardErdilariak, iLuzErdilariak);
FitxategikoDatuBatzukArrayBatera(sFitxIzen,
'Aurrelaria'
, ardAurrelariak, iLuzAurrelariak);
writeln
;
writeln
(
'2. URRATSA: TALDEAREN KONFIGURAZIOA ERABAKIZ TALDEA OSA DAITEKEEN FROGATU'
);
writeln
(
'========================================================================='
);
writeln
;
writeln
(
'Zure taldeak zer estrategia erabiliko du? Konfigurazioa bat hautatu'
);
cAukera := fncKonfigurazioaHautatu;
case
cAukera
of
'A'
:
begin
iNireAtzelariak :=
4
;
iNireErdilariak :=
4
;
iNireAurrelariak :=
2
;
end
;
'B'
:
begin
iNireAtzelariak :=
4
;
iNireErdilariak :=
5
;
iNireAurrelariak :=
1
;
end
;
'C'
:
begin
iNireAtzelariak :=
4
;
iNireErdilariak :=
3
;
iNireAurrelariak :=
3
;
end
;
'D'
:
begin
iNireAtzelariak :=
3
;
iNireErdilariak :=
4
;
iNireAurrelariak :=
3
;
end
;
end
;
if
(iLuzAtezainak >=
1
)
and
(iLuzAtzelariak >= iNireAtzelariak)
and
(iLuzErdilariak >= iNireErdilariak)
and
(iLuzAurrelariak >= iNireAurrelariak)
then
begin
writeln
;
writeln
;
writeln
(
'3. URRATSA: TALDEA OSATU'
);
writeln
(
'========================'
);
iLuzNireTaldea :=
0
;
writeln
(
'------------------------------------------'
);
JokalariakAukeratu(ardAtezainak, iLuzAtezainak, ardNireTaldea, iLuzNireTaldea,
1
);
writeln
(
'------------------------------------------'
);
JokalariakAukeratu(ardAtzelariak, iLuzAtzelariak, ardNireTaldea, iLuzNireTaldea, iNireAtzelariak);
writeln
(
'------------------------------------------'
);
JokalariakAukeratu(ardErdilariak, iLuzErdilariak, ardNireTaldea, iLuzNireTaldea, iNireErdilariak);
writeln
(
'------------------------------------------'
);
JokalariakAukeratu(ardAurrelariak, iLuzAurrelariak, ardNireTaldea, iLuzNireTaldea, iNireAurrelariak);
writeln
(
'------------------------------------------'
);
writeln
;
writeln
(
'Aukeratu den '
, iNireAtzelariak,
'-'
, iNireErdilariak,
'-'
, iNireAurrelariak,
' konfigurazioa duen taldea hau da:'
);
writeln
;
TaldeaIkusi(ardNireTaldea);
writeln
;
writeln
(
'4. URRATSA: TALDEAREN DATU GUZTIAK ERAKUTSI ETA BALIOA ZENBATU'
);
writeln
(
'=============================================================='
);
writeln
;
iPuntuak := fniPuntuakKalkulatu(sFitxIzen, ardNireTaldea);
writeln
;
writeln
(
'Nere taldearen balioa: '
, iPuntuak,
' puntu'
);
writeln
;
end
else
writeln
(
'Eskatu duzun '
, iNireAtzelariak,
'-'
, iNireErdilariak,
'-'
, iNireAurrelariak,
' konfigurazioko talderik ezin daiteke osatu!!!'
);
end
;
writeln
;
writeln
;
writeln
;
writeln
(
'-------------------------'
);
writeln
(
'Programa bukatzera doa!!!'
);
writeln
(
'-------------------------'
);
readln;
end
.