Thread: visual basic 2010 radio button
-
01-11-2013, 16:15 #1
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
-
-
01-11-2013, 17:00 #2Banned
- 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) -> positiefno votes
-
01-11-2013, 17:29 #3
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
-
01-11-2013, 18:00 #4Member
- 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: wrapzbeno votes
-
01-11-2013, 18:02 #5Banned
- 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
-
01-11-2013, 19:12 #6no votes
-
01-11-2013, 19:12 #7no votes
-
01-11-2013, 19:36 #8Member
- 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: wrapzbeno votes
-
01-11-2013, 19:45 #9
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
-
01-11-2013, 20:21 #10Banned
- 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
-
01-11-2013, 20:28 #11Member
- 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 ThenUsed to be: q-ball_NBK
Unieke kleur voor uw wagen? Car-wrapping is dé trend! Auto laten wrappen bij wrapz.be!
Facebook: wrapzbeno votes
-
02-11-2013, 13:54 #12
[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
-
02-11-2013, 14:24 #13
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 gemetenno votes
-
03-11-2013, 18:19 #14Banned
- Registered
- 13/05/06
- Location
- Hoeselt
- Posts
- 9,944
- iTrader
- 48 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/72
Hier zijn mijn opmerkingen:
Dit is gevaarlijk... Wat als de gebruiker iets anders dan een nummer ingeeft? Wat als de gebruiker een punt gebruikt ipv een komma etc...Code:dag1 = txtDag1.Text Dag2 = Txtdag2.Text Dag3 = Txtdag3.Text dag4 = txtDag4.Text dag5 = txtDag5.Text
Kijk eens naar de static methodes van double (zoals double.parse() en double.tryparse).
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:If dag1 < 0 Or Dag2 < 0 Or Dag3 < 0 Or dag4 < 0 Or dag5 < 0 Then MsgBox("negatieve waarde ") End If
Je berekening van het gemiddelde lijkt me niet correct? Gemiddelde = som van alle waardes / aantal waardes. Jij deelt door de waarde in dag5?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
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:
in de methode 'BerekenMaximum plaatst? Denk hier eens over na.Code:If RadioButton1.Checked = True Then dag1 = 0 Else dag1 = txtDag1.Text End If
no votes
-
05-11-2013, 14:35 #15Approved 9-lifer
- 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:
Zo kan je je iets doen ongeveer zo danCode:MeetDag : { Waarde: Double Negeren: Boolean }
En deze toevoegen aan een collectie van MeetDag Objecten.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);
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:
Minimum:Code:For Each meetDag As Meetdag in meetDagenCollection *If(!meetDag.negeren && meetDag.waarde < 0)* ErrMsg("fout etc..") Else //Doe uw berekening End If
Maximum: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
Gemiddelde: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
huiswerk == doneCode: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
.no votes

