2024(e)ko apirilaren 10(a), asteazkena

12. ASTEA | etxerako lana

 12. astea (2024/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
  • Ondoko hau urrunago dago: Proiektua amaiturik (2024) zereginaren bitartez zuen proiektua entregatu, hots, menuaren J eta K aukerak programatu (Entregatze-data: 2024ko maiatzaren 1ean, 23:59tan, astelehena)

iruzkinik ez:

Argitaratu iruzkina

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