Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: QB: Merkkijonon kääntäminen

TH [01.08.2004 14:22:42]

#

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

Antti Laaksonen [01.08.2004 18:14:35]

#

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. ;)

Gwaur [02.08.2004 02:43:52]

#

Joo, minä olin tehnyt samanaiheisen esimerkin samalle kielelle. https://www.ohjelmointiputka.net/koodivinkit/23760-qb-tekstin-kääntö-qb-lle

TH [02.08.2004 17:12:00]

#

Rrrh.. Pitihän se tietää etten kaikkia huomannut.
Olen erittäin pahoillani. :o

Tämän vinkin voisi sitten varmaan joku poistaa..?

Gwaur [03.08.2004 16:02:47]

#

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

Gwaur [03.08.2004 16:03:10]

#

Minä sitten en pakottanut sua poistamaan tätä :)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta