Sananmuuntaja

Oletko tehnyt jotain, mistä muut voisivat hyötyä. Postita vinkit tänne.
Post Reply
User avatar
TukeKoodi
Active Member
Posts: 142
Joined: Thu Feb 03, 2011 7:40 pm
Location: C:\Työpöytä

Sananmuuntaja

Post by TukeKoodi »

Joo mä tiedän et tää on ollu foorumeil mutta sorsan linkki on vanhentunut. Siksipä tein esimerkin. Tiiän et on purkkanen, mut on kuitenki. Ideana siis on että tehdään merkkijonosta kaksi sanaa ja otetaan molemmista muistiin kaksi ensimmäistä kirjainta ja poistetaan ne sanojen alusta. Sitten liitetään sanan 1 alku sanan 2 alkuun ja toisinpäin. Koodi:

Code: Select all

Repeat
    sanat$ = Input ("Kirjoita sanat: ")
    DrawScreen
Until KeyHit(28)
CloseInput

    sana1$ = GetWord (sanat, 1)
    sana2$ = GetWord (sanat, 2)
    väli1$ = Left (sana1, 2)
    väli2$ = Left (sana2, 2)
    sana1$ = StrRemove (sana1$, 1, 2)
    sana2$ = StrRemove (sana2$, 1, 2)
    sana1 = väli2 + sana1
    sana2 = väli1 + sana2

Print sana1+" "+sana2
WaitKey
Aloittelija, koodaaja, jotain...
CbFUN :D
Dimple
Active Member
Posts: 103
Joined: Wed Nov 17, 2010 5:43 pm

Re: Sananmuuntaja

Post by Dimple »

Mikäs tuosta purkkasen tekee? Sehän tekee ihan mitä lupaa eli vaihtaa ne kaksi ensimmäistä kirjainta. Itse en ainakaan nopeasti keksinyt parempaa tapaa tehdä samaa asiaa.

Funktio muodossa se voisi olla hitusen nätimpi, mutta aika saivarteluksi menee:

Code: Select all

Function muunna(sanat$)

    sana1$ = GetWord (sanat, 1)
    sana2$ = GetWord (sanat, 2)
    väli1$ = Left (sana1, 2)
    väli2$ = Left (sana2, 2)
    sana1$ = StrRemove (sana1$, 1, 2)
    sana2$ = StrRemove (sana2$, 1, 2)
    sana1 = väli2 + sana1
    sana2 = väli1 + sana2
    
    Return sana1+" "+sana2

EndFunction

Repeat
    sanat$ = Input ("Kirjoita sanat: ")
    DrawScreen
Until KeyHit(28)
CloseInput

Print muunna(sanat$)
WaitKey
User avatar
MetalRain
Active Member
Posts: 188
Joined: Sun Mar 21, 2010 11:17 am
Location: Espoo

Re: Sananmuuntaja

Post by MetalRain »

Yleensä sanamuunnoksissa muutetaan sanan ensimmäinen tavu eikä vain kahta ensimmäistä kirjainta, vieläpä siten että pitkä vokaali säilyy sanassa pitkänä vaikka vokaali vaihtuu vrt. sana muunnos -> muna saannos. Odotan jännityksellä josko ryhtyisit sellaista toteuttamaan :P

Voipa tuon vaihdon toteuttaa vielä toisella tavalla laskemalla välilyönnin sijainnista toisen sanan aloituskohdan ja kasaamalla sanat uudelleen pala kerrallaan. Tosin tässä tapauksesa sillä ole väliä kunhan toimii. :)

Code: Select all

While Not EscapeKey()
    ClearKeys()
    Repeat
        sanat$ = Input ("Kirjoita sanat: ")
        DrawScreen
    Until KeyHit(28)
    CloseInput
    
    index = InStr(sanat$," ")
    
    sanat$ = Mid(sanat$,index+1,2) + Mid(sanat$,3,index-3) + " " + Left(sanat$,2) + Mid(sanat$,index+3)
    
    Text 0,0,sanat$
    DrawScreen
    WaitKey
Wend
Post Reply