Programma om sommen te maken

Status
Niet open voor verdere reacties.

mvdbroekjansen

Nieuwe gebruiker
Lid geworden
27 okt 2008
Berichten
4
Hallo,
Mijn zoon zit op de ict opleiding.
Hij krijgt les in Visual Basic 2008.
Mijn man heeft vorig jaar een herseninfarct gehad.
Hij is nu aan het revalideren om te praten en schrijven.
Nou hebben we wel een programma zodat hij leert praten en schrijven via de computer.
Maar we willen hem ook weer leren rekenen.
Mijn zoon vroeg aan mij of ik hem kon helpen met zoeken om zo iets te maken.
Hij vertelde dat hij iets moet hebben om automatisch een som te genereren.
Ik weet niet precies wat dat is, maar kan iemand mij hier misschien mee helpen?
Hij doet zijn best maar hij komt er niet echt uit.
Mvg

Marlies :love:
 
Ja, met Visual Basic 2008 kan je willekeurig sommen maken hoor!

Het is eigenlijk helemaal niet zo lastig. In de code zul je wat willekeurige getallen moeten aanmaken, en deze evt. met willekeurige logische opdrachten weergeven.

een pseudocode-voorbeeld:
PHP:
//pseudocode
dim WillekeurigGetal1 as integer
dim WillekeurigGetal2 as integer

WillekeurigGetal1 = random_getal()
WillekeurigGetal2 = random_getal()

dim GebruikersInput as integer

GebruikersInput = inputbox("Wat is " & WillekeurigGetal1 & " + " & WillekeurigGetal2 & "?")


if GebruikersInput = (WillekeurigGetal1 + WillekeurigGetal2) then
   msgbox "Goed gedaan, " & GebruikersInput & " was inderdaad de oplossing.
else
   msgbox "Dat klopt niet, het antwoord is " & (WillekeurigGetal1 + WillekeurigGetal2)
end if



Een van de VB2008-experts kan je vast en zeker echte code geven.

Groet, :thumb:
 
Laatst bewerkt:
hallo,
namens mijn zoon moest ik bedankt zeggen voor jou antwoord.
hij gaat het daarmee proberen, en hij wacht eventueel nog op andere antwoorden mocht iemand hem hiermee kunnen helpen.
mvg
Marlies :love:
 
Die code was een mooie basis , dank Vegras :D

Hier een werkende code die kan optellen,aftrekken,vermenigvuldigen en delen.
Je kan de sommen zo moeilijk maken als je zou willen door MaximaalGetal te verhogen.


Code:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim WillekeurigGetal As New Random()

        Dim MaximaalGetal As Integer = 10

        Dim Getal1 As Integer = WillekeurigGetal.Next(1, MaximaalGetal)
        Dim Getal2 As Integer = WillekeurigGetal.Next(1, MaximaalGetal)


        Dim KiesEenGetal As New Random()

        Dim GebruikersInput As Integer
        Dim Antwoord As Integer
        Dim GegevenAntwoord As Boolean

        Select Case KiesEenGetal.Next(1, 5)

            Case 1
                'Optellen
                GebruikersInput = InputBox("Wat is " & Getal1 & " + " & Getal2 & "?")
                Antwoord = (Getal1 + Getal2)

            Case 2
                'Aftrekken (Zonder negatieve uitkomsten)
                If Getal2 > Getal1 Then
                    GebruikersInput = InputBox("Wat is " & Getal2 & " - " & Getal1 & "?")
                    Antwoord = (Getal2 - Getal1)
                Else
                    GebruikersInput = InputBox("Wat is " & Getal1 & " - " & Getal2 & "?")
                    Antwoord = (Getal1 - Getal2)
                End If
            Case 3
                'Vermenigvuldigen
                GebruikersInput = InputBox("Wat is " & Getal1 & " x " & Getal2 & "?")
                Antwoord = (Getal1 * Getal2)
            Case 4
                'Delen
                Antwoord = (Getal1 * Getal2)
                GebruikersInput = InputBox("Wat is " & Antwoord & " / " & Getal2 & "?")
                Antwoord = Getal1
            Case Else
                MsgBox("Fout!")
        End Select


        If GebruikersInput = Antwoord Then
            MsgBox("Goed gedaan, " & GebruikersInput & " was inderdaad de oplossing. ")
        Else
            MsgBox("Dat klopt niet, het antwoord is " & Antwoord)
        End If

    End Sub
 
Laatst bewerkt:
Hallo
mijn zoon is tot nu toe aardig ver ermee gekomen,
hij heeft dit tot nu toe:

Code:
        Dim WillekeurigGetal As New Random()
        Dim MaximaalGetal As Integer = 15
        Dim Getal1 As Integer = WillekeurigGetal.Next(1, MaximaalGetal)
        Dim Getal2 As Integer = WillekeurigGetal.Next(1, MaximaalGetal)
        Dim KiesEenGetal As New Random()
        Dim GebruikersInput As Integer
        Dim Antwoord As Integer
        Dim gooien As Integer
        Dim IntTeller As Integer

        gooien = InputBox(" Hoevaak wilt u dat er gegooid wordt? ", "Aantal keer gegooid")
        For IntTeller = 1 To gooien
            Select Case KiesEenGetal.Next(1, 5)

                Case 1
                    'Optellen
                    GebruikersInput = InputBox("Wat is " & Getal1 & " + " & Getal2 & "?")
                    Antwoord = (Getal1 + Getal2)
                    If GebruikersInput = Antwoord Then
                        MsgBox("Goed gedaan, " & GebruikersInput & " was inderdaad de oplossing. ")
                    Else
                        MsgBox("Dat klopt niet, het antwoord is " & Antwoord)
                    End If
                Case 2
                    'Aftrekken (Zonder negatieve uitkomsten)
                    If Getal2 > Getal1 Then
                        GebruikersInput = InputBox("Wat is " & Getal2 & " - " & Getal1 & "?")
                        Antwoord = (Getal2 - Getal1)
                    Else
                        GebruikersInput = InputBox("Wat is " & Getal1 & " - " & Getal2 & "?")
                        Antwoord = (Getal1 - Getal2)
                        If GebruikersInput = Antwoord Then
                            MsgBox("Goed gedaan, " & GebruikersInput & " was inderdaad de oplossing. ")
                        Else
                            MsgBox("Dat klopt niet, het antwoord is " & Antwoord)
                        End If
                    End If
                Case 3
                    'Vermenigvuldigen
                    GebruikersInput = InputBox("Wat is " & Getal1 & " x " & Getal2 & "?")
                    Antwoord = (Getal1 * Getal2)
                    If GebruikersInput = Antwoord Then
                        MsgBox("Goed gedaan, " & GebruikersInput & " was inderdaad de oplossing. ")
                    Else
                        MsgBox("Dat klopt niet, het antwoord is " & Antwoord)
                    End If
                Case 4
                    'Delen
                    Antwoord = (Getal1 * Getal2)
                    GebruikersInput = InputBox("Wat is " & Antwoord & " / " & Getal2 & "?")
                    Antwoord = Getal1
                    If GebruikersInput = Antwoord Then
                        MsgBox("Goed gedaan, " & GebruikersInput & " was inderdaad de oplossing. ")
                    Else
                        MsgBox("Dat klopt niet, het antwoord is " & Antwoord)
                    End If
                Case Else
                    MsgBox("Fout!")
            End Select
        Next
    End Sub

maar nu zit hij met een probleem.
als hij de maximaal getal veranderd, dan krijgt hij telkens dezelfde soort sommen, terwijl ze anders moeten worden.
als voorbeeld als je 15 als maximaal getal kiest.
dan krijg je sommen als:
14x10
14-10
140/10
maar het moet allemaal verschillende zijn.
wat heeft hij fout gedaan?
mvg

marlies:love:
 
Dat komt omdat hij in een For-Next lus zit (waarin gevraagd wordt hoeveel keer hij wil spelen) maar daarin niet Getal1 en Getal2 een nieuwe willekeurige waarde toekent. Dus zal visualbasic daar ook geen nieuw getal voor aanmaken. Vandaar.

die 2 regels zullen dan binnen de loop moeten staan. Tussen deze 2 regels in.
For IntTeller = 1 To gooien

Dim Getal1 As Integer = WillekeurigGetal.Next(1, MaximaalGetal)
Dim Getal2 As Integer = WillekeurigGetal.Next(1, MaximaalGetal)


Select Case KiesEenGetal.Next(1, 5)


Mvg Pizara
 
Laatst bewerkt:
hallo,
ok hartelijk bedankt Pizara.
Hij is er al aardig mee op weg en heeft alleen nog 2 kleine probleempjes.
Hij heeft er nu een timerfunctie ingemaakt. (tenminste dat zegt hij :p)
Hij wilt graag dat als de tijd om is (dat kan de persoon zelf instellen).
Dat dan de inputbox (of zo iets, dat zei hij tenminste) automatisch afsluit.
En dan het volgende probleem.
Hij wou ook graag dat de persoon dan krijgt te zien bij welke sommen hij het goede of foute antwoord gaf in een form (waar de knop staat om te beginnen).
Hieronder de code wat ik van hem kreeg van het programma, zodat jullie kunnen zien of er nog iets veranderd kan worden.
Alvast bedankt voor de grote hulp namens mij en mijn zoon.
mvg

Marlies :love:

