Woorden tellen

Status
Niet open voor verdere reacties.

timmytim

Nieuwe gebruiker
Lid geworden
22 feb 2012
Berichten
2
Hallo iedereen

Met school moeten we in een formulier in access een code maken om in een tekstvak het aantal woorden te tellen.
De leerkracht zei dat we met de lengtefunctie len() moeten werken. Het enige probleem is die fuctie telt de karakter dus moesten we iets met een begrensde herhaling en een enkelvoudige of tweevoudige selectie.

Ik zal even de opgaven kopieren:

Een gebruiker geeft in een tekstvak een zin in. Met een druk op de knop wordt het aantal woorden van die zin geteld.(In een ander tekstvak)

Alvast bedankt
 
Laatst bewerkt:
Schoolopdrachten zijn eigenlijk niet toegestaan in het forum, dus daarom geen rechtstreekse oplossing, maar een klein zetje in de goede richting.
Je moet de LEN functie wel gebruiken, maar je moet er iets mee doen. Je moet een lusje maken op basis van de lengte van het tekstvak, en in die lus moet je het aantal spaties tellen. Weet je het aantal spaties, dan weet je namelijk doorgaans ook het aantal woorden. Dat tellen kun je doen door een getalvariabele te maken die je steeds (elke keer als je een spatie vindt) met de waarde 1 verhoogt.

Het kan ook zonder lus, en zonder LEN maar omdat je leraar zei dat je LEN moest gebruiken, geef ik de andere oplossing nog even niet :D
 
Laatst bewerkt:
Met len bepaal je de lengte van de zin.
Controleer nu elk karakter van de zin, te beginnen bij karakter 1 tot karakter len(zin).
Indien een karakter een spatie is, verhoog het aantal woorden met 1.
Indien het karakter daarna ook een spatie is (dubbele spatie), verhoog je het aantal woorden niet.
 
Als je dan toch met VBA werkt mag je tegen de docent zeggen dat er simpeler methoden zijn in VBA om het aantal woorden te tellen.
 
@snb: ik weet niet wanneer je voor het laatst op school hebt gezeten, maar je wordt geacht daar nieuwe dingen te leren. Misschien is dat wel de essentie van de opdracht :)
 
@octa

Het bedenken van goede opdrachten (en toetsen) is essentieel voor goed onderwijs. Het gaat ook om de efficientie van wat geleerd wordt.
Om de werking van Len te leren lijken mij andere opdrachten beter, nl. die niet met een andere methode gerealiseerd kunnen worden.
 
@snb: Lijkt mij dat je dat aan de leraar moet vertellen... Ben het uiteraard wel met je eens dat goed onderwijs zonder goede opdrachten een stuk lastiger is :)
 
Wil je het aantal woorden tellen op basis van spaties zal je allereerst XL's Trim-functie moeten gebruiken om eventuele dubbele of meerdere spaties te herleiden naar 1.
Mij lijkt het interssanter om met Split de string te splitsen in een array, de linkse letter wijzigen in een hoofdletter en toewijzen aan een variabele. Tel daarna het aantal hoofdletters en je hebt het aantal woorden. Bij het tellen van spaties ga je ook eventueel getallen tellen (of je moet dit ook al opvangen in je code).
Onderstaande functie kan 1 en ander verduidelijken
Code:
Function WordCount(fullText As String) As Long
Dim words() As String
Dim firstLetter As String
Dim i As Long
    words = Split(fullText)
    For i = LBound(words) To UBound(words)
        firstLetter = UCase$(Left$(words(i), 1))
        ' indien letter, +1 woord
        If firstLetter Like "[A-Z]" Then
            WordCount = WordCount + 1
        End If
    Next i
End Function
 
En ik maar denken dat we geen complete antwoorden geven op schoolwerkvragen...
 
geef ik de andere oplossing nog even niet
De oplossing die de leraar verlangd moet hij nog steeds zelf uitzoeken, niet ?
Trouwens, ik denk niet dat TS dit antwoord mee naar school kan nemen(misschien als discussiepunt dat het anders en accurater kan) want dat de leerkracht wel onmiddellijk zou doorzien dat dit niet van hemzelf komt, aangezien ik vermoed dat het kennisniveau van TS het gebruik van Arrays en RE-patronen nog niet rechtvaardigt.
Mijn antwoord was daarom ook meer gericht naar de niet-schoolse forumgebruikers dat er wel degelijk een meer geschikte oplossing bestaat.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan