Archief - visual basic 2010 radio button

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

guitarfreak

Legacy Member
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 :confused:

alvast bedankt !

Recipe4hate

Legacy Member
de IF structuur zeker eens bekijken :-)
Voor je eerste vraag bijvoorbeeld: if(number >= 0) -> positief

guitarfreak

Legacy Member
Recipe4hate zei:
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 ! :)

Chickenlal

Legacy Member
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")

Recipe4hate

Legacy Member
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
}

guitarfreak

Legacy Member
q-ball_NBK zei:
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")

guitarfreak

Legacy Member
Recipe4hate zei:
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 ?

Chickenlal

Legacy Member
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.

guitarfreak

Legacy Member
q-ball_NBK zei:
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 ....

Recipe4hate

Legacy Member
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!

Chickenlal

Legacy Member
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

guitarfreak

Legacy Member
Recipe4hate zei:
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![/QUOTE]


[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]

guitarfreak

Legacy Member
Recipe4hate zei:
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![/QUOTE]


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

Recipe4hate

Legacy Member
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

[B]GemiddeldeResultaat = (dag1 + dag2 + dag3 + dag4 + dag5) / dag5[/B]
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.

m4rt1n0

Legacy Member
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 :p
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan