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.
Ettei vaan olisi ehkä koulutehtävä >P
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.
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
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
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ä
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
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!!!
Tämä on selvästi koulutehtävä, joten vinkiksi sanon että se löytyy noista molemmista yllä olevista koodeista.
Kannattaisi opetella merkkijonofunktiot koulutehtäviä varten! Tuohan on aivan mahdottoman helppo!
Katso putkan opas, suoraan en vastausta anna.
Huomaa, että jossain koulussa on jakso vaihtunut, ja jollain on alkanut ohjelmointia. :D
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.
Ja merkkien.
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ä).
Qubbessa ei tosiaan muunna, mutta se on helppo korjata omalla funkkarilla. VB:ssä ainaki muuttaa ääkköset myös.
InStr-funktion viimeinen ykkönen määrittelee, ettei isoja ja pieniä erotella eli ei tarvita LCase-funktiota.
Aihe on jo aika vanha, joten et voi enää vastata siihen.