Code:
        'Tijd kiezen
        Dim tijd As Integer
        tijd = InputBox("Hoe lang wilt u erover doen??" & vbCrLf & "Graag invullen in minuten", "De Tijd invullen graag")
        tijd = tijd * 60000
        ' start de tijd
        Timer1.Start()
        Timer1.Interval = tijd
        'willekeurige getallen aanmaken
        Dim WillekeurigGetal As New Random()
        'maximaal getal van rekensom
        Dim MaximaalGetal As Integer = 15
        'getal kiezen voor de loop
        Dim KiesEenGetal As New Random()
        'voor de antwoord van gebruiker
        Dim GebruikersInput As Integer
        ' voor een rekensom
        Dim Antwoord As Integer
        'voor de loop om te kiezen hoeveel sommen
        Dim gooien As Integer
        'rekenen hoe vaak sommen moet worden weergeven.
        Dim IntTeller As Integer
        'hoeveel sommen er gemaakt moet worden
        gooien = InputBox(" Hoeveel sommen wilt u? ", "Aantal Sommen?")
        'de loop
        For IntTeller = 1 To gooien
            'de willekeurige getallen laten maken
            Dim Getal1 As Integer = WillekeurigGetal.Next(1, MaximaalGetal)
            Dim Getal2 As Integer = WillekeurigGetal.Next(1, MaximaalGetal)
            'kiest een random som
            Select Case KiesEenGetal.Next(1, 5)
                ' de verschillende soorten sommen
                Case 1
                    'Optellen som
                    GebruikersInput = InputBox("Wat is " & Getal1 & " + " & Getal2 & "?")
                    Antwoord = (Getal1 + Getal2)
                    'bericht voor juist of onjuist
                    If GebruikersInput = Antwoord Then
                        MsgBox("Goed gedaan, " & GebruikersInput & " was inderdaad de oplossing. ")
                    Else
                        MsgBox("Dat klopt niet, het antwoord is " & Antwoord)
                    End If
                Case 2
                    'Aftrekken som (Zonder negatieve uitkomsten)
                    If Getal2 > Getal1 Then
                        GebruikersInput = InputBox("Wat is " & Getal2 & " - " & Getal1 & "?")
                        Antwoord = (Getal2 - Getal1)
                    Else
                        GebruikersInput = InputBox("Wat is " & Getal1 & " - " & Getal2 & "?")
                        Antwoord = (Getal1 - Getal2)
                        'bericht voor juist of onjuist
                        If GebruikersInput = Antwoord Then
                            MsgBox("Goed gedaan, " & GebruikersInput & " was inderdaad de oplossing. ")
                        Else
                            MsgBox("Dat klopt niet, het antwoord is " & Antwoord)
                        End If
                    End If
                Case 3
                    'Vermenigvuldigen som
                    GebruikersInput = InputBox("Wat is " & Getal1 & " x " & Getal2 & "?")
                    Antwoord = (Getal1 * Getal2)
                    'bericht voor juist of onjuist
                    If GebruikersInput = Antwoord Then
                        MsgBox("Goed gedaan, " & GebruikersInput & " was inderdaad de oplossing. ")
                    Else
                        MsgBox("Dat klopt niet, het antwoord is " & Antwoord)
                    End If
                Case 4
                    'Delen som
                    Antwoord = (Getal1 * Getal2)
                    GebruikersInput = InputBox("Wat is " & Antwoord & " / " & Getal2 & "?")
                    Antwoord = Getal1
                    'bericht voor juist of onjuist
                    If GebruikersInput = Antwoord Then
                        MsgBox("Goed gedaan, " & GebruikersInput & " was inderdaad de oplossing. ")
                    Else
                        MsgBox("Dat klopt niet, het antwoord is " & Antwoord)
                    End If
                Case Else
                    MsgBox("Fout!")
            End Select
        Next
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        'timer stoppen
        Timer1.Stop()
        'na timer.stop bericht weergeven
        MessageBox.Show(" Uw tijd is om!", "Helaas!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
    End Sub
End Class
 
Dat is wel een behoorlijke kluif die je hier vraagt.

Inputboxxen kan je volgens mij niet afsluiten als ze al open staan. Hij kan wel het programma stoppen als die timer is gestopt.

Ik heb het eens doorgenomen , maar om nu eerst te vragen hoe lang je wilt spelen en dan te vragen om hoeveel sommen hij wil maken is een beetje dubbelzinnig.

Het antwoord op je laatste vraag zullen alle gegevens moeten worden opgeslagen worden in een Array(). Deze kan alle gegevens (getal1,getal2,Antwoord en GebruikersInput) bewaren in zijn geheugen totdat het wordt afgesloten. Je kan het eventueel ook opslaan in een (tijdelijk) bestand als het er heeeel veeel zijn.

Ik heb er vandaag niet zoveel tijd voor. Ik ga van het weekend wel eens kijken of ik iets makkelijkers kan coden.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan