1. #1

    Registered
    20/11/11
    Location
    zele
    Posts
    21
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/0

    visual basic 2010 radio button

    hey,

    ik moet een programma schrijven als volgt,
    Een bedrijf laat een werknemer iedere werkdag (vijf dagen) om 12 uur de temperatuur ingeven van een reactorvat zonder scheurtjes. Voorzie dus vijf TextBoxen zodat een gebruiker vijf getallen kan ingeven. Maak een functie die de gemiddelde temperatuur uitrekent en een functie die de minimum en maximum temperatuur uitrekent. Maak hiervoor in eerste instantie gebruik van selecties. Toon alle berekende waarden ook overzichtelijk aan de gebruiker. Zorg er ook voor dat de gebruiker geen negatieve waarden kan invoeren, Anders moet hij opnieuw kunnen proberen.

    dit is zo goed als gelukt, nu is mijn vraag
    1) hoe moet ik er voor zorgen dat er geen negatieve waarden kunnen ingevoerd worden
    2) stel je voor dat op dag2 niet kan gemeten worden omdat er iets mis is dit moet ik met een radio button aanklikken hoe moet dit dat wat is de code ? dus hij telt dag 2 niet mee maar geeft de me geliddelde, max , en min van de 4 dagen

    alvast bedankt !
    no votes  

  2. #2

    Registered
    13/05/06
    Location
    Hoeselt
    Posts
    9,944
    iTrader
    48 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/72
    de IF structuur zeker eens bekijken :-)
    Voor je eerste vraag bijvoorbeeld: if(number >= 0) -> positief
    no votes  

  3. #3

    Registered
    20/11/11
    Location
    zele
    Posts
    21
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Quote Originally Posted by Recipe4hate View Post
    This quote is hidden because you are ignoring this member. Show
    de IF structuur zeker eens bekijken :-)
    Voor je eerste vraag bijvoorbeeld: if(number >= 0) -> positief
    het is me gelukt door
    If dag1 < 0 Then
    MsgBox("negatieve waarde ")
    ElseIf dag2 < 0 Then
    MsgBox("negatieve waarde")
    ElseIf dag3 < 0 Then
    MsgBox("negatieve waarde")
    ElseIf dag4 < 0 Then
    MsgBox(" negatieve waarde")
    ElseIf dag5 < 0 Then
    MsgBox("negatieve waarde")


    End If

    maar het voert het uit na da het zegt negatieve waarde hoe zorg je er voor da hij daar niet verder gaat ? en merci voor u reactie !
    no votes  

  4. #4
    Chickenlal's Avatar
    Registered
    17/07/02
    Location
    Blankenberge
    Posts
    13,105
    iTrader
    53 (100%)
    Mentioned
    3 Post(s)
    Reputation
    0/49
    ge zult die controle moeten doen dan voor alles uitgevoerd wordt hé.

    Dus vanaf ge op de bereken knop drukt moet eerst controle gedaan worden.

    Dan kan je zeggen bijvboorbeeld (ik ken de vb syntax niet):

    bool check;

    if dag 1 < 0 then
    check = false
    else if dag 2 < 0 then
    check = false
    ....


    En dan voor ge uw al uw andere berekeningen doet zet ge
    if check then
    -bereken min
    -bereken max
    -bereken avg
    else
    MsgBox("negatieve waarde")
    Used to be: q-ball_NBK

    Unieke kleur voor uw wagen? Car-wrapping is dé trend! Auto laten wrappen bij wrapz.be!
    Facebook: wrapzbe
    no votes  

  5. #5

    Registered
    13/05/06
    Location
    Hoeselt
    Posts
    9,944
    iTrader
    48 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/72
    Of simpeler (pseudo-code wel):
    if(var1 < 0 or var2 < 0 or var2 < 0 ...)
    {
    //Alert user -> number below zero
    }
    else
    {
    continue with your code here
    }
    no votes  

  6. #6

    Registered
    20/11/11
    Location
    zele
    Posts
    21
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Quote Originally Posted by q-ball_NBK View Post
    This quote is hidden because you are ignoring this member. Show
    ge zult die controle moeten doen dan voor alles uitgevoerd wordt hé.

    Dus vanaf ge op de bereken knop drukt moet eerst controle gedaan worden.

    Dan kan je zeggen bijvboorbeeld (ik ken de vb syntax niet):

    bool check;

    if dag 1 < 0 then
    check = false
    else if dag 2 < 0 then
    check = false
    ....


    weet je hoe je vraag 2 moet doen ? :/
    En dan voor ge uw al uw andere berekeningen doet zet ge
    if check then
    -bereken min
    -bereken max
    -bereken avg
    else
    MsgBox("negatieve waarde")
    no votes  

  7. #7

    Registered
    20/11/11
    Location
    zele
    Posts
    21
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Quote Originally Posted by Recipe4hate View Post
    This quote is hidden because you are ignoring this member. Show
    Of simpeler (pseudo-code wel):
    if(var1 < 0 or var2 < 0 or var2 < 0 ...)
    {
    //Alert user -> number below zero
    }
    else
    {
    continue with your code here
    }

    weet je hoe je vraag 2 moet doen ?
    no votes  

  8. #8
    Chickenlal's Avatar
    Registered
    17/07/02
    Location
    Blankenberge
    Posts
    13,105
    iTrader
    53 (100%)
    Mentioned
    3 Post(s)
    Reputation
    0/49
    tja dan moet je eens in de API gaan kijken welke methodes er beschikbaar zijn voor radiobuttons hé.

    In C# kan je bijvoorbeeld doen radiobutton.isChecked, op basis van deze return true/false kan je dan gaan zeggen dat die dag niet moet meetellen, das gewoon een extra stukje controle toevoegen dan.
    Used to be: q-ball_NBK

    Unieke kleur voor uw wagen? Car-wrapping is dé trend! Auto laten wrappen bij wrapz.be!
    Facebook: wrapzbe
    no votes  

  9. #9

    Registered
    20/11/11
    Location
    zele
    Posts
    21
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Quote Originally Posted by q-ball_NBK View Post
    This quote is hidden because you are ignoring this member. Show
    tja dan moet je eens in de API gaan kijken welke methodes er beschikbaar zijn voor radiobuttons hé.

    In C# kan je bijvoorbeeld doen radiobutton.isChecked, op basis van deze return true/false kan je dan gaan zeggen dat die dag niet moet meetellen, das gewoon een extra stukje controle toevoegen dan.
    het is echt nog basic vb da ik zie geen api das voor later
    ik heb deze code
    If RadioButton1.Checked = True Then
    dag1 = 0

    Else
    dag1 = txtDag1.Text

    End If

    If RadioButton2.Checked = True Then
    dag2 = 0

    Else
    dag1 = Txtdag2.Text

    End If

    If RadioButton3.Checked = True Then
    dag3 = 0

    Else
    dag3 = Txtdag3.Text

    End If

    If RadioButton4.Checked = True Then
    dag4 = 0

    Else
    dag4 = txtDag4.Text

    End If

    If RadioButton5.Checked = True Then
    dag5 = 0

    Else
    dag5 = txtDag5.Text
    End If


    maar hij doet het dus ni en ik krijg geen foutmeldingen dus als ik rbt 2 kies en niks invul ( er staat wel een nul) dan zegt het minimum 0 wat niet klopt ....
    no votes  

  10. #10

    Registered
    13/05/06
    Location
    Hoeselt
    Posts
    9,944
    iTrader
    48 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/72
    Post de rest van je code ook eens (in een [code] tag)?
    Ik ga je de oplossing niet geven, aangezien dit duidelijk huiswerk is, maar kan je wel verder helpen.
    Ik snap je laatste zinnetjes ook niet echt, probeer duidelijk je probleem voor te stellen en gebruik aub leestekens.

    Thanks!
    no votes  

  11. #11
    Chickenlal's Avatar
    Registered
    17/07/02
    Location
    Blankenberge
    Posts
    13,105
    iTrader
    53 (100%)
    Mentioned
    3 Post(s)
    Reputation
    0/49
    RadioButton Class (System.Web.UI.WebControls)

    Hier kan je alles zien wat je met een radiobutton kan doen. Zoals je ziet heeft een radio button een Checked property

    Checked Gets or sets a value indicating whether the CheckBox control is checked. (Inherited from CheckBox.)


    dus dan dkan je mijnRadiobutton.Checked gebruiken, dit zal true of false weergeven. Je kan hier dus met een IF Statement controle op uitvoeren


    btw, "= true" moet je er niet speciaal bijzetten als je een bool bekijkt in een IF-statement.

    If RadioButton1.Checked = True Then

    Kan je schrijven als

    If RadioButton1.Checked Then
    Used to be: q-ball_NBK

    Unieke kleur voor uw wagen? Car-wrapping is dé trend! Auto laten wrappen bij wrapz.be!
    Facebook: wrapzbe
    no votes  

  12. #12

    Registered
    20/11/11
    Location
    zele
    Posts
    21
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Quote Originally Posted by Recipe4hate View Post
    This quote is hidden because you are ignoring this member. Show
    Post de rest van je code ook eens (in een [code] tag)?
    Ik ga je de oplossing niet geven, aangezien dit duidelijk huiswerk is, maar kan je wel verder helpen.
    Ik snap je laatste zinnetjes ook niet echt, probeer duidelijk je probleem voor te stellen en gebruik aub leestekens.

    Thanks!

    [code] Public Class frmReactor

    Private Sub btnBereken_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBereken.Click
    Dim dag1 As Double
    Dim Dag2 As Double
    Dim Dag3 As Double
    Dim dag4 As Double
    Dim dag5 As Double



    dag1 = txtDag1.Text
    Dag2 = Txtdag2.Text
    Dag3 = Txtdag3.Text
    dag4 = txtDag4.Text
    dag5 = txtDag5.Text


    If dag1 < 0 Or Dag2 < 0 Or Dag3 < 0 Or dag4 < 0 Or dag5 < 0 Then
    MsgBox("negatieve waarde ")


    End If

    Dim gemiddelde As Double
    gemiddelde = BerekenGemiddelde(dag1, Dag2, Dag3, dag4, dag5)

    Dim maximum As Double
    maximum = BerekenMaximum(dag1, Dag2, Dag3, dag4, dag5)

    Dim Minimum As Double
    Minimum = BerekenMinimum(dag1, Dag2, Dag3, dag4, dag5)

    lblGemiddeldeResultaat.Text = gemiddelde
    LblMaximumResultaat.Text = maximum
    LblMinimumResultaat.Text = Minimum

    End Sub

    Function BerekenGemiddelde(ByVal dag1 As Double, ByVal dag2 As Double, ByVal dag3 As Double, ByVal dag4 As Double, ByVal dag5 As Double) As Double
    Dim GemiddeldeResultaat As Double

    GemiddeldeResultaat = (dag1 + dag2 + dag3 + dag4 + dag5) / dag5
    Return GemiddeldeResultaat

    End Function

    Function BerekenMaximum(ByVal dag1 As Double, ByVal dag2 As Double, ByVal dag3 As Double, ByVal dag4 As Double, ByVal dag5 As Double) As Double
    Dim Grootste As Double


    If RadioButton1.Checked = True Then
    dag1 = 0

    Else
    dag1 = txtDag1.Text

    End If

    If RadioButton2.Checked = True Then
    dag2 = 0

    Else
    dag1 = Txtdag2.Text

    End If

    If RadioButton3.Checked = True Then
    dag3 = 0

    Else
    dag3 = Txtdag3.Text

    End If

    If RadioButton4.Checked = True Then
    dag4 = 0

    Else
    dag4 = txtDag4.Text

    End If

    If RadioButton5.Checked = True Then
    dag5 = 0

    Else
    dag5 = txtDag5.Text
    End If



    Grootste = Math.Max(dag1, dag2)
    Grootste = Math.Max(Grootste, dag3)
    Grootste = Math.Max(Grootste, dag4)
    Grootste = Math.Max(Grootste, dag5)
    Return Grootste

    End Function

    Function BerekenMinimum(ByVal dag1 As Double, ByVal dag2 As Double, ByVal dag3 As Double, ByVal dag4 As Double, ByVal dag5 As Double) As Double
    Dim kleinste As Double


    kleinste = Math.Min(dag1, dag2)
    kleinste = Math.Min(kleinste, dag3)
    kleinste = Math.Min(kleinste, dag4)
    kleinste = Math.Min(kleinste, dag5)
    Return kleinste

    End Function
    End Class[code]
    no votes  

  13. #13

    Registered
    20/11/11
    Location
    zele
    Posts
    21
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Quote Originally Posted by Recipe4hate View Post
    This quote is hidden because you are ignoring this member. Show
    Post de rest van je code ook eens (in een [code] tag)?
    Ik ga je de oplossing niet geven, aangezien dit duidelijk huiswerk is, maar kan je wel verder helpen.
    Ik snap je laatste zinnetjes ook niet echt, probeer duidelijk je probleem voor te stellen en gebruik aub leestekens.

    Thanks!

    dus als men een rbt indrukt gaat men er van uit dat het temperatuur meting die dag niet is gebeurd.
    vb --> dag2 wordt niet gemeten, je vult er niks in dan zou het programma niet het gemiddelde, max,min van de 5 dagen bereken maar van de 4 dagen want er is op dag 2 niet gemeten
    no votes  

  14. #14

    Registered
    13/05/06
    Location
    Hoeselt
    Posts
    9,944
    iTrader
    48 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/72
    Hier zijn mijn opmerkingen:

    Code:
    dag1 = txtDag1.Text
    Dag2 = Txtdag2.Text
    Dag3 = Txtdag3.Text
    dag4 = txtDag4.Text
    dag5 = txtDag5.Text
    Dit is gevaarlijk... Wat als de gebruiker iets anders dan een nummer ingeeft? Wat als de gebruiker een punt gebruikt ipv een komma etc...
    Kijk eens naar de static methodes van double (zoals double.parse() en double.tryparse).

    Code:
    If dag1 < 0 Or Dag2 < 0 Or Dag3 < 0 Or dag4 < 0 Or dag5 < 0 Then
    MsgBox("negatieve waarde ")
    
    
    End If
    Hmm, bij deze block ga je op zoek naar waardes die negatief zijn en je meldt dit aan de gebruiker, maar verder doe je hier niets mee? Je gaat nog steeds de berekeningen uitvoeren. Ik zou hier zeker een 'return' statement uitvoeren of een boolean bijhouden die je in verdere code gaat branchen.

    Code:
    Function BerekenGemiddelde(ByVal dag1 As Double, ByVal dag2 As Double, ByVal dag3 As Double, ByVal dag4 As Double, ByVal dag5 As Double) As Double
    Dim GemiddeldeResultaat As Double
    
    GemiddeldeResultaat = (dag1 + dag2 + dag3 + dag4 + dag5) / dag5
    Return GemiddeldeResultaat
    Je berekening van het gemiddelde lijkt me niet correct? Gemiddelde = som van alle waardes / aantal waardes. Jij deelt door de waarde in dag5?
    Hier zou ik als input parameters gebruik maken van ofwel het params type (voorbeeld array van double) of een collection (zoals een List). Op deze manier 'forceer' je 5 getallen. Wat als er plots op zaterdag gemeten moet worden? En wat (zoals in je opdracht) als er een dag tussenuit valt?
    Je gaat trouwens een extra variabele declareren in die methode, gewoon om als returnwaarde terug te geven... Simpeler is om dat direct je berekeningen te returnen, ipv een tussenvariabele...

    Ik snap ook niet waarom je code als:
    Code:
    If RadioButton1.Checked = True Then
    dag1 = 0
    
    Else
    dag1 = txtDag1.Text
    
    End If
    in de methode 'BerekenMaximum plaatst? Denk hier eens over na.
    no votes  

  15. #15
    m4rt1n0's Avatar
    Registered
    19/12/02
    Location
    Wuustwezel
    Posts
    2,397
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Ik zou precies eerder opteren voor zelf een object te maken dat een "MeetDag" representeert.

    Logica hier achter is dat elke Meetdag hetzelfde is, elke meetdag heeft een waarde (al dan niet positief) en elke meetdag kan genegeerd worden bij een fout.

    Dus moet je proberen iets te voorzien wat dit ding in het echte leven kan vertalen naar iets in de code. Altijd proberen om te coderen naar je "perceptie van de werkelijkheid".

    Iets in de pseudoTrend van:

    Code:
    MeetDag : {
    Waarde: Double
    Negeren: Boolean
    }
    Zo kan je je iets doen ongeveer zo dan

    Code:
    meetDag1 = new MeetDag(Double.parseDouble(txtDag1), RadioButton1.Checked);
    meetDag2 = new MeetDag(Double.parseDouble(txtDag1), RadioButton1.Checked);
    meetDag3 = new MeetDag(Double.parseDouble(txtDag1), RadioButton1.Checked);
    meetDag4 = new MeetDag(Double.parseDouble(txtDag1), RadioButton1.Checked);
    meetDag5 = new MeetDag(Double.parseDouble(txtDag1), RadioButton1.Checked);
    En deze toevoegen aan een collectie van MeetDag Objecten.

    Dan kan je voor je minium en maximum je grote (en vaak dubbele) code wat verkleinen.
    En je validatie van je velden ook. Als je aan je rekening begint kan je een check doen of 1 van de waarden die niet genegeerd werden negatief is.

    Validatie:
    Code:
    For Each meetDag As Meetdag in meetDagenCollection
    *If(!meetDag.negeren && meetDag.waarde < 0)*
       ErrMsg("fout etc..")
     Else 
      //Doe uw berekening
    End If
    Minimum:
    Code:
    Long minimum = int32.MaxValue (of int64.MaxValue)
    For Each meetDag As Meetdag in meetDagenCollection
     If(!meetDag.negeren) 
       minimum = Math.min(minimum, meetDag.waarde);
     End If
    Maximum:
    Code:
    Long maximum = int32.MinValue (of int64.MinValue)
    For Each meetDag As Meetdag in meetDagenCollection
     If(!meetDag.negeren) 
       maximum = Math.max(maximum, meetDag.waarde);
     End If
    Gemiddelde:
    Code:
    Long som = 0;
    Int deler = 0;
    For Each meetDag As Meetdag in meetDagenCollection
     If(!meetDag.negeren)
    som = som + meetDag.waarde
    deler++;
    End if
    End For
    
    return som / deler
    huiswerk == done
    .
    no votes  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in