Kirjoittaja: Antti Laaksonen
Kirjoitettu: 06.04.2002 – 06.04.2002
Tagit: teksti, koodi näytille, vinkki
Tämä ohjelma tavuttaa suomenkielisiä sanoja tai lauseita vaihtelevalla menestyksellä. Peruskäytössä ohjelma toimii ihan hyvin, mutta tavutusohjelmien perinteiset heikkoudet löytyvät tästäkin:
1. Ohjelmalla ei ole yhdyssanasanastoa, joten esimerkiksi maanosa taipuu maa-no-sa
2. Jos konsonantteja on kolme peräkkäin (harvinaista suomenkielessä), kuten sanoissa strutsi ja myrsky, ohjelma ei tavuta oikein
DIM SHARED vokaalit AS STRING
DIM SHARED konsonantit AS STRING
CLS
vokaalit = "aeiouyäö"
konsonantit = "bcdfghjklmnpqrstvwxz"
LINE INPUT "Kirjoita tavutettava sana/lause: ", sana$
sana$ = sana$ + SPACE$(50)
FOR i = 2 TO LEN(sana$) - 1
IF OnKonsonantti(MID$(sana$, i - 1, 1)) AND OnKonsonantti(MID$(sana$, i, 1)) AND MID$(sana$, i, 1) = MID$(sana$, i - 1, 1) THEN
sana$ = LEFT$(sana$, i - 1) + "-" + MID$(sana$, i)
END IF
NEXT
FOR i = 2 TO LEN(sana$) - 1
IF OnVokaali(MID$(sana$, i - 1, 1)) AND OnKonsonantti(MID$(sana$, i, 1)) AND OnVokaali(MID$(sana$, i + 1, 1)) THEN
sana$ = LEFT$(sana$, i - 1) + "-" + MID$(sana$, i)
END IF
NEXT
FOR i = 2 TO LEN(sana$) - 1
IF OnVokaali(MID$(sana$, i - 1, 1)) AND OnKonsonantti(MID$(sana$, i, 1)) AND OnKonsonantti(MID$(sana$, i + 1, 1)) AND MID$(sana$, i + 2, 1) <> "-" THEN
sana$ = LEFT$(sana$, i) + "-" + MID$(sana$, i + 1)
END IF
NEXT
FOR i = 2 TO LEN(sana$) - 1
IF OnVokaali(MID$(sana$, i - 1, 1)) AND OnVokaali(MID$(sana$, i, 1)) AND OnVokaali(MID$(sana$, i + 1, 1)) THEN
sana$ = LEFT$(sana$, i - 1) + "-" + MID$(sana$, i)
END IF
NEXT
PRINT sana$
FUNCTION OnKonsonantti% (kirjain$)
IF INSTR(konsonantit, LCASE$(kirjain$)) > 0 THEN OnKonsonantti% = 1
END FUNCTION
FUNCTION OnVokaali% (kirjain$)
IF INSTR(vokaalit, LCASE$(kirjain$)) > 0 THEN OnVokaali% = 1
END FUNCTIONsexikäs :D:D...mut en jaCCa tesoo :P xD