Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: QB: Tekstin analysointi

Sivun loppuun

herkko [26.10.2004 21:30:46]

#

Pieni koodinpätkä, joka aluksi pyytää käyttäjää kirjoittamaan jotakin. Sitten se kerää tekstistä kaikenlaista tietoa, mm. tekstin pituuden, konsonanttien, vokaalien, kirjainten ja sanojen määrän. Lopuksi koodi vielä toteaa pari asiaa tuloksien perusteella.

Sanojen laskemisesta sen verran, että koodi erehtyy, mikäli sille syötetään kummallisia merkkijonoja tai hymiöitä (esim. ".:);!?" tai ":)"). Tavallisen tekstin kanssa se pärjännee jokseenkin hyvin.

E: Parantelin hieman koodia ja korjasin virheenkäsittelyssä olleen virheen :D.

'Koodin on tehnyt Jare - saa käyttää ja muokata vapaasti
'ja nimeni voi laittaa johonkin jos haluaa, mutta ei
'ole pakko.

'ensinnä kaikkein tärkein:
ON ERROR GOTO OHJELMOINTIPUTKA 'Mikäli koodissa on jotain vikaa, hakekaa
                               'Ohjelmointiputkasta apua ;-)

CLS
PRINT "Kirjoita teksti:"
INPUT "", teksti$
vokaalit$ = "aeiouyåäö"
konsonantit$ = "bcdfghjklmnpqrstvwxz"
kirjaimet$ = "abcdefghijklmnopqrstuvwxyzåäö"
seursana$ = "abcdefghijklmnopqrstuvwxyzåäö.:;!?'`~()/&%$«" 'merkit, joiden jälkeinen väli
                                                           'tarkoittaa uuden sanan alkamista

FOR m = 1 TO LEN(teksti$)
  edm$ = m$ 'otetaan talteen edellinen merkki, jotta nähdään, vaihtuuko sana
  m$ = LCASE$(MID$(teksti$, m, 1))
  isopieni$ = MID$(teksti$, m, 1)'tämä muuttuja muistaa kirjainten koot

  FOR v = 1 TO 9 'tarkistetaan, onko merkki vokaali
    v$ = MID$(vokaalit$, v, 1)
    IF m$ = v$ THEN vokaaleja = vokaaleja + 1
    IF isopieni$ = UCASE$(v$) THEN isoja = isoja + 1
    IF isopieni$ = LCASE$(v$) THEN pienia = pienia + 1
  NEXT v

  FOR k = 1 TO 20 'tarkistetaan, onko merkki konsonantti
    k$ = MID$(konsonantit$, k, 1)
    IF m$ = k$ THEN konsonantteja = konsonantteja + 1
    IF isopieni$ = UCASE$(k$) THEN isoja = isoja + 1
    IF isopieni$ = LCASE$(k$) THEN pienia = pienia + 1
  NEXT k


  FOR a = 1 TO 29 'tarkistetaan, onko merkki kirjain
    a$ = MID$(kirjaimet$, a, 1)
    IF m$ = a$ THEN
      kirjaimia = kirjaimia + 1
      IF sanoja = 0 THEN sanoja = 1 'jos tekstistä löytyy kirjaimia, sanoja on oltava väh. yksi
    END IF
  NEXT a

  IF m$ = CHR$(32) THEN  'tarkistetaan, alkaako uusi sana
    FOR vl = 1 TO LEN(seursana$)
      vl$ = MID$(seursana$, vl, 1)
      IF edm$ = vl$ THEN sanoja = sanoja + 1
    NEXT vl
  END IF


NEXT m

muita = LEN(teksti$) - kirjaimia
PRINT
PRINT
PRINT "Tekstin analysointi:"
PRINT
PRINT "Kirjaimia:"; kirjaimia; "("; kirjaimia / (muita + kirjaimia) * 100; "%)"
PRINT "Muita merkkejä:"; muita; "("; muita / (muita + kirjaimia) * 100; "%)"
PRINT
PRINT "Vokaaleita:"; vokaaleja; "("; vokaaleja / (vokaaleja + konsonantteja) * 100; "%)"
PRINT "Konsonantteja:"; konsonantteja; "("; konsonantteja / (vokaaleja + konsonantteja) * 100; "%)"
PRINT
PRINT "Isoja kirjaimia:"; isoja; "("; isoja / (isoja + pienia) * 100; "%)"
PRINT "Pieniä kirjaimia:"; pienia; "("; pienia / (isoja + pienia) * 100; "%)"
PRINT
PRINT "Tekstin pituus:"; LEN(teksti$)
PRINT "Sanoja:"; sanoja
PRINT
PRINT
PRINT "Pari sanaa:"
PRINT
IF LEN(teksti$) = 0 THEN PRINT "Tekstissä ei ole kerrassaan mitään! :O"
IF sanoja = 0 AND muita > 0 THEN PRINT "Tekstissä ei ole sanoja!"
IF kirjaimia > 0 AND muita = 0 THEN PRINT "Tekstissä ei ole muita merkkejä kuin kirjaimia!"
IF sanoja >= 50 THEN PRINT "Aika  paljon sanoja! :)"

IF konsonantteja > 0 AND vokaaleja > konsonantteja THEN PRINT "Vokaaleita on enemmän kuin konsonantteja."
IF vokaaleja > 0 AND vokaaleja < konsonantteja THEN PRINT "Konsonantteita on enemmän kuin vokaaleja, mikä on harvinaista! :O"
IF vokaaleja > 0 AND vokaaleja = konsonantteja THEN PRINT "Vokaaleita on yhtä monta kuin konsonantteja, mikä on harvinaista! :O"
IF vokaaleja = 0 AND konsonantteja > 0 THEN PRINT "Ei yhtään vokaalia! :O"
IF vokaaleja > 0 AND konsonantteja = 0 THEN PRINT "Ei yhtään konsonanttia! :O"

IF isoja > 0 AND pienia > isoja THEN PRINT "Pieniä kirjaimia on enemmän kuin isoja."
IF pienia > 0 AND pienia < isoja THEN PRINT "Isoja kirjaimia on enemmän kuin pieniä, mikä on harvinaista! :O"
IF pienia > 0 AND pienia = isoja THEN PRINT "Pieniä kirjaimia on yhtä monta kuin isoja kirjaimia, mikä on harvinaista! :O"
IF pienia = 0 AND isoja > 0 THEN PRINT "Ei yhtään pientä kirjainta! :O"
IF pienia > 0 AND isoja = 0 THEN PRINT "Ei yhtään isoa kirjainta! :O"
END

OHJELMOINTIPUTKA:
CLS
PRINT "Joku kusee :("
END
RESUME

Antti Laaksonen [28.10.2004 21:08:49]

#

Hieno virheenkäsittely! ;)

hunajavohveli [28.10.2004 21:11:32]

#

Ihan kätevä analysointi.
Tuo virheenkäsittely on tosiaan hieno. :)

nomic [29.10.2004 12:54:10]

#

Hahaha, virheenkäsittely sai aikaan sen että aloin nauraa yhtäkkiä tunnilla ja mut poistettiin luokasta pois ;D

tejeez [29.10.2004 13:20:54]

#

Jännä. :o
Virheenkäsittely on kyl tosiaan aika mielenkiintonen ;)

sooda [29.10.2004 15:33:56]

#

Hyvä eroorhandleri tosiaan :D

herkko [29.10.2004 16:57:03]

#

Kiitoksia.

Meitsi [29.10.2004 17:27:18]

#

Koodin on hyvä ja errorhandleri on äks dee.

Gwaur [29.10.2004 21:22:00]

#

Hieno virheekäsittelijä tosiaan =)

Megant92 [19.02.2005 22:36:53]

#

Hieno =)
Ja koodi on OK.

eraggo [14.04.2005 01:12:43]

#

toimii... ja on hyvä virheenkäsittely oli hyvin tehty...
d_((^.^))_b

Juhko [07.10.2006 15:51:36]

#

Hyvältä näyttää!

gamehouse [30.06.2007 14:27:46]

#

heheh... :D Virheenkäsittely... "Joku Kusee :("
Muuten ihan toimiva vinkki!


Sivun alkuun

Vastaus

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

Tietoa sivustosta