Programmering visual basic, radiobutton

Status
Niet open voor verdere reacties.

CrazySoccer

Gebruiker
Lid geworden
1 nov 2013
Berichten
21
Ik heb volgende week examen van Technish programmeren. We hebben zowat de vraag al gekregen, maar omdat ik een 'noobje' ben, kan ik het even niet vinden.
Nu de opdracht is:

De vraag zal gelijkaardig zijn zoals de deze:

1. 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.


Tip: om het aantal selecties te beperken zou je ook kunnen gebruik maken van de ingebouwde funtion Math.Min waarvan je hieronder een voorbeeldje kan terugvinden…
Dim Kleinste As Double
Dim Getal1 As Double
Dim Getal2 As Double
Dim Getal3 As Double

Kleinste = Math.Min(Getal1, Getal2)
Kleinste = Math.Min(Kleinste, Getal3)

Let op; hier moet ik dus een checkbox bij invoegen, waar je een vinkje kan insteken. Stel ik vink dag 1 en 3 aan, dan moet hij dag 1 en 3 berekenen ?

Kan iemand me hierbij helpen ?

Ben hier ook nieuw trouwens, maar ik denk wel dat ik in de juist topic zit, als ik verkeerd zit, kunnen de mods het verplaatsen.

Bedankt alvast voor jullie hulp, ben jullie dankbaar!
 
Heb je hier iets aan?

Code:
Dim Getal1 As Double
Dim Getal2 As Double
Dim Getal3 As Double
Dim Kleinste As Double

If Checkbox1.Checked = False Then
  Getal1 = 0
Else
  Getal1 = Textbox1.Text
End If

If Checkbox2.Checked = False Then
  Getal2 = 0
Else
  Getal2 = Textbox2.Text
End If

If Checkbox3.Checked = False Then
  Getal3 = 0
Else
  Getal3 = Textbox1.Text
End If

Kleinste = Math.Min(Getal1, Getal2)
Kleinste = Math.Min(Kleinste, Getal3)
 
Laatst bewerkt:
Ik had er overheen gelezen dat je naar een oplossing in VBA zocht, de code die ik heb gegeven is VB. Met VBA kan ik je helaas niet helpen, hopelijk kan iemand anders je een oplossing aandragen.
 
Het moet gewoon werken in de windows form application, ja, jammer, maar toch bedankt dat je er eens naar gekeken hebt!

Als iemand anders deze oef kan oplossen? Gr
 
Het is toch een Windows Forms Application? Dan zou het namelijk moeten werken. Welke fouten krijg je te zien?

Wil je misschien dat ik iets voor je maak (in Visual Studio 2013) en dat je kijkt of het wat is?
 
Hey, ja, het zou handig zijn als jij het eens probeery optelossen, ik zal binnen een uur posten wat ik heb.

Gr
 
Ik ben er nu mee bezig, ik zal als ik klaar ben het programma uploaden naar mijn SkyDrive en de link naar de download hier vermelden.
 
Super, ben benieuwd wat je gaat hebben.
 
Laatst bewerkt door een moderator:
Verplaatst naar Visual Basic sectie.
 
Hey, ik heb 2010, dus kon het niet openen, maar ik heb eens naar je code gekeken en dat leek toch een beetje ingewikkeld. Ik heb maar 3 lessen gekregen en als ik nu met zoiets zou afkomen zou hij zeggen hoe ik dat gedaan heb.
Maar bon,

ik heb zelf de programma al geschreven ZONDER de checkbox ( waar je aanvinkt en waar het op het laatst dan niet meerekend, dat ontbreek ik nog) ik stuur je alvast de code en of je een idee hebt hoe je dat zou aanpakken.

Public Class frmMain


Private Sub btnBerekenen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBerekenen.Click
Dim Waarde1 As Double
Dim Waarde2 As Double
Dim Waarde3 As Double
Dim Waarde4 As Double
Dim Waarde5 As Double

Waarde1 = txtWaarde1.Text
Waarde2 = txtWaarde2.Text
Waarde3 = txtWaarde3.Text
Waarde4 = txtWaarde4.Text
Waarde5 = txtWaarde5.Text

Dim gemiddelde As Double
gemiddelde = berekenGemiddelde(Waarde1, Waarde2, Waarde3, Waarde4, Waarde5)

Dim min As Double
min = berekenMinimum(Waarde1, Waarde2, Waarde3, Waarde4, Waarde5)

Dim max As Double
max = berekenMaximum(Waarde1, Waarde2, Waarde3, Waarde4, Waarde5)

lblGemiddeldeResultaat.Text = gemiddelde
lblMinimumResultaat.Text = min
lblMaximumResultaat.Text = max

End Sub

Function berekenGemiddelde(ByVal getal1 As Double, ByVal getal2 As Double, ByVal getal3 As Double, ByVal getal4 As Double, ByVal getal5 As Double) As Double
Dim resultaat As Double
resultaat = (getal1 + getal2 + getal3 + getal4 + getal5) / 5
Return resultaat
End Function

Function berekenMinimum(ByVal getal1 As Double, ByVal getal2 As Double, ByVal getal3 As Double, ByVal getal4 As Double, ByVal getal5 As Double) As Double
Dim kleinste As Double
kleinste = Math.Min(getal1, getal2)
kleinste = Math.Min(kleinste, getal3)
kleinste = Math.Min(kleinste, getal4)
kleinste = Math.Min(kleinste, getal5)
Return kleinste
End Function

