Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Vokaalien etsiminen

Sivun loppuun

petee [14.04.2005 18:00:22]

#

olisiko joku ystävällinen ja auttaisi kun pitäisi tehdä visual basicillä ohjelma: kun syöttää jonkun sanan niin ohjelma kertoo kuinka monta vokaalia sanassa on. tiedän ei ole vaikea teille tietäville mutta itellä vähä hakusessa?
kiitos jo etukäteen.

kaviaari [14.04.2005 18:05:51]

#

Ettei vaan olisi ehkä koulutehtävä >P

hunajavohveli [14.04.2005 18:23:17]

#

Käy silmukalla läpi jokainen kirjain merkkijonofunktioiden avulla. Näitä ovat esim. Left, Right ja Mid. Niistä löydät tietoa ohjelmointikielihakemistosta, jonne on linkki tuolla oppaissa.

Lumi-ukkeli [14.04.2005 21:11:50]

#

Tässä olisi pieni esimerkki joka EI TOIMI, mutta toimii pohjana, valitse vain oikeat merkkijonofunktiot(minä en niitä osaa), ja saat tuon homman toimimaan.

Dim sana as string
sana = Text1.Text
Dim i as long

For i = 1 to Len(sana)
Dim kirjain as string * 1
kirjain = merkki(sana, i)
Select Case kirjain
Case "a", "e", "i", "o", "u", "y", "ä", "ö"
MsgBox "vokaali"
Case Else
MsgBox "konsonantti"
End Select
Next

nomic [15.04.2005 00:05:59]

#

Alla olisi huonosti tehty, mutta ainaskin toimi mulla.
tarvitset text1:n ja command1:n

Dim vokaalit
Dim montako As Integer

Private Sub Command1_Click()
    For i = 1 To Len(Text1.Text)
        For j = 0 To UBound(vokaalit)

            If Mid(Text1.Text, i, 1) = vokaalit(j) Then
                montako = montako + 1
            End If

        Next j
    Next i

    MsgBox montako & "vokaalia löytyi tekstistä!"
    End
End Sub

Private Sub Form_Load()
    montako = 0
    vokaalit = Array("a", "e", "i", "o", "u", "y", "å", "ä", "ö")
End Sub

setä [15.04.2005 00:30:19]

#

Tässä toinen ratkaisu, myös isot kirjaimet on mukana.

Option Explicit
Dim I As Integer, J As Integer
Const vok As String = "aeiouyäöå"

Private Sub Form_Load()
    Text1_Change
End Sub

Private Sub Text1_Change()
    J = 0
    For I = 1 To Len(Text1)
      If InStr(1, vok, Mid(Text1, I, 1), 1) Then J = J + 1
    Next
    Label2 = J
End Sub

Teksti kirjoitetaan tekstiruutuun Text1 ja vokaalien määrä näkyy välittömästi Label1:ssä

esakom [15.04.2005 01:03:01]

#

setä:

lainaus:

vokaalien määrä näkyy välittömästi Label1:ssä

tossa koodissas on kyllä Label2 eikä Label1, muuten ihan pätevä ratkaisu

petee [19.04.2005 08:42:56]

#

kiitoksia! ja uusi kysymys saako tuosta helposti tehtyä ohjelman joka kertoisi sitten montako kirjainta kaikkiaan?
esim jos vaikka kirjoitan paloasema niin tulisi vastaukseksi 9.. kiitoksia taas!!!

Lazu [19.04.2005 09:09:12]

#

Tämä on selvästi koulutehtävä, joten vinkiksi sanon että se löytyy noista molemmista yllä olevista koodeista.

Juice [19.04.2005 13:59:44]

#

Kannattaisi opetella merkkijonofunktiot koulutehtäviä varten! Tuohan on aivan mahdottoman helppo!
Katso putkan opas, suoraan en vastausta anna.

nomic [19.04.2005 16:43:34]

#

Huomaa, että jossain koulussa on jakso vaihtunut, ja jollain on alkanut ohjelmointia. :D

hunajavohveli [19.04.2005 17:07:45]

#

Jos tämä kerran on koulutehtävä, niin luulisi, että nuo funktiot sitten myös opetettaisiin siellä koulussa? Algoritmit sen sijaan on hyvä oppia tekemään itse, mutta tämä on ihan tietokysymys: Len-funktio palauttaa kirjaimien määrän.

Megant92 [19.04.2005 17:57:24]

#

Ja merkkien.

hunajavohveli [19.04.2005 18:04:24]

#

Niin tosiaan, Len palauttaa koko merkkijonon pituuden. Jos pelkät kirjaimet haluaa, niin ei siinä mitään sen kummempaa kuin että lisää tuohon edellä annettuun koodiin muutkin kirjaimet.
Edit: Ja on muuten saman tien hyvä käyttää myös LCase-funktiota niin ei tule ongelmia isojen ja pienten kirjainten erojen kanssa. LCase ei vain muistaakseni muunna ääkkösiä (ainakan QB:ssä).

sooda [20.04.2005 12:11:55]

#

Qubbessa ei tosiaan muunna, mutta se on helppo korjata omalla funkkarilla. VB:ssä ainaki muuttaa ääkköset myös.

setä [20.04.2005 17:25:33]

#

InStr-funktion viimeinen ykkönen määrittelee, ettei isoja ja pieniä erotella eli ei tarvita LCase-funktiota.


Sivun alkuun

Vastaus

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

Tietoa sivustosta