Woorden tellen

Status
Niet open voor verdere reacties.

o'neil

Gebruiker
Lid geworden
4 mei 2005
Berichten
179
Hallo,
ik heb weer eens een oefening waar ik iets niet van snap :)
Opdracht : je voert een zin in, duwt op een commandbutton, en dan komt er in een tekstvak het aantal woorden van die zin te staan,
de code is als volgt:

Private Sub Command4_Click()
'variabelen declareren
Dim intLengte As Integer
Dim intAantal As Integer
Dim intTeller As Integer

'Aantal karakters vd zin bepalen
intLengte = Len(txtZin)

'Aantal spaties tellen
For intTeller = 1 To intLengte
If Mid(txtZin, intTeller, 1) = " " Then
intAantal = intAantal + 1
End If
Next

'aantal woorden tonen
txtAantalWoorden = intAantal + 1

End Sub

Nu begrijp ik het stuk van intAantal niet,
ik begrijp wel dat het + 1 omdat het aantal woorden 1 meer is dan het aantal spaties,
maar er wordt in mijn ogen nergens aangegeven waarvoor intAantal staat, het werkt wel dus het ligt aan mij, wie kan het mij uitleggen?
 
Woorden in een zin worden gescheiden door spaties, dus tel je gewoon het aantal spaties... (vergeet niet begin en eindspaties te verwijderen !)
 
ik denk dat je mijn vraag verkeerd begrepen hebt,

Then
intAantal = intAantal + 1

waarbij intAantal staat voor het aantal spaties, maar dat is toch nergens aangegeven?
:confused:
 
in de variabele intAantal wordt het aantal spaties vastgelegd en dat is alles.

Eigenlijk had in de opdracht moeten staan, dat deze variabele in het begin de waarde 0(nul) moet hebben. Dat hoeft niet per sé worden gedaan, omdat wanneer VB wordt gerund alle variabelen op 0(nul) worden gezet(behalve constanten natuurlijk), maar voor de netheid van het programmeren is het beter de variabele intAantal de waarde 0 te laten toekennen. Als dit in die opdracht werd gedaan, dan had je de betekenis van deze variabele misschien beter begrepen. Maar eigenlijk kun je aan de hand van de naam van de variabele ook weten waarvoor het dient. Staat dat niet in de opdracht vermeld?

Het programma werkt verder goed, dat schreef je ook al.

Wel is het beter om deze statement intLengte = Len(txtZin) te vervangen met deze staement Trim(intLengte = Len(txtZin)).

De Trim-functie zorgt ervoor dat wanneer er een spatie zowel vóór als een zin per ongeluk op die plaatsen komt te staan wordt verwijderd, je zou anders een andere uitkomst krijgen.

Het is maar een oefening, in feite is de programmeercode niet eens volmaakt. Stel je eens voor dat tussen de woorden per ongeluk een extra spatie wordt geplaatst, dan klopt de uitkomst niet meer.

Het lijk zo'n simpele opdracht, maar dat is het echt niet. Het zet je tot nadenken.

Dennis.
 
Geplaatst door o'neil
ik denk dat je mijn vraag verkeerd begrepen hebt,

Then
intAantal = intAantal + 1

waarbij intAantal staat voor het aantal spaties, maar dat is toch nergens aangegeven?
:confused:
Juist Then!

Dat betekent, dat wanneer aan de gestelde voorwaarde wordt voldaan(er is dus een spatie in die string te vinden), Dan(in het Nederlands) de variabele intAantal met 1(één) te verhogen. De allereerste krijgt intAantal de waarde 1(na de verhoging, omdat intAantal in begin de waarde 0 had)

Dennis.
 
Geplaatst door o'neil
waarbij intAantal staat voor het aantal spaties, maar dat is toch nergens aangegeven?
:confused:
Ja, je moet het zo zien:

Ik schreef eerder, dat intAantal in het begin de waarde 0 heeft. Met de Mid-functie kun je een bepaald karakter in een string(tekst), in jouw geval een spatie, gaan zoeken. De syntax van die functie is goed geschreven, maar weet je ook hoe het werkt?

Dennis.
 
ja dat snap ik hoe dat werkt, de mid-functie,
maar ik begrijp nog steeds niet hoe het komt dat intAantal ineens staat voor het aantal spaties,
er staat toch nergens aangegeven dat intAantal = "mid(..) = " " ofzoiets
Het is dat wat ik niet begrijp...
sorry dat ik zo'n lastige klant ben :rolleyes:
 
Geplaatst door o'neil
ja dat snap ik hoe dat werkt, de mid-functie,
maar ik begrijp nog steeds niet hoe het komt dat intAantal ineens staat voor het aantal spaties,
er staat toch nergens aangegeven dat intAantal = "mid(..) = " " ofzoiets
Het is dat wat ik niet begrijp...
sorry dat ik zo'n lastige klant ben :rolleyes:

ik snap het nu toch, ik had ff niet door dat door die teller die variabele telkens word verhoogd met 1 als er een "spatie gevonden" word :)

Bedankt voor de hulp

MVG Oneil
 
Geplaatst door o'neil
ik snap het nu toch, ik had ff niet door dat door die teller die variabele telkens word verhoogd met 1 als er een "spatie gevonden" word :)
Heb je nu goed gezien:thumb:
Geplaatst door o'neil

Bedankt voor de hulp

MVG Oneil

Graag gedaan.

Dennis.
 
Dim strInvoer, strUitvoer() As String
strInvoer = txtZin.Text
strUitvoer = strInvoer.Split
lblAantal.Text = strUitvoer.Count

hiermee werkt het ook
 
Welkom op Helpmij.nl.:)

Het topic is van 2005, dus al heel lang niet actueel meer. Oude topics mogen met rust gelaten worden. Daarbij stond deze al als "Opgelost" gemarkeerd.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan