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 FUNCTION
Joo, 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 FUNCTION
Nopeustesti (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.