Function berekenMaximum(ByVal getal1 As Double, ByVal getal2 As Double, ByVal getal3 As Double, ByVal getal4 As Double, ByVal getal5 As Double) As Double
Dim grootste As Double
grootste = Math.Max(getal1, getal2)
grootste = Math.Max(grootste, getal3)
grootste = Math.Max(grootste, getal4)
grootste = Math.Max(grootste, getal5)
Return grootste
End Function



End Class

Nu moet er dus nog, naast elke dag, een checkbox of een radiobutton komen. Wanneer je op deze aanklikt, zal het op het einde van de programma niet bijgerekend worden. Dus dat is het enige wat er nog bij moet, voor de rest werkt mijn programma volledig ( zonder die checkbox of radiobutton.)

Groetjes!

Heb je hier iets aan?

Code:
Dim Getal1 As Double
Dim Getal2 As Double
Dim Getal3 As Double
Dim Kleinste As Double

If Checkbox1.Checked = False Then
  Getal1 = 0
Else
  Getal1 = Textbox1.Text
End If

If Checkbox2.Checked = False Then
  Getal2 = 0
Else
  Getal2 = Textbox2.Text
End If

If Checkbox3.Checked = False Then
  Getal3 = 0
Else
  Getal3 = Textbox1.Text
End If

Kleinste = Math.Min(Getal1, Getal2)
Kleinste = Math.Min(Kleinste, Getal3)



Als je dit gaat uitvoeren, zal hij altijd je minimum als 0 en dat is dus niet de bedoeling.
 
Laatst bewerkt:
Hmm, je zou zeggen dat versie 2013 toch wel tenminste tot versie 2010 benedenwaarts compatibel zou moeten zijn...

Wat het programma dat jij geschreven hebt betreft, dat ziet er ook netjes uit, de berekeningen aanroepen vanuit functies. Goed werk voor na drie lessen!

Nu moet er dus nog, naast elke dag, een checkbox of een radiobutton komen. Wanneer je op deze aanklikt, zal het op het einde van de programma niet bijgerekend worden.

Ik zou hier zo snel even geen makkelijke oplossing voor weten, in mijn versie van het programma deed ik dat door een 0 in te vullen voor de betreffende temperatu(u)r(en), maar ik besef nu dat je deze dan in feite toch meerekent.

Misschien dat je zelf een oplossing kan bedenken, ik zal er ook over na blijven denken. Succes!
 
Jup, gisteren even door mijn cursus gebladerd en was tot daar gekomen. Nuja, als je een 0 invult, komt er gewoon een 0 testaan bij de textbox wat niet mag.

Is er niet de mogelijkheid om het zo optelossen:
Wanneer de chk1 is aangevinkd dan is 1 diabled, waardoor het voor de rest in de programma niet bijrekend?
 
Laatst bewerkt door een moderator:
Hoi,

Ik heb het opgelost door een list te gebruiken:
[CPP] Dim Temperatuur As New List(Of Double)

If CheckBox1.Checked Then
Temperatuur.Add(TextBox1.Text)
End If

If CheckBox2.Checked Then
Temperatuur.Add(TextBox2.Text)
End If

If CheckBox3.Checked Then
Temperatuur.Add(TextBox3.Text)
End If

If CheckBox4.Checked Then
Temperatuur.Add(TextBox4.Text)
End If

If CheckBox5.Checked Then
Temperatuur.Add(TextBox5.Text)
End If

If Temperatuur.Count = 0 Then
MsgBox("None selected!")
Exit Sub
End If

Dim Min As Double = Temperatuur(0)
Dim Max As Double = Temperatuur(0)
Dim Average As Double = 0

For i As Integer = 0 To Temperatuur.Count - 1 Step 1
Min = Math.Min(Min, Temperatuur(i))
Max = Math.Max(Max, Temperatuur(i))
Average += Temperatuur(i)
Next

Average = Average / Temperatuur.Count

MsgBox("Average: " & Average & vbNewLine & "Max: " & Max & vbNewLine & "Min: " & Min)[/CPP]

Succes!
MartinJM
 
Het heeft mij een stuk geholpen, zeker en vast, maar je hebt er een msgbox bij toegevoegd.
Ik heb echter een toolbox, waar ik min max en gem heb staan. Het moet dus onder de naast die gegevens komen:

Knipsel.JPG
 
Laatst bewerkt door een moderator:
Hoi,

Ik heb de messagebox gedaan zodat je makkelijk kan zien hoe je de gegevens verder kan gebruiken.

Om de tekst in labels te krijgen gebruik je de text-property van de labels (uit de losse pols):
[CPP]Label1.Text = Average
Label2.Text = Max
Label3.Text = Min[/CPP]
Vervolgens haal je de messagebox eruit.

BTW: Je moet nog wel checken of het getal negatief is, dat heb ik niet toegevoegd in de code.

MartinJM
 
Jup, ziet er opgelost uit, nog een klein vraagje, hoe kan je het omgekeerd laten werken. Dus als je het aanvinkt, dat het niet werkt. Nu werkt het als je het aanvinkt.

If checkbox1.checked then ..., moet dat veranderen?

Dan is het eindelijk opgelost en ben bedank ik jullie ! :-)
 
Laatst bewerkt door een moderator:
@CrazySoccer Onnodige quotes verwijderd. Wanneer je direct reageert op een reactie is het niet nodig om dat bericht te quoten. Onnodig quoten heet dat, hetgeen niet gewenst is.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan