-
Ethelate
-
- Berichten: 21113
- Geregistreerd: 02-10-01
Oke, bij informatica moeten wij nu programmmeren ... echt een ramp
Naja, met een boekje er bij, uitleg volgen is het best te doen en tot nu toe kwam ik er overal wel uit, maar nu moeten we zelf een programma schrijven *SLIK*
Iemand die verstand heeft van Visual basic?
Ik moet een programma krijgen dat de inhoud berekend....
- Code
Private Sub lstFiguur_Click()
'leest strR uit txtR.Text
'zet strR om naar r (Double)
'txtBoodschap.Text="Vul waarde voor r in en selecteer een figuur"
'declaraties
Dim r As Double
Dim pi As Double
Dim I As Double
Dim strR As String
Dim strFiguur As String
Dim strBoodschap As String
Dim strI As String
If IsNumeric(txtR.Text) Then
strR = txtR.Text
r = Val(strR)
pi = 3.1415927
If lstFiguur.Text = "bol" Then I = (4 / 3) * pi * r ^ 3 [u]= txtInhoud.Text[/u]
If lstFiguur.Text = "kubus" Then I = r ^ 3 [u]= txtInhoud.Text[/u]txtInhoud.Text = Str(I)
Else
TxtBoodschap.Text = "Verkeerde invoer."
Exit Sub
End If
End Sub
Private Sub List1_Click()
End Sub
Private Sub stop_Click()
End
End Sub
Private Sub txtInhoud_Change()
txtInhoud.Text = Str(I)
End Sub
Ik kan een getal invullen en kiezen tussen BOL of KUBUS*met List*, en dan start het programma dus, alleen hij geeft altijd 0
Als ik geen cijfer invul, geeft hij wel de melding Verkeerde invoer enzo...
het zit dus echt in de uitvoer/berekening...
Echt al vanalles geprobeert... hte onderstreepte heb ik dus nu als noodoplossing, voor het idee (als de leraar alleen de code controleert )
Maar het werkt dus niet...
Een reddende engel hier?
Wie kan me helpen?
Mijn mini’s & Equi Habitat in ontwikkeling volgen? @ethelate op Instagram
Gelukkig is mijn honger om te leren groter dan mijn ego - Mo Gawdet
-
leentje
-
- Berichten: 3822
- Geregistreerd: 02-06-02
Ik kan alleen maar programmeren in Java en TurboPascal en ben dus niet zo goed bekend met Visual Basic. Maar als hij wel ziet of je al dan niet een cijfer invoert (bij niet invoeren de foutmelding geeft), en je krijgt als resultaat nul, wil dit waarschijnlijk zeggen dat er iets fout gaat op het moment dat je de string met daarin de straal/zijde omzet naar de double straal/zijde
kijk dat dus even na, of die code volledig correct is enzo
Best friends are the ones that can see the hurt in your eyes, when everyone else is fooled by your smile.
-
BartVB
- Eigenaar
-
- Berichten: 41634
- Geregistreerd: 08-01-01
- Woonplaats: Arnhem
Wat als je:
r = Val(strR)
Vervangt door
r = strR.Text
?
IMO doet VB niet echt aan typing? Dus of je ergens nou een stuk tekst of een getal in stopt zou niet uit moeten maken, als je een string gaat vermenigvuldigen snapt ie als het goed is zelf dat hij de string als getal moet behandelen.
Maar goed, ik heb ooit 1x een VB project op de TU moeten maken, daarna noooooit meer. Brrr, onoverzichtelijk taaltje
Zorg er verder voor dat je bij dit soort problemen ergens laat zien wat er gebeurd, gooi de waarde van die 'strR' ergens heen enzo, gewoon om te kijken wat er wel/niet gebeurd.
ƃuılıǝɔ ǝɥʇ uo ƃuıɔuɐp ǝɹ,ǝʍ uǝɥʍ 'ƃuılǝǝɟ ɐ ʇɐɥʍ ɥo
"Als je niets te verbergen hebt, ben je een Ozosnelle paashaas" - Loesje
-
Ethelate
-
- Berichten: 21113
- Geregistreerd: 02-10-01
- Code
strR = txtR.Text
r = strR.Txt
krijg ik ene foutmelding...
Staat ook erg tegenstrijdig
Mijn mini’s & Equi Habitat in ontwikkeling volgen? @ethelate op Instagram
Gelukkig is mijn honger om te leren groter dan mijn ego - Mo Gawdet
-
Ethelate
-
- Berichten: 21113
- Geregistreerd: 02-10-01
ga die leraar dadelijk maar weer eens opzoeken...
Mijn mini’s & Equi Habitat in ontwikkeling volgen? @ethelate op Instagram
Gelukkig is mijn honger om te leren groter dan mijn ego - Mo Gawdet
-
Lielle
-
- Berichten: 66251
- Geregistreerd: 12-01-01
Ik ben geen VB programmeur (thank god!) maar de basisprincipes van programmeren zijn mij niet onbekend
Als je er niet uitkomt kun je debug messages inbouwen waarbij je steeds tussenwaarden laat uitprinten. In jouw geval zou ik het als volgt doen, maar let niet op de syntax, ik schrijf pseudocode want VB ken ik dus onvoldoende. Je moet het zelf even omzetten naar echte VB code. Verder heb ik de layout van je IF statement aangepast omdat het dan beter te lezen is (ook een goede gewoonte!). En terwijl ik dat laatste zit te doen zie ik de fout al Je bent een else en een paar keer endif vergeten Het voordeel van het laten inspringen van je code is dat je daar dus vanzelf achter komt. Probeer het nog eens zou ik zeggen.
Nog een paar opmerkingen:
- kun je Pi niet als een constante definieren in VB? Dat is nl veel logischer, de waarde van pi zal vast niet anders worden dan 3.1415
- ik heb wat toelichtend commentaar erbij gezet, goede gewoonte!
- r gebruik je als twee verschillende grootheden, de ene keer als de straal van een bol, de andere keer als de zijde van een kubus. Dat is niet mooi programmeren, en leidt tot behoorlijke verwarring. Verder zou ik niet I gebruiken maar Inhoud, duidelijker naam.
- ik neem aan dat je maar een deel van de sub hebt gekopieerd, anders definieer je namelijk een flink aantal variabelen die niet worden gebruikt.
Kortom bij mij zou het er zo uit zien (alleen gebruikte variabelen, inspringen, naamgeving, debug messages):
- Code
Private Sub lstFiguur_Click()
'leest strR uit txtR.Text
'zet strR om naar r (Double)
'berekent de inhoud van het gekozen lichaam
'declaraties
Dim straal As Double # straal van een bol
Dim zijde as Double # zijde van een kubus
Dim pi As Double # pi is constant getal
Dim Inhoud As Double # Inhoud van een lichaam
[color=red]# hier zou dus een heel stuk staan dat het getal en de het lichaam krijgt van de gebruiker[/color]
pi = 3.1415927
Print "constante waarde van pi is " + pi
If IsNumeric(txtR.Text)
Then
print "getalletje !!!"[/color]
If lstFiguur.Text = "bol"
Then
print ("dit is een bol")
Straal = Val(txtR.Text)
print "de straal is " + straal
Inhoud = (4 / 3) * pi * r ^ 3
print "de inhoud is " + inhoud
Else
If lstFiguur.Text = "kubus"
Then
print ("dit is een kubus")
zijde = Val(txtR.Text)
print "de zijde is " + zijde
I = r ^ 3
print "de inhoud is " + inhoud
Else
print ("een onbekende figuur")
Exit Sub
EndIf
EndIf
Else
TxtBoodschap.Text = "Verkeerde invoer."
End If
End Sub
Laatst bijgewerkt door
Lielle op 17-06-03 11:49, in het totaal 1 keer bewerkt
-
leentje
-
- Berichten: 3822
- Geregistreerd: 02-06-02
Lielle schreef:Je moet het zelf even omzetten naar echte VB code. Verder heb ik de layout van je IF statement aangepast omdat het dan beter te lezen is (ook een goede gewoonte!). En terwijl ik dat laatste zit te doen zie ik de fout al
Je bent een else en een paar keer endif vergeten
Daar had ik dus ook enkele vraagtekens bij, bij die IF statements, maar omdat ik VB niet ken heb ik daar maar niets over gezegd
Best friends are the ones that can see the hurt in your eyes, when everyone else is fooled by your smile.
Wie is er online
Gebruikers op dit forum: agesus, Anomien, Babootje, bamisalami, Bowo, carineken, chinnie, dierenfan, DPTomboy, esc, ferropaard, friezenfan2, gonniee, jitskenienke, KarinW86, Kashmino, Kimberley_, Lijsken, Liselot, lyanne_sanne, maaikemuis, maessie, Marjo, meintje, Mo_86, NadjaNadja, Nicollevs, ontherun, PetalBot, Roosch, ryukapple, Selina, sinnekinne, stella92, vilheide, VuurVleugels, Westhof, Winged, YvonneV en 70 bezoekers