VB6- Meest aanwezig getal in een textbox weergeven

Status
Niet open voor verdere reacties.

satriano17

Gebruiker
Lid geworden
30 sep 2012
Berichten
331
Sorry voor de rare titel .
Als ik in een text1.text, na een bepaalde berekening, heb

Code:
Text1.text="111224567"

dus de 1 is het meeste aanwezig getal, hoe kan ik die weergeven bv in een text2.text?

text2.text=1 (meeste aanwezig getal)
dank u
 
Meestvoorkomende nummer is in nederland de "modus" en in engeland de "mode".
 
Ok. Maar... Geen oplossing voor mijn vraag? Het meestvoorkomende getal tussen de anderen in een textbox?
 
dus de 1 is het meeste aanwezig getal, hoe kan ik die weergeven bv in een text2.text?
text2.text=1
Met onderliggende vraag hoe je dit wilt weergeven bij
Code:
Text1.text="3311442255"
 
Laatst bewerkt:
ja, Bron, een mooi vraag.
In geval van gelijk aantal getallen in text1 (111, 222, 88...)
dan misschien alle hoogste weergeven
(1 en 2
 
vb6 ben ik niet in thuis. Misschien ken je de "dummy methode" hieronder omzetten in VB6
PHP:
$getal = "2664449393300901";

// Maak array $teller met 10 cellen (cijfer 0 - 9). Elke cel heeft waarde 0.
$teller = array_fill(0, 10, 0);
// Doorloop $getal en verhoog per cijfer de juiste cel in $teller met 1.
for ($i = 0; $i < strlen($getal); $i++) {
    $cijfer = intval( substr($getal, $i, 1) );
    $teller[$cijfer]++;
}

// Hoeveel keer komt het cijfer voor dat het meest vookomt
$aantal = max($teller);
echo "De volgende cijfers komen " . $aantal . " keer voor: ";
// Toon (ook bij duplicaten) cijfers die het meest voorkomen.
for ($i = 0; $i < 10; $i++) {
    if ($teller[$i] == $aantal) echo $i . " ";
}

Op het scherm staat dan
De volgende cijfers komen 3 keer voor: 0 3 4 9
 
Laatst bewerkt:
Bedankt, Bron. Il zal proberen te converteren. Intussen kan misschien iemand anders met een vb6 oplossing komen.
Bedankt
 
even gekeken naar wikipedia, VB6 en VBA, dat is precies verwant, maar het verschil ??? https://nl.wikipedia.org/wiki/Visual_Basic
Code:
Sub Vaakst()
     Dim arr()
     mijntekst = "111224567777777777777777777777777777777777777777777778888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999997777777"
     ReDim arr(Len(mijntekst) - 1)
     For i = 0 To UBound(arr): arr(i) = --Mid(mijntekst, i + 1, 1): Next
     MsgBox "Vaakst voorkomend is : " & WorksheetFunction.Mode(arr)
End Sub
 
Laatst bewerkt:
Natuurlijk eerst zelf proberen...
Ik werk nooit met VB6 maar als ik even google zie ik een gevulde array met een for loop
Dit kan je verder uitbouwen op de wijze zoals hierboven.
Code:
Dim numberSet(10): For x = 0 To 9: ..........: Next x


@cow18 WorksheetFunction.Mode(arr) geeft een Double.
Worden dan ook duplicaten getoond? Zoals 773355123.
 
Laatst bewerkt:
Code:
Private Sub Form_Load()

    Text1.Text = "1112233334567"

    sNum = Text1.Text
    lNum = Len(sNum)
    
    ReDim avMax(1 To lNum)
    
    For i = 1 To lNum
        dNum = Val(Mid(sNum, i, 1))
        avMax(dNum) = avMax(dNum) + 1
    Next

    For i = 1 To lNum
        iCnt = avMax(i)
        If iCnt > iMax Then
            iMax = iCnt
            lNum = i
        End If
    Next

    MsgBox lNum

End Sub
 
Laatst bewerkt:
Beste Alphamax
:eek:
Ik heb je oplossing geprobeerd. En...
na een week proberen gaf ik het bijna op.
Wat een prachtig routine en goed ingesteld !!!!

Maar vooral kort en functioneel. Ik heb al aangepast en geïntegreerd in mijn programma
Onder ander in plaats van form load het ik alles gebracht onder een command button
en ook de (vrij) input aangepast van Text1 .
Fantastisch oplossing.

Zeeer Bedankt
satriano
 
Laatst bewerkt:
en ... de mijne in 8 is nog korter en eenvoudiger met Alpha's modus
 
@alphamax. Nieuwsgierig vraagje, waarvoor is dMax = -1E+307
 
Laatst bewerkt:
Ja cow18 maar het
was mij niet gelukt
uw inderdaad korter
code te aanpassen.
Ik kon vooral niet de variabel
WorksheetFunction.Mode(arr) plaatsen of veranderen.
Toch bedankt.
Aan iedereen.
 
Laatst bewerkt:
Ik kan variabele dMax niet in de code snippet vinden, vandaar mijn vraag.
 
@cow18 WorksheetFunction.Mode(arr) geeft een Double.
Worden dan ook duplicaten getoond? Zoals 773355123.
je wil dus in geval van meerdere "gelijke", ze allemaal weergeven
zie https://support.microsoft.com/nl-nl/office/modus-meerv-functie-50fd9464-b2ba-4191-b57a-39446689ae8c
Nu heb ik het gedaan voor koppels van 2 opeenvolgende cijfers
Code:
Sub Vaakst_Koppels()
     Dim arr()
     ReDim arr(0)
     mijntekst = "777335551233"

     For i = 1 To Len(mijntekst) - 1
          If UBound(arr) < i - 1 Then ReDim Preserve arr(i - 1)     'arr tlkens 1 uitbreiden met behoud van gegevens
          arr(i - 1) = --Mid(mijntekst, i, 2)                   'telkens 2 opeenvolgende cijfers toevoegen
     Next
     
     MsgBox "de vaakst voorkomende getallen zijn : " & Join(Application.Transpose(WorksheetFunction.Mode_Mult(arr)))' meerdere resultaten transponeren en samenvoegen met een spatie tussen
End Sub
 
Laatst bewerkt:
Nieuwe code in bericht#10.
@bron
Typo's van mij dMax=lMax.
@allen
dMax is zelfs niet nodig.
Bij het starten is iMax 0.
Als er cijfer voorkomt is het aantal altijd 1 of hoger.
 
Zou dit ook werken? Voor een hele lijst met alle cijfers?
Code:
mijntekst = "774669990111"

For i = 0 To 9
    kopie = mijntekst
    aantal = Len(kopie) - Len(Replace(kopie, i, ''))
    ' Cijfer " & i & " komt " & aantal & " keer voor."
Next
 
Laatst bewerkt:
tuurlijk, nu nog onthouden bij welk cijfer je het meest had
Code:
Sub Bron()
     Dim tel(9)
     mijntekst = "774669990111"

     For i = 0 To 9
          kopie = mijntekst
          tel(i) = Len(kopie) - Len(Replace(kopie, i, ""))
     ' Cijfer " & i & " komt " & aantal & " keer voor."
     Next
     
     mymax = Application.Max(tel)
     i = Application.Match(mymax, tel, 0) - 1  'array begint bij 0 !!!
     MsgBox "vaakst : " & i & vbLf & "aantal keer " & mymax
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan