14. astea (2023/05/02) laborategi/mintegian egindakoa
- Zerrenda pasatzeko, eGela zerbitzuko 14. saioan egindako programak bidalketaren bitartez. Lanik bidali ez dutenak:
- Danel Agirre Olaeta
- Izaro Barañano Arrizabalaga
- Xabier Garay Berganza
- Jon González Belategui
- Gaizka Martin Zorrozua
- Maider Nogueira Alonso
- Asier Ochoa Espiña
- Izaro Prieto Sarria
- Antxon Zubiaurre Peñalba
- Datu-fitxategi bat eta berari dagokion programa:
- 13. astea | fitxategi bat bitan banatu ariketan hasierako fitxategiaren existentzia aztertzen da. Ariketa horren aldaera bat egin dugu: erregistroen fitxategi bat (bi eremu: sNor katea eta rNota zenbakia). Hona hemen egindako programaren abiapuntua:
program FitxategiBatBitanBanatu_EMATEKOA;
uses
crt;
const
iLUZERA = 30;
sBIDEA = 'C:\NireDatuak\';
type
tsKate49 = string[49];
tasIzenenZerrenda = array [1..iLUZERA] of tsKate49;
tsKate200 = string[200];
const
asZERRENDA: tasIzenenZerrenda = ('AGIRRE ROMERO, UNAI', // 01
'ANGULEMA CARAZO, JON ANDER', // 02
'BIKARREGI IGLESIAS, JULEN', // 03
'CANO RUIZ DE HEREDIA, JULIAN', // 04
'CORRAL EGIA, JOSEBA ANDONI', // 05
'DIAZ DE ULZURRUN ROY, LEONOR', // 06
'EGIGUREN MARKINEZ, IRUNE', // 07
'ERKIAGA ANDONEGI, IKER', // 08
'FERNANDEZ FEITO, FELIX', // 09
'GARTZIA DE ALZA GIL, KATALIN', // 10
'HERRANZ MARTINEZ, REBECA', // 11
'IRAGORRI COTANO, KIMETZ', // 12
'JOMA GABILONDO, ASIER', // 13
'KRUGER GARAI, LUDWING', // 14
'LANDA ASTORQUIZA, UNAI', // 15
'LANDAIDA MORENO, XABIER', // 16
'LIBARRENX BOLLAR, IZAR', // 17
'MADARI TOXO, MARIA DEL CARMEN', // 18
'MARTINEZ DE LA CRUZ, IMANOL', // 19
'NARBAIZA ARIZTONDO, MARKEL', // 20
'OSORIO ORTIZ, OLATZ', // 21
'PARIS ECHEVARRIA, AITOR', // 22
'QUINTAS ESCOBAR, AINHOA', // 23
'RADA BARANDIKA, TEODORO', // 24
'SAN JOAN GOIRI, JULIA AUGUSTA', // 25
'SEGUROLA LOPEZ DE MUNAIN, ANE', // 26
'TAPIA FERNANDEZ, ENDIKA', // 27
'URIOSTE ALZAGA, ENEKO', // 28
'VICINAY URCELAY, ELOY', // 29
'ZUATZU ZALAKAIN, ZIGOR'); // 30
type
trdFitxa = record
sNor: tsKate49;
rNota: real;
end;
tfrdFitxategia = file of trdFitxa;
procedure DatuakErakutsi(const rdElem: trdFitxa);
begin
writeln('Ikaslearen izena: ':24, rdElem.sNor);
writeln('Ikaslearen nota: ':24, rdElem.rNota:0:1);
writeln;
end;
procedure FitxategiaIkusi(sFitxIzen: tsKate200);
var
rdElem: trdFitxa;
f: tfrdFitxategia;
begin
assign(f, sFitxIzen);
reset(f);
close(f);
end;
function fnsIzenaLortu(sIzenDeiturak: tsKate49): tsKate49;
var
sIzena: tsKate49;
iKomaNon: integer;
begin
fnsIzenaLortu := sIzena;
end;
procedure DatuakJaso(var rdElem: trdFitxa; iKont: integer);
var
iHamarreko, iUnitate: integer;
begin
rdElem.sNor := fnsIzenaLortu(asZERRENDA[iKont]);
iHamarreko := random(10); // 0 eta 9 artekoa
iUnitate := random(10); // 0 eta 9 artekoa
rdElem.rNota := iUnitate + 0.1*iHamarreko;
end;
procedure FitxategiaSortuEtaSekuentzialkiBete(sFitxIzen: tsKate200);
var
rdElem: trdFitxa;
f: tfrdFitxategia;
iKopurua, k: integer;
begin
assign(f, sFitxIzen);
rewrite(f);
randomize;
iKopurua := random(iLUZERA)+1;
writeln('iKopurua = ', iKopurua);
readln;
for k:=1 to iKopurua do
begin
DatuakJaso(rdElem, k);
write(f, rdElem);
end;
close(f);
end;
procedure FitxategiaBanatu(sFitxIzen, sAprobatuak, sSuspendituak: tsKate200);
var
rdElem: trdFitxa;
f, f_A, f_S: tfrdFitxategia;
begin
assign(f, sFitxIzen);
reset(f);
assign(f_A, sAprobatuak);
rewrite(f_A);
assign(f_S, sSuspendituak);
rewrite(f_S);
close(f);
close(f_A);
close(f_S);
end;
(* ----------------------------programa nagusia---------------------------- *)
var
sFitxIzen, sAprobatuak, sSuspendituak: tsKate200;
begin
clrscr;
writeln;
writeln;
write('Datuen fitxategiaren izena eman (adibidez "Ikasleak"): ');
readln(sFitxIzen);
sFitxIzen := sBIDEA + sFitxIzen + '.dat';
writeln('sFitxIzen |||', sFitxIzen, '|||');
FitxategiaSortuEtaSekuentzialkiBete(sFitxIzen);
writeln('---Denak----------------------------------');
FitxategiaIkusi(sFitxIzen);
writeln;
writeln;
sAprobatuak := sBIDEA + 'Aprobatuak.dat';
sSuspendituak := sBIDEA + 'Suspendituak.dat';
FitxategiaBanatu(sFitxIzen, sAprobatuak, sSuspendituak);
writeln('---Aprobatuak-----------------------------');
FitxategiaIkusi(sAprobatuak);
writeln;
writeln;
writeln('---Suspendituak---------------------------');
FitxategiaIkusi(sSuspendituak);
writeln;
writeln;
writeln;
writeln('=======================');
writeln('RETURN sakatu amaitzeko');
writeln('=======================');
readln;
end.
Aurreko FitxategiBatBitanBanatu.pas programa osaturik: