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

8. astea | akronimoak


 

Programaren kodea:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
{ -----------------------------------------------------------------
  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.