Pahoittelen jos tälläinen funktio on itse kielessä tai koodivinkeissä; kummastakaan en sitä löytänyt.
Tämä kääntää annetun merkkijonon ympäri, esim. merkkijonosta "testi" tulee "itset".
Annoin funktion nimeksi REVERSE$, koska se kuvaa sitä hyvin (mielestäni) ja näyttää samantapaiselta kuin QBasicin merkkijonofunktioiden nimet. :)
' Kääntää merkkijonon ympäri.
' Käytä funktiota REVERSE$(merkkijono).
DECLARE FUNCTION REVERSE$ (kaannettava AS STRING)
CLS
DIM testi AS STRING
testi = REVERSE$("https://www.ohjelmointiputka.net/")
PRINT testi
FUNCTION REVERSE$ (kaannettava AS STRING)
DIM koko AS INTEGER
koko = LEN(kaannettava)
IF koko > 0 THEN
DIM uusi AS STRING
DIM i AS INTEGER
FOR i = 0 TO koko - 1
uusi = uusi + MID$(kaannettava, koko - i, 1)
NEXT
REVERSE$ = uusi
ELSE
REVERSE$ = ""
END IF
END FUNCTIONJoo, QB:ssa ei tosiaan ole valmiina mitään REVERSE$-funktiota, vasta VB:n kuutosversiossa on funktio StrReverse.
Tein tässä huvikseni pari itseään kutsuvaa funktiota, jotka myös kääntävät tekstin toisinpäin:
FUNCTION REVERSE2$ (mj AS STRING)
IF LEN(mj) > 1 THEN
REVERSE2$ = RIGHT$(mj, 1) + REVERSE2$(LEFT$(mj, LEN(mj) - 1))
ELSE
REVERSE2$ = mj
END IF
END FUNCTION
FUNCTION REVERSE3$ (mj AS STRING)
IF LEN(mj) > 1 THEN
DIM keski AS INTEGER
keski = LEN(mj) \ 2
REVERSE3$ = REVERSE3$(MID$(mj, keski + 1)) + REVERSE3$(LEFT$(mj, keski))
ELSE
REVERSE3$ = mj
END IF
END FUNCTIONNopeustesti (1000 käännöstä, ylärivillä sanan pituus):
5 16 61 --------------------------------------------- REVERSE$ 0,4 s 0,9 s 2,5 s REVERSE2$ 0,8 s 2,6 s (tilttasi) REVERSE3$ 1,3 s 4,4 s 12,7 s
Lopputulos: Kannattaa pitäytyä tavallisissa funktioissa. ;)
Joo, minä olin tehnyt samanaiheisen esimerkin samalle kielelle. https://www.ohjelmointiputka.net/koodivinkit/
Rrrh.. Pitihän se tietää etten kaikkia huomannut.
Olen erittäin pahoillani. :o
Tämän vinkin voisi sitten varmaan joku poistaa..?
Menes katsomaan omaa profiiliasi, sieltä sivun ylälaidasta painat lukkiä "Omat koodivinkit" ja siinhen tulevassa listassa pitäisi tämä vinkki näkyä. Koita edetä itse loppuun asti :P
Minä sitten en pakottanut sua poistamaan tätä :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.