14. astea (2023/04/27) laborategi/mintegian egindakoa | [P0B9I] laborategian
- Zerrenda ez dugu pasatu tutoretza bat izan delako. Egindakoa eGela zerbitzuko 14. saioan egindako programak bidalketaren bitartez jarraituko du etxean ikasleak
- Proiektuaren 9. aukeraren adibide hau egin dugu (egindakoa eGela zerbitzuko foroan aurki dezakezu gaurko aktarekin batera 31azp3_13eta14asteak.zip izenarekin):
- Bilaketa, elementu baten sLiburuKodea teklatuz eman eta bilatu dugu funtzio bati esker, funtzioak bilatu nahi den elementuaren posizioa itzultzen du
- Ezabaketa, posizio jakin bateko elementua fitxategitik kentzeko array laguntzaile bat edo beste fitxategi laguntzaile bat beharko da (posizioa aurreko bilaketaren emaitza izan daiteke edo hurrengo urratseko teklatuaren bitartez egindako irakurketa)
- Posizioa, elementu baten posizioa fitxategian teklatuz eman eta fitxategiaren posizio horretan elementu berri bat txertatu
- Txertaketa, fitxategiaren posizio jakin batean elementu berri bat sartzeko array laguntzaile bat edo beste fitxategi laguntzaile bat beharko da
- Hau ez dugu egin teoriako ikasgelan ikusiko dugu. 13. astea | fitxategi bat bitan banatu ariketaren aldaera bat egin dugu: erregistroen fitxategi bat (bi eremu: sNor katea eta rNota zenbakia). Hona hemen egindako programa:
program FitxategiBatBitanBanatu;
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;
k: integer;
begin
assign(f, sFitxIzen);
reset(f);
k := 0;
while not eof(f) do
begin
read(f, rdElem);
k := k+1 ;
writeln(k:4,'. ikaslea');
DatuakErakutsi(rdElem);
end;
close(f);
end ;
function fnsIzenaLortu(sIzenDeiturak: tsKate49): tsKate49;
var
sIzena: tsKate49;
iKomaNon: integer;
begin
iKomaNon := pos(',', sIzenDeiturak);
sIzena := copy(sIzenDeiturak, iKomaNon+2, length(sIzenDeiturak)-(iKomaNon+1));
//writeln('sIzena >>>', sIzena, '<<<');
fnsIzenaLortu := sIzena;
end;
procedure DatuakJaso(var rdElem: trdFitxa);
var
iZbk: integer;
iHamarreko, iUnitate: integer;
begin
iZbk:= random(iLUZERA)+1;
rdElem.sNor := fnsIzenaLortu(asZERRENDA[iZbk]) ;
iHamarreko := random(9);
iUnitate := random(9);
rdElem.rNota := iUnitate + 0.1*iHamarreko;
end;
procedure FitxategiaSortuEtaDatuzBete(sFitxIzen: tsKate200);
var
rdElem: trdFitxa;
f: tfrdFitxategia;
iKopurua, k: integer;
begin
assign(f, sFitxIzen);
rewrite(f);
randomize;
iKopurua := random(20)+1;
writeln('iKopurua = ', iKopurua);
readln;
for k:=1 to iKopurua do
begin
DatuakJaso(rdElem);
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);
while not eof(f) do
begin
read(f, rdElem);
if rdElem.rNota >= 5.0 then
write(f_A, rdElem)
else
write(f_S, rdElem);
end;
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, '<<<<<<');
FitxategiaSortuEtaDatuzBete(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.
- 13. astea | fitxategi bat bitan banatu ariketa aztertu dugu ere, kasu honetan zenbakien fitxategi batetik abiatzen da beste bi fitxategi berri eskuratzeko. Eta kasu honetan hasierako fitxategiaren existentzia aztertzen da
- Bilaketa ariketa: Fitxategi baten elementua beste fitxategi batean bilatu ondoren bere informazio guztia pantailaratu dugu
iruzkinik ez:
Argitaratu iruzkina