24. astea | haiku ariketan bezala gure programaren lehen bertsioan ez da diptongorik emango sarrerako esaldi nagusian, baina programaren bigarren bertsioak diptongoekin lan egiteko gaitasuna izango du.
Lehen programa
Udazkena da,
milaka txori hegaz
bat izan ezik
Aztertu beharreko haikua string batean jasorik daukagu eta sarrera horrek haikuaren formalismoa betetzen duen izango da programaren emaitza. Hau da, sarrerako kateak hiru esaldi izan behar ditu eta esaldi bakoitzean 5, 7 eta 5 silaba hurrenez hurren.
Adibidez, hona hemen haiku desberdinak nola eman zaizkion gure programari:
Udazkena da, milaka txori hegaz bat izan ezik |
5, 7, 5 bokal eta 5, 7, 5 silaba --> sarrerako katea haiku bat da
Udazkena da, XYZ milaka txori hegaz bat izan ezik |
5, 7, 5 bokal eta 5, 7, 5 silaba --> sarrerako katea haiku bat da
Bertan ikus daitekeenez, teklatuaren bitartez ematen den sarrerako datuaren ezaugarriak honako hauek dira:
- Diptongorik ez dagoela, eta ondorioz silabak zenbatzeko aski da bokalen kopurua ezagutzea
- Soberazko zuriuneak egon daitezke sarrerako kate nagusian, bai katearen aurretik zein atzetik zein hitzen artean
- Bokalik gabeko hitzak egon daitezke, adibidez XYZ hitza edo WMW hitza
- Sarrerako katea bat izanik, ez dago inolako banatzaile berezirik haikuaren hiru esaldien artean
Sarrerako karaktere-katea irakurrita ondoko lanak eskatzen dira algoritmo hau jarraituz:
- Sarrerako esaldi nagusia txukundu, hau da, esaldiaren aurrean zein atzean soberan egon daitezkeen zuriuneak kendu eta hitzen artean soberan egon daitezkeen zuriuneak kendu (adibidez fnsEsaldiaTxukundu funtzioaren bitartez)
- Txukundutako esaldi nagusia garbitu, hots, txukundutako esaldiari bokalik gabeko hitzak kendu (adibidez fnsEsaldiaGarbitu funtzioaren bitartez)
- Esaldi nagusiaren bokal kopurua 17 ez bada mezua eta programa bukatu, esaldi nagusiaren bokal kopurua 17 bada hurrengo puntuetan adierazitako egin
- DM_sKate50 datu-motako 3 kate biltzeko arrayarekin lan eginez, esaldi nagusiaren hitzak arrayaren dagozkien posizioetara eraman (jarraian datozen irudietan kolore larrosaz adierazitakoa). Beraz, txukundu eta garbitutako katetik abiatuta: lehen 5 silabak osatzen dituzten hitzak arrayaren 1. posizioan kokatu, hurrengo 7 silabak osatzen dituzten hitzak arrayaren 2. posizioan kokatu, eta, azkenengo 5 silabak osatzen dituzten hitzak arrayaren 3. posizioan kokatu:
- 4.1. Haikuaren lehenengo esaldia zehaztu (adibidez Haikuaren_1_Esaldia prozeduraren bitartez). Hainbat hitz eta guztien artean 5 bokal, errorerik ez badago lehenengo esaldi hori arrayaren lehen posizioan gorde. Errorea gertatu bada zein hitzetan suertatu den adierazi eta programa bukatu
- 4.2. Haikuaren bigarren esaldia zehaztu (adibidez Haikuaren_2_Esaldia prozeduraren bitartez). Hainbat hitz eta guztien artean 7 bokal, errorerik ez badago bigarren esaldi hori arrayaren bigarren posizioan gorde, eta, prozesatu gabe geratu den esaldiaren zatia haikuaren hirugarren esaldia denez hirugarren esaldi hori arrayaren hirugarren posizioan gorde. Errorea gertatu bada zein hitzetan suertatu den adierazi eta programa bukatu
- 4.3. Haikuaren esaldiak zehaztean errorerik ez bada gertatu, arrayaren edukia pantaialartu (adibidez HaikuaErakutsi prozeduraren bitartez) eta programa bukatu
Programaren irteerak jarraian erakusten dira:
Algoritmoaren 3. urratsa gogoratuz silabak/bokalak 19≠5+7+5 direnez, esaldi nagusia ez da haiku bat
Hurrengo hiru irteeretan esaldi nagusiaren silabak 17 dira guztira, baina beti ez da gordetzen 5+7+5 banaketa:
Sarrera haiku bat da eta arrayaren hiru elementuak bete daitezke, lehen bi elementuen silabak/bokalak 5+7=12 dira eta ondorioz hirugarren elementuaren silaba/bokal kopurua 5 izango da, guztira 5+7+5=17
Sarrera ez da haiku bat arrayaren 1. elementua ezin delako egoki bete 7 silaba baitira
Sarrera ez da haiku bat eta arrayaren 2. elementuak huts egiten duelako 5+8≠5+7
Hau duzu StringArrayHaikuDiptongorikEz.exe lehen bertsioaren programa exekutagarria. Eta hauxe da lehen bertsioaren iturburu-programa:
Bigarren programa
Udaberriko
euria da hodeien
negar alaia
Baina, diptongoak ditugunean bokalen kopurua ez dator bat silaben kopuruarekin. Horregatik jarraian erakusten diren haiku hauek okertzat emango ditu aurreko algoritmoa darabilen programak:
XYZ Neguko hotza goimendiko elurra, zure babesa |
5, 8, 5 bokal eta 5, 7, 5 silaba --> sarrerako katea haiku bat da
Ni zoraturik haizeak darabilzu XYZ adatsa dantzan |
5, 8, 5 bokal eta 5, 7, 5 silaba --> sarrerako katea haiku bat da
Haizearekin zure adatsa dantzan ni liluratuz |
6, 7, 5 bokal eta 5, 7, 5 silaba --> sarrerako katea haiku bat da
XYZ Inaurria beltz langilea ere beltz XYZ denak esklabu |
6, 7, 5 bokal eta 5, 7, 5 silaba --> sarrerako katea haiku bat da
Udaberriko XYZ euria da hodeien negar alaia XYZ |
5, 9, 6 bokal eta 5, 7, 5 silaba --> sarrerako katea haiku bat da
Hemen dituzu euskarazko sei diptongoak [au] [eu] [ai] [ei] [oi] [ou] eta programaren bigarren bertsioak elkarketa hauek aintzakotzat hartuko ditu.
Bigarren programa honetan lehen bertsioaren algoritmo bera erabil datiteke, baina hitzaren silabak zenbatzean ezin daiteke onartu bokalen kopuruarekin bat datorrenik. Horregatik, hitz edo esaldi baten silabak zenbatzeko urratsak hauek dira:
- Hitzaren bokalak zenbatu iBokalKopurua lortuz
- Hitzaren diptongoak bilatu iDiptongoKopurua eskuratuz
- Hitzak dituen silaba kopurua kalkulatu kenketa hau burutuz: iBokalKopurua-iDiptongoKopurua
Hau duzu StringArrayHaikuDiptongorikBai.exe bigarren bertsioaren programa exekutagarria. Eta hauxe da bigarren bertsioaren iturburu-programa: