2024(e)ko apirilaren 28(a), igandea

14. ASTEA | laborategi/mintegian egin dena

 14. astea (2024/04/29) laborategi/mintegian egindakoa | [P0B9I] laborategian


  • Zerrenda ez dugu pasatu tutoretza bat izan delako. Egindakoa eGela  bitartez jarraituko du etxean ikasleak


  • 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

Iruzkinen bat idazteko Google-ko kontu bat behar duzu. Iruzkin guztien moderazio-ardura blogeko administratzaileari dagokio.