Array probleem

Status
Niet open voor verdere reacties.

Bendy

Gebruiker
Lid geworden
18 dec 2007
Berichten
5
Hey
Ik ben dus een programma aan het proberen maken voor de omtrek van figuren te bereken. Nu zit ik vast bij de omtrek van een driehoek. Ik wil dus dat er mbv een teller 3 verschillende inputboxes na elkaar komen die vragen naar de lengte van elke zijde en dit vervolgens stockeren in een array en vanuit deze array, de som van de 3 zijde berekent.
Hier alvast een deel van mijn code:
Code:
ElseIf optOmtrekDriehoek.Checked = True Then
            teller = 0
            Do
                Do
                    antwoord2 = InputBox("Zijde van driehoek: ", "Omtrek Driehoek")
                    If IsNumeric(antwoord2) Then
                        getal2 = CType(antwoord2, Decimal)
                        ok = True
                    Else
                        MessageBox.Show("The ingave is geen getal", "Foutmelding", MessageBoxButtons.OK, MessageBoxIcon.Error)
                        ok = False
                    End If
                Loop Until ok
                teller += 1
            Loop Until teller = 3
            aWoorden(teller) += getal2
            omtrekDriehoek = Math.Round(getal2, 2)
            MessageBox.Show("De omtrek van de Driehoek is " & omtrekDriehoek.ToString & ".", "Omtrek Driehoek", MessageBoxButtons.OK, MessageBoxIcon.Information)
        End If

Alvast bedankt
 
Lijkt me redelijk oke. Zou zelf wel iets anders gedaan hebben (zie onder) en de toekenning aan aWoorden moet binnen de laatste loop, anders sla je maar 1 zijde op...
Code:
teller = 0
            For teller as integer = 1 to 3
                Do
                    sVolgorde as string = iif(teller=1,"eerste",iif(teller=2,"tweede","derde"))

                    antwoord2 = InputBox("Lengte " & sVolgorde & " zijde van driehoek: ", "Omtrek Driehoek")
                    If IsNumeric(antwoord2) Then
                        getal2 = CType(antwoord2, Decimal)
                        ok = True
                    Else
                        MessageBox.Show("The ingave is geen getal", "Foutmelding", MessageBoxButtons.OK, MessageBoxIcon.Error)
                        ok = False
                    End If
                Loop Until ok
                aWoorden(teller) += getal2
                omtrekDriehoek += Math.Round(getal2, 2)
            Next

            MessageBox.Show("De omtrek van de Driehoek is " & omtrekDriehoek.ToString & ".", "Omtrek Driehoek", MessageBoxButtons.OK, MessageBoxIcon.Information)
        End If
 
Ik krijg nog altijd een foutmelding bij
Code:
aWoorden(teller) += getal2
Ik kan 1 zijde ingeven maar dan komt er een foutmelding op
 
Hoe heb je aWoorden gedefinieerd en gedimensioneerd? Kun je ook die code plaatsen?
 
Ik had het gedefinieerd als private
Code:
Private aWoorden() as integer
Maar ondertussen heb ik deze "aWoorden(teller) += getal2" er gewoon tussenuit gelaten dus zonder array en nu lukt het wel.
Nu heb ik wel een nieuw probleem, nu zou ik in plaats van de omtrek ook de oppervlakte willen bereken. Ik heb al geprobeerd de plus in onderstaande code te vervangen door een maal maar dat blijkt niet te werken.
Code:
oppervlakteDriehoek += math.round(getal2,2)
En dit is wat meer van de code
Code:
For teller = 1 To 3
                Do
                    sVolgorde = IIf(teller = 1, "eerste", IIf(teller = 2, "tweede", "derde"))

                    antwoord = InputBox("Lengte " & sVolgorde & " zijde van driehoek: ", "Omtrek Driehoek")
                    If IsNumeric(antwoord) Then
                        getal = CType(antwoord, Decimal)
                        ok = True
                    Else
                        MessageBox.Show("The ingave is geen getal", "Foutmelding", MessageBoxButtons.OK, MessageBoxIcon.Error)
                        ok = False
                    End If
                Loop Until ok
                omtrekDriehoek += Math.Round(getal, 2)
            Next
            MessageBox.Show("De omtrek van de Driehoek is " & omtrekDriehoek.ToString & ".", "Omtrek Driehoek", MessageBoxButtons.OK, MessageBoxIcon.Information)
Toch al bedankt voor je hulp
 
Laatst bewerkt:
Als je een array wilt gebruiken, dan moet je die wel dimensioneren voor het aantal getallen dat je erin wilt stoppen. Bijvoorbeeld voor drie getallen:
Code:
redim  aWoorden(0 to 2)
Let op: vaak is een array 'null based' d.w.z. dat aWoorden(0) al de eerste waarde bevat.

Wat is je code om het oppervlak te berekenen? Die zie ik nl. niet staan...
 
Ooh bedankt voor dat array probleem.
Ja ik heb geen formule voor oppervlakte berekening erin staan omdat ik totaal geen idee heb hoe ik die moet gaan noteren als ik de waarden men in inputbox invoeg. Maar het zou (basis * hoogte) \ 2 moeten zijn.
Code:
ElseIf optOppervlakteDriehoek.Checked = True Then
            For teller = 1 To 2
                Do
                    sVolgorde = IIf(teller = 1, "basis", "hoogte")

                    antwoord = InputBox("Lengte " & sVolgorde & " van driehoek: ", "Omtrek Driehoek")
                    If IsNumeric(antwoord) Then
                        getal = CType(antwoord, Decimal)
                        ok = True
                    Else
                        MessageBox.Show("The ingave is geen getal", "Foutmelding", MessageBoxButtons.OK, MessageBoxIcon.Error)
                        ok = False
                    End If
                Loop Until ok
                oppervlakteDriehoek *= Math.Round(getal, 2)
            Next
            MessageBox.Show("De omtrek van de Driehoek is " & oppervlakteDriehoek.ToString & ".", "Omtrek Driehoek", MessageBoxButtons.OK, MessageBoxIcon.Information)
 
Als je het in een loop wilt doen dan zou ik het als volgt programmeren:

Code:
ElseIf optOppervlakteDriehoek.Checked = True Then
            dim aWaarden(0 to 1) as single
            For teller = 1 To 2
                Do
                    sVolgorde = IIf(teller = 1, "basis", "hoogte")

                    antwoord = InputBox("Geef de " & sVolgorde & " op van driehoek: ", "Berekening oppervlakte Driehoek")
                    If IsNumeric(antwoord) Then
                        getal = CType(antwoord, Decimal)
                        ok = True
                    Else
                        MessageBox.Show("The ingave is geen getal", "Foutmelding", MessageBoxButtons.OK, MessageBoxIcon.Error)
                        ok = False
                    End If
                Loop Until ok
                aWaarden(teller-1) = getal
            Next
            oppervlakteDriehoek = Math.Round(aWaarde(0)*aWaarde(1)/2, 2)
            MessageBox.Show("Het oppervlakte van de driehoek is " & oppervlakteDriehoek.ToString & ".", "Oppervlakte Driehoek", MessageBoxButtons.OK, MessageBoxIcon.Information)
 
Tip: probeer eens de code die je vaker gebruikt, iets algemener te maken waardoor je die code kan hergebruiken in andere delen van je code.

Hint: Je gebruikt bijna dezelfde lus voor het berekenen van de omtrek en het oppervlak van de driehoek...
 
Ok ik zal het wat proberen inkorten
Bedankt voor je hulp, het werkt nu :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan