12. astea (2023/04/17) etxean egitekoa
- Dagoeneko zuen izenak eta abizenak idatzi dituzue Proiektuaren taldekideak artikuluan aipatzen den taulan, norbait falta bada edo zeozer zuzendu behar bada e-posta bat idatz egidazue
- 12. ASTEA | laborategi/mintegian egin dena zuk zeuk etxean, zure ordenagailuan, errepika ezazu. Fitxategiaren ariketa hau izan da:
program ErregistroenFitxategiaSortuEtaIkusi;
const
sBIDEA = 'C:\NereKarpeta\';
type
tsKate249 = string[249]; { fitxategiaren izena luzea izan daitekeelako }
tsKate15 = string[15];
trdIkaslea = record
sNor: tsKate15;
rNota: real;
end;
tfrdIkasleak = file of trdIkaslea;
{ sFitxIzen katea ezaguna da programa nagusian eta prozedura honetan }
{ izena ez da aldatuko, horregatik sarrerako parametroa da prozeduran }
procedure FitxategiaSortuEtaBete(sFitxIzen: tsKate249);
var
f: tfrdIkasleak;
rdElem: trdIkaslea;
iKont: integer;
iZenbat: integer;
begin
assign(f, sFitxIzen); { fitxategia uztartu }
rewrite(f); { fitxategia sortu eta existitzekotan datuz hustu }
repeat
write('Zenbat ikasle dira? ');
readln(iZenbat);
until iZenbat > 0;
for iKont:=1 to iZenbat do
begin
write(iKont:10, '. ikaslearen izena eman: ');
readln(rdElem.sNor); { erregistroaren eremu bat teklatuz irakurri }
write(iKont:10, '. ikaslearen nota eman: ');
readln(rdElem.rNota); { erregistroaren eremu bat teklatuz irakurri }
write(f, rdElem); { elementu bat (erregistro bat) fitxategia idatzi }
end;
close(f); { fitxategia itxi }
end;
{ sFitxIzen katea ezaguna da programa nagusian eta prozedura honetan }
{ izena ez da aldatuko, horregatik sarrerako parametroa da prozeduran }
procedure FitxategiaIkusi(sFitxIzen: tsKate249);
var
f: tfrdIkasleak;
rdElem: trdIkaslea;
begin
assign(f, sFitxIzen); { fitxategia uztartu }
reset(f); { fitxategia existitzen bada ireki }
while not eof(f) do { fitxategiaren bukaeran ez gauden bitartean... }
begin
read(f, rdElem); { elementu bat (erregistro bat) fitxategitik irakurri }
{ erregistroaren eremu banaren edukia pantailaratu }
writeln(filepos(f):10, '. ikaslearen izena: ', rdElem.sNor);
writeln(filepos(f):10, '. ikaslearen nota: ', rdElem.rNota:0:2);
end;
close(f);
end;
{ sFitxIzen katea ezaguna da programa nagusian eta prozedura honetan }
{ izena ez da aldatuko, horregatik sarrerako parametroa da prozeduran }
function fnMediaKalkulatu(sFitxIzen: tsKate249): real;
var
f: tfrdIkasleak;
rdElem: trdIkaslea;
rMetatua: real;
begin
assign(f, sFitxIzen); { fitxategia uztartu }
reset(f); { fitxategia existitzen bada ireki }
rMetatua := 0.0;
while not eof(f) do { fitxategiaren bukaeran ez gauden bitartean... }
begin
read(f, rdElem); { elementu bat (erregistro bat) fitxategitik irakurri }
{ nota bat gehiago pilatu rMetatua batukarian }
rMetatua := rMetatua + rdElem.rNota;
end;
fnMediaKalkulatu := rMetatua / filesize(f);
close(f);
end;
{ Hiru fitxategien izenak ezagunak direlako programa nagusian eta }
{ prozedura honetan aldatzen ez direlako sarrerako parametroak dira }
procedure BiFitxategiBerriSortu( sFitxIzen: tsKate249;
sFitxIzenAprob: tsKate249;
sFitxIzenSuspn: tsKate249);
var
f, f_A, f_S: tfrdIkasleak;
rdElem: trdIkaslea;
begin
assign(f, sFitxIzen);
reset(f);
assign(f_A, sFitxIzenAprob);
rewrite(f_A);
assign(f_S, sFitxIzenSuspn);
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 eta programa nagusiko aldagaiak=============}
var
sFitxIzen: tsKate249;
rBBA: real;
sFitxIzenAprob: tsKate249;
sFitxIzenSuspn: tsKate249;
begin
writeln;
write('Eman fitxategiaren izena, adibidez (31Taldea): ');
readln(sFitxIzen);
//sFitxIzen := sBIDEA + sFitxIzen + '.dat'; (* edo hurrengoa *)
sFitxIzen := concat(sBIDEA, sFitxIzen, '.dat'); (* edo aurrekoa *)
writeln('==>', sFitxIzen, '<== bidea eta luzapena programak gehituta');
writeln;
writeln('Fitxategiaren datuak jasotzen...');
FitxategiaSortuEtaBete(sFitxIzen);
writeln;
writeln('Fitxategi osoaren datuak:');
FitxategiaIkusi(sFitxIzen);
writeln;
rBBA := fnMediaKalkulatu(sFitxIzen);
write('Nota guztien batezbesteko aritmetikoa: ', rBBA:0:2, ' puntu');
writeln;
sFitxIzenAprob:= sBIDEA + 'Aprobatuak.dat';
sFitxIzenSuspn:= sBIDEA + 'Suspendituak.dat';
BiFitxategiBerriSortu(sFitxIzen, sFitxIzenAprob, sFitxIzenSuspn);
writeln;
writeln('Aprobatuen datuak:');
FitxategiaIkusi(sFitxIzenAprob);
writeln;
writeln('Suspendituen datuak:');
FitxategiaIkusi(sFitxIzenSuspn);
writeln;
writeln('=======================');
writeln('RETURN sakatu amaitzeko');
write ('=======================');
readln;
end.
- 12. ASTEA | laborategi/mintegian egin denaren haritik. Erregistroen fitxategi bat daukagula (bi eremu: sNor katea eta rNota zenbakia) ondoko hiru lan hauek laster burutu ahalko dituzu:
- Ikasle baten izena teklatuz eman eta bilatu; ikaslea aurkitu ondoren bere nota aldatu, nota berria nota guztien batezbesteko aritmetikoa izan dadin
- Nota maximoa eta nota minimoa zehaztu; nota maximoa eta nota minimoa elkar trukatu
- Bi fitxategi sortu: batezbestekoaren gainetik daudenen fitxategia eta batezbestekoaren azpitik daudenen fitxategia
- Proiektua: hobekuntzak aitortu (2023) zereginaren bitartez zuen proiektuaren menuak izango duen 9. aukera proposatu (Entregatze-data: 2023ko apirilaren 22an, 23:59tan, larunbata)
- Ondoko hau urrunago dago: Proiektua amaiturik (2023) zereginaren bitartez zuen proiektua entregatu, hots, menuaren 8. eta 9. aukerak programatu (Entregatze-data: 2023ko maiatzaren 1ean, 23:59tan, astelehena)
iruzkinik ez:
Argitaratu iruzkina