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.