Sommen berekenen

Status
Niet open voor verdere reacties.

Matthew117

Gebruiker
Lid geworden
8 apr 2015
Berichten
9
Ik moet een som uitrekenen vanuit een label en weergeven in een ander label
(De getallen en het teken zijn altijd random)
bv. 4 + 5 = x, die 9 moet ik in een label uitgeven, hoe kan ik dit doen?

een foto van het formulier:
Knipsel.PNG
 

Bijlagen

  • Knipsel.PNG
    Knipsel.PNG
    7,9 KB · Weergaven: 49
Laatst bewerkt:
[EDIT]Hier stond een foute code door snel reageren (lees: niet veel tijd hebben en toch willen reageren, en dan ongetoetste dingen neerzetten). Morgen komt hier het uitgebreide verhaal over hoe wel wél werkt. Hint: het is met de replace-functie (om spaties te verwijderen), de split-functie (om de getallen voor en na de operator te krijgen) en de chars-functie (om het indexnummer van de operator te krijgen. Morgen staat het hier dus werkend! Sorry![/EDIT]

Een hoop code dus. Je weet nu de twee getallen, en de operator. Dan kan je kijken, als de operator een minnetje is, haal de getallen dan van elkaar af. Is het een plusje? Tel ze dan bij elkaar op. Om van een string een integer te maken, gebruik je deze code:
Code:
[color="#FF0000"]integervariabele[/COLOR] = CInt([color="#FF0000"]omtezettenvariabele[/COLOR])

Succes, en ook hier weer: bij vragen, stel ze!
Pim
 
Laatst bewerkt:
ik heb dus deze code:
Private Sub btnTest_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTest.Click

'Oefeningen genereren
Dim intGetal1 As Integer
Dim arrOefeningen() As Label = {lblOefening1, lblOefening2, lblOefening3, lblOefening4, lblOefening5, lblOefening6, lblOefening7, lblOefening8, lblOefening9, lblOefening10}
Dim strTeken As String
Dim objRandom As New Random
Dim intGetal2 As Integer

For Each Label In arrOefeningen
'Bepalen getal 1
intGetal1 = objRandom.Next(1, 11)

'Bepalen teken
strTeken = objRandom.Next(0, 2)
If strTeken = 0 Then
strTeken = "-"
'Bepalen getal 2
intGetal2 = objRandom.Next(intGetal1 + 1)
Else
strTeken = "+"
'Bepalen getal 2
intGetal2 = objRandom.Next(11 - intGetal1)
End If

'Oefeningen uitgeven in de labels
Label.Text = intGetal1 & " " & strTeken & " " & intGetal2
Next




End Sub

Private Sub btnControle_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnControle.Click
'Uitkomst in label plaatsen


_____________
Wat moet ik precies typen want ik snap het niet echt.
Zou je eens een voorbeeld kunnen geven met deze code en een oefening van plus en min?

Dank
 
Laatst bewerkt:
Ja, dat kan ik:
Code:
For Each Label In arrOefeningen
 ' Bepalen teken
 If Label.Text.IndexOf("+") <> -1 Then
  strTeken = "+"
 Else
  strTeken = "-"
 End If

 ' Bepalen getal 1
 intGetal1 = Label.Text.Replace(" ", "").Split(strTeken)(0)

 ' Bepalen getal 2
 intGetal2 = Label.Text.Replace(" ", "").Split(strTeken)(1)

 ' Oefeningen uitgeven in de labels
 Dim antwoord As Integer
 If strTeken = "+" Then
  antwoord = intGetal1 + intGetal2
 Else
  antwoord = intGetal1 - intGetal2
 End If
 ' Hier moet je nog code neerzetten om het antwoord weer weg te kunnen schrijven. Ik weet niet in welke TextBox dat moet natuurlijk, maar dat kan je zelf wel denk ik.
Next
Ik heb het niet getest, maar theoretisch zou dit moeten werken. En dat je het vorige antwoord niet snapte, klopt ook helemaal, omdat ik dat nog moest aanpassen. Ik had éérst een idee, maar dat was bedacht ik me later fout. En om tien uur 's avonds wilde ik niet nog code schrijven. Wist ik veel dat jij midden in de nacht code gaat zitten schrijven...

Pim
 
Ik heb de code ingegeven, het werkt deels.
Het geeft nu al een getal uit maar soms klopt het en soms niet
Knipsel.PNG
Ook zou ik deze uitkomsten door middel van een array (arrControle) moeten uitgeven maar dit lukt nog niet echt, misschien dat jij weet hoe het moet Pim? :d
Code die ik nu al heb:
Code:
Private Sub btnTest_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTest.Click

        'Oefeningen genereren
        Dim intGetal1 As Integer
        Dim arrControle() As Label = {lblControle1, lblControle2, lblControle3, lblControle4, lblControle5, lblControle6, lblControle7, lblControle8, lblControle9, lblControle10}
        Dim arrOefeningen() As Label = {lblOefening1, lblOefening2, lblOefening3, lblOefening4, lblOefening5, lblOefening6, lblOefening7, lblOefening8, lblOefening9, lblOefening10}
        Dim strTeken As String
        Dim objRandom As New Random
        Dim intGetal2 As Integer

        For Each Label In arrOefeningen
            'Bepalen getal 1
            intGetal1 = objRandom.Next(1, 11)

            'Bepalen teken
            strTeken = objRandom.Next(0, 2)
            If strTeken = 0 Then
                strTeken = "-"
                'Bepalen getal 2
                intGetal2 = objRandom.Next(intGetal1 + 1)
            Else
                strTeken = "+"
                'Bepalen getal 2
                intGetal2 = objRandom.Next(11 - intGetal1)
            End If

            'Oefeningen uitgeven in de labels
            Label.Text = intGetal1 & "  " & strTeken & "  " & intGetal2
        Next

        For Each Label In arrOefeningen
            'Bepalen teken
            If Label.Text.IndexOf("+") <> -1 Then
                strTeken = "+"
            Else
                strTeken = "-"
            End If

            'Bepalen getal 1
            intGetal1 = Label.Text.Replace(" ", "").Split(strTeken)(0)

            'Bepalen getal 2
            intGetal2 = Label.Text.Replace(" ", "").Split(strTeken)(1)

            'Oefeningen uitgeven in de labels
            Dim intAntwoord As Integer
            If strTeken = "+" Then
                intAntwoord = intGetal1 + intGetal2
            Else
                intAntwoord = intGetal1 - intGetal2
            End If

        Next


    End Sub
 
Dat komt omdat er nog geen enkele terugkoppeling is van deze for-loop naar het label. Plaats de volgende code in de for-loop onderaan:
Code:
arrControle(intControle).Text = intAntwoord
intControle += 1
en dit bovenaan:
Code:
Dim intControle As Integer = 0
Dit zou wel moeten werken.

Succes!
Pim
 
Ah, mooi! :thumb: Zet je je vraag ook even op opgelost?

Pim
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan