2024(e)ko martxoaren 11(a), astelehena

8. astea | akronimoak


 

Programaren kodea:

{ -----------------------------------------------------------------
  Akronimoak1.pas:
         Gaia: Karaktere-kateak
         Deskribapena: Esaldiaren akronimoak lortu
 ------------------------------------------------------------------ }
program Akronimoak_sarrera_kontrolaturik_eta_hitzak_bakandu_gabe;

uses
   crt;

type
   tKateLuze = string[99];

{ FUNTZIOA: fnboTestuaEgokiaDa, funtzioaren emaitza balio boolearra da
  SARRERA PARAMETROAK: kate bat
  IRTEERA PARAMETROAK:
  ATAZA: sartutako kate horrek gehiegizko zuriunerik ez daukala aztertu }
function fnboTestuaEgokiaDa(sKatea: tKateLuze): boolean ;
begin
   fnboTestuaEgokiaDa := TRUE;
   if sKatea[1]=' ' then
   begin
      fnboTestuaEgokiaDa := FALSE;
      writeln('Testuaren lehen karakterea ezin daiteke izan zuriunea.');
   end;
   if sKatea[length(sKatea)]=' ' then
   begin
      fnboTestuaEgokiaDa := FALSE;
      writeln('Testuaren azken karakterea ezin daiteke izan zuriunea.');
   end;
   if (sKatea[1]<>' ') and (sKatea[length(sKatea)]<>' ') then
   begin
      if pos('  ', sKatea) <> 0 then
      begin
         fnboTestuaEgokiaDa := FALSE;
         writeln('Testuaren hasiera eta bukaera ondo daude, baina esaldi hori');
         writeln('okerra da bi hitzen artean zuriune bakarra onartzen delako.');
      end;
   end;
end;


{ FUNTZIOA: fnsAkronimoakLortu, funtzioaren emaitza karaktere-katea da
  SARRERA PARAMETROAK: kate bat
  IRTEERA PARAMETROAK:
  ATAZA: Sartutako kate hori mozten joan eta iterazio bakoitzeko lehen letra hartu }
function fnsAkronimoakLortu(sEsaldia: tKateLuze): tKateLuze;
var
   sEmaitza: tKateLuze;
   iZuriuneaNon: integer;
begin
   { sarrera letra larritan jarriko dugu }
   sEsaldia := upcase(sEsaldia);
   
   { emaitza izango den katea hasieratu, datuaren lehen karakterea eta puntua }
   sEmaitza := sEsaldia[1] + '.';
   writeln('sEmaitza dagoeneko >>>', sEmaitza, '<<<');
   writeln;
   repeat
      iZuriuneaNon := pos(' ', sEsaldia);
      writeln('iZuriuneaNon = ', iZuriuneaNon);
      { katea moztu hurrengo hitzaren hasiera lortzeko }
      delete(sEsaldia, 1, iZuriuneaNon) ;
      writeln('sEsaldia moztu ondoren >>>', sEsaldia, '<<<');
      
      {emaitza izango den kateari akronimo berria eta puntua gehitu}
      sEmaitza := sEmaitza + sEsaldia[1] + '.';
      writeln('sEmaitza dagoeneko >>>', sEmaitza, '<<<');
      writeln;
   until iZuriuneaNon = 0 ;
      
   { repeat-until baldintza dela eta, azkeneko akronimoa bikoiztuta
     geratzen delako azkeneko bi karakterak ezabatu beharko ditugu,
     hau da, azken akronimoa eta bere puntua kendu beharko ditugu.  }
   writeln('Azken bi karaktereak soberan daude eta kenduko ditugu!');
   delete(sEmaitza, length(sEmaitza)-2, 2); 
   writeln;
    
   fnsAkronimoakLortu := sEmaitza;
end;


{ --------------------------PROGRAMA NAGUSIA----------------------------------- }
var
   sKatea, sEmaitza: tKateLuze;
   cAukera: char;
begin
   writeln('Esaldi baten akronimoak lortzeko programa, esaldi horren hasieran eta bukaeran');
   writeln('zuriunerik ez dago, esaldiaren hitzen arteko banatzailea zuriune bakarra da.');
   
   { Prozesaketa errepikatzen da erabiltzailea kontrakoa erabaki arte }
   repeat
      repeat
         writeln;
         writeln('Sar ezazu sarrerako testua (hitzen artean zuriune bakarra):');
         readln(sKatea);
      until fnboTestuaEgokiaDa(sKatea);
      
      writeln;
      sEmaitza := fnsAkronimoakLortu(sKatea);
            
      writeln(sKatea, '===>', sEmaitza);
      writeln;
         
      { Hurrengo exekuzioa prestatzen dugu eta erantzuna E izanez gero amaitu egiten da }
      write('Beste testu bat aztertu nahi duzu: (B ala E): ');
      { Erantzuna B ala E dela ziurtatzen dugu }
      repeat
         cAukera := upcase(readkey);
      until (cAukera = 'B') or (cAukera = 'E');
      clrscr;
   until cAukera = 'E';
end. { PROGRAMAren amaiera }
 

iruzkinik ez:

Argitaratu iruzkina

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