program
Aste_14__ErregistroenFitxategiarekinLanean;
uses
crt,
sysutils;
type
tsKate199 =
string
[
199
];
tsKate12 =
string
[
12
];
trdIkasle =
record
sIzena: tsKate12;
rNota:
real
;
iKontrola:
integer
;
end
;
tfrdIkasgela =
file
of
trdIkasle;
procedure
FitxategiaSortuEtaBete(sFitxIzen: tsKate199);
var
f: tfrdIkasgela;
rdElem: trdIkasle;
iZenbat:
integer
;
iKont:
integer
;
iZeinKontrol:
integer
;
begin
assign(f, sFitxIzen);
rewrite(f);
repeat
write
(
'Zenbat ikasleren datuak gordeko dira? '
);
readln(iZenbat);
until
iZenbat >
0
;
repeat
write
(
'Zein kontrol da? (1 ala 2) '
);
readln(iZeinKontrol);
until
(iZeinKontrol =
1
)
or
(iZeinKontrol =
2
);
for
iKont:=
1
to
iZenbat
do
begin
write
(iKont:
10
,
'. ikaslearen izena: '
);
readln(rdElem
.
sIzena);
rdElem
.
sIzena := upcase(rdElem
.
sIzena);
repeat
write
(iKont:
10
,
'. ikaslearen nota: '
);
readln(rdElem
.
rNota);
until
(rdElem
.
rNota >=
0.0
)
and
(rdElem
.
rNota <=
10.0
);
rdElem
.
iKontrola := iZeinKontrol;
write
(f, rdElem);
end
;
close(f);
end
;
procedure
FitxategiarenEdukiaIkusi(sFitxIzen: tsKate199);
var
f: tfrdIkasgela;
rdElem: trdIkasle;
begin
assign(f, sFitxIzen);
reset(f);
writeln
(
'IZENA'
:
34
,
'NOTA'
:
18
,
'KONTROLA'
:
18
);
writeln
(
'-----'
:
34
,
'----'
:
18
,
'--------'
:
18
);
while
not
eof(f)
do
begin
read(f, rdElem);
writeln
(filepos(f):
5
,
'. ikaslea: '
, rdElem
.
sIzena:
18
, rdElem
.
rNota:
18
:
2
, rdElem
.
iKontrola:
18
);
end
;
close(f);
end
;
procedure
Batu(sFitxIzen_1eta2,
sFitxIzen_1,
sFitxIzen_2: tsKate199);
var
f_1eta2: tfrdIkasgela;
f_1: tfrdIkasgela;
f_2: tfrdIkasgela;
rdElem: trdIkasle;
begin
assign(f_1, sFitxIzen_1);
reset(f_1);
assign(f_2, sFitxIzen_2);
reset(f_2);
assign(f_1eta2, sFitxIzen_1eta2);
rewrite(f_1eta2);
while
not
eof(f_1)
do
begin
read(f_1, rdElem);
write
(f_1eta2, rdElem);
end
;
while
not
eof(f_2)
do
begin
read(f_2, rdElem);
write
(f_1eta2, rdElem);
end
;
close(f_1);
close(f_2);
close(f_1eta2);
end
;
procedure
Banatu(sFitxIzen_1eta2,
sFitxIzen_Aprob,
sFitxIzen_Suspn: tsKate199);
var
f_1eta2: tfrdIkasgela;
f_A: tfrdIkasgela;
f_S: tfrdIkasgela;
rdElem: trdIkasle;
begin
assign(f_1eta2, sFitxIzen_1eta2);
reset(f_1eta2);
assign(f_A, sFitxIzen_Aprob);
rewrite(f_A);
assign(f_S, sFitxIzen_Suspn);
rewrite(f_S);
while
not
eof(f_1eta2)
do
begin
read(f_1eta2, rdElem);
if
rdElem
.
rNota >=
5.0
then
write
(f_A, rdElem)
else
write
(f_S, rdElem);
end
;
close(f_1eta2);
close(f_A);
close(f_S);
end
;
function
fniBilatu(sFitxIzen_1eta2: tsKate199;
sNor: tsKate12;
iZeinKontrol:
integer
):
integer
;
var
f: tfrdIkasgela;
rdElem: trdIkasle;
boAurkitua:
boolean
;
begin
assign(f, sFitxIzen_1eta2);
reset(f);
boAurkitua :=
FALSE
;
while
not
eof(f)
and
not
boAurkitua
do
begin
read(f, rdElem);
if
(rdElem
.
sIzena = sNor)
and
(rdElem
.
iKontrola = iZeinKontrol)
then
boAurkitua :=
TRUE
;
end
;
if
boAurkitua
then
fniBilatu := filepos(f) -
1
else
fniBilatu := -
1
;
close(f);
end
;
procedure
Aldatu(sFitxIzen_1eta2: tsKate199;
iNonDago:
integer
);
var
f: tfrdIkasgela;
rdElem: trdIkasle;
begin
assign(f, sFitxIzen_1eta2);
reset(f);
seek(f, iNonDago);
read(f, rdElem);
repeat
write
(
'"'
, rdElem
.
sIzena,
'" ikaslearen nota berria: '
);
readln(rdElem
.
rNota);
until
(rdElem
.
rNota >=
0.0
)
and
(rdElem
.
rNota <=
10.0
);
seek(f, iNonDago);
write
(f, rdElem);
close(f);
end
;
procedure
Gehitu(sFitxIzen_1eta2: tsKate199;
const
rdBerria: trdIkasle);
var
f: tfrdIkasgela;
begin
assign(f, sFitxIzen_1eta2);
reset(f);
seek(f, filesize(f));
write
(f, rdBerria);
close(f);
end
;
var
sFitxIzen: tsKate199;
sFitxIzen_1: tsKate199;
sFitxIzen_2: tsKate199;
sFitxIzen_1eta2: tsKate199;
sFitxIzen_Aprob: tsKate199;
sFitxIzen_Suspn: tsKate199;
sNor: tsKate12;
iZeinKontrol:
integer
;
iNonDago:
integer
;
rdBerria: trdIkasle;
BEGIN
clrscr;
writeln
(
'Eman ikasleen datuak gordeko dituen fitxategiaren'
);
write
(
'izena (adibidez, "NOTAK" edo "1_KONTROLA"): '
);
readln(sFitxIzen);
sFitxIzen :=
'C:\Users\Docencia\Desktop\Pascal\' + sFitxIzen + '
.DAT';
writeln
;
if
fileexists(sFitxIzen)
then
begin
writeln
(
'"'
, sFitxIzen,
'" badago, bere edukia erakutsi.'
);
FitxategiarenEdukiaIkusi(sFitxIzen);
writeln
;
end
else
begin
writeln
(
'"'
, sFitxIzen,
'" ez dago, sortu eta datuz bete.'
);
FitxategiaSortuEtaBete(sFitxIzen);
writeln
;
FitxategiarenEdukiaIkusi(sFitxIzen);
writeln
;
end
;
writeln
;
writeln
(
'==============================================================='
);
writeln
(
' HONAINO FITXATEGI BAT SORTU ETA BERE EDUKIA PANTAILARATU DA.'
);
writeln
(
' SORTU "1_KONTROLA" FITXATEGIA ETA "2 KONTROLA" FITXATEGIA.'
);
writeln
(
'==============================================================='
);
writeln
;
writeln
(
'==============================================================='
);
writeln
(
' HEMENDIK AURRERA BI FITXATEGIEN EDUKIA BAKARRERA EKARRIKO DA'
);
writeln
(
' ETA ALDERANTZIZ FITXATEGI BATEN EDUKIA BITAN BANATUKO DA.'
);
writeln
(
'==============================================================='
);
writeln
;
sFitxIzen_1 :=
'C:\Users\Docencia\Desktop\Pascal\1_KONTROLA.DAT'
;
sFitxIzen_2 :=
'C:\Users\Docencia\Desktop\Pascal\2_KONTROLA.DAT'
;
if
(fileexists(sFitxIzen_1))
and
(fileexists(sFitxIzen_2))
then
begin
sFitxIzen_1eta2 :=
'C:\Users\Docencia\Desktop\Pascal\1eta2_KONTROLA.DAT'
;
Batu(sFitxIzen_1eta2, sFitxIzen_1, sFitxIzen_2);
writeln
;
writeln
(
'"'
, sFitxIzen_1eta2,
'" fitxategiaren edukia: '
);
FitxategiarenEdukiaIkusi(sFitxIzen_1eta2);
writeln
;
writeln
(
'-------------------------------------------------------------'
);
writeln
;
write
(
'Nota aldatuko diogun ikaslearen izena eman: '
);
readln(sNor);
sNor := upcase(sNor);
repeat
write
(
'Zein kontroleko nota aldatuko diogu "'
, sNor,
'" ikasleari? '
);
readln(iZeinKontrol);
until
(iZeinKontrol =
1
)
or
(iZeinKontrol =
2
);
iNonDago := fniBilatu(sFitxIzen_1eta2, sNor, iZeinKontrol);
if
iNonDago = -
1
then
writeln
(
'"'
, sNor,
'" ikaslerik ez dago'
)
else
Aldatu(sFitxIzen_1eta2, iNonDago);
writeln
;
writeln
(
'-------------------------------------------------------------'
);
writeln
;
writeln
(
'-------------------------------------------------------------'
);
writeln
;
write
(
'Gehituko dugun ikaslearen izena eman: '
);
readln(rdBerria
.
sIzena);
rdBerria
.
sIzena := upcase(rdBerria
.
sIzena);
repeat
write
(
'Zein kontroleko datuak gehituko ditugu (1 ala 2) '
);
readln(rdBerria
.
iKontrola);
until
(rdBerria
.
iKontrola =
1
)
or
(rdBerria
.
iKontrola =
2
);
repeat
write
(
'"'
, rdBerria
.
sIzena,
'" ikaslearen nota berria: '
);
readln(rdBerria
.
rNota);
until
(rdBerria
.
rNota >=
0.0
)
and
(rdBerria
.
rNota <=
10.0
);
Gehitu(sFitxIzen_1eta2, rdBerria);
writeln
;
writeln
(
'-------------------------------------------------------------'
);
sFitxIzen_Aprob :=
'C:\Users\Docencia\Desktop\Pascal\APROBATUAK.DAT'
;
sFitxIzen_Suspn :=
'C:\Users\Docencia\Desktop\Pascal\SUSPENDITUAK.DAT'
;
Banatu(sFitxIzen_1eta2, sFitxIzen_Aprob, sFitxIzen_Suspn);
writeln
;
writeln
(
'"'
, sFitxIzen_Aprob,
'" fitxategiaren edukia: '
);
FitxategiarenEdukiaIkusi(sFitxIzen_Aprob);
writeln
;
writeln
(
'"'
, sFitxIzen_Suspn,
'" fitxategiaren edukia: '
);
FitxategiarenEdukiaIkusi(sFitxIzen_Suspn);
writeln
;
end
else
begin
writeln
(
'Bi fitxategietatik bat falta da (ala biak falta dira)'
);
end
;
writeln
;
writeln
;
writeln
(
'======================='
);
writeln
(
'RETURN sakatu amaitzeko'
);
write
(
'======================='
);
readln;
end
.