Programaren kodea:
{ -----------------------------------------------------------------
Akronimoak1.pas:
Gaia: Karaktere-kateak
Deskribapena: Esaldiaren akronimoak lortu
------------------------------------------------------------------ }
program Akronimoak_hitzak_bakandu_gabe;
uses
crt;
type
tKateLuze = string[99];
{ FUNTZIOA: fnboTestuaEgokiaDa
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 bi hitzen artean zuriune bakarra onartzen da');
end;
end;
end;
{ FUNTZIOA: fnsAkronimoakLortu
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.');
writeln;
{ Prozesaketa errepikatzen da erabiltzailea kontrakoa erabaki arte }
repeat
repeat
writeln('Sar ezazu sarrerako testua (hitzen artean zuriune bakarra):');
readln(sKatea);
until fnboTestuaEgokiaDa(sKatea);
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