sk1rty Skrevet 29. september 2011 Del Skrevet 29. september 2011 (endret) Hei, Prøver å programmere en divisjonstabell ved hjelp av 2D matriser og for-løkker. Noen som ser hva jeg gjør feil? Målet er at jeg skal skrive ut en fin tabell med tall delt på 1-9 akkurat som en gangetabell. Hvis dere syns denne koden er ekkel å lese så kan dere se på linken under koden. Public Class Form1 Private divisjon(9, 9) As Double Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim tall1 As Double Dim tall2 As Double Dim ut As Double = 0 For tall1 = 1 To 9 For tall2 = 1 To 9 divisjon(tall1, tall2) = tall1 / tall2 Next tall2 Next tall1 For ut = 1 To 9 ListBox1.Items.Add(divisjon(ut, ut)) Next ut End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ListBox1.Items.Clear() End Sub End Class Link til koden formatert korrekt på copypastecode.com EDIT: har endret litt på koden, men fungerer fortsatt ikke. Endret 29. september 2011 av sk1rty Lenke til kommentar
GeirGrusom Skrevet 29. september 2011 Del Skrevet 29. september 2011 divisjon(tall1, tall2) = tall1 / tall2 & vbTab Hva gjør den & vbTab der? Lenke til kommentar
sk1rty Skrevet 29. september 2011 Forfatter Del Skrevet 29. september 2011 divisjon(tall1, tall2) = tall1 / tall2 & vbTab Hva gjør den & vbTab der? Den er selvfølgelig feilplassert. Skal stå på den utskriftsløkka lenger ned. Men koden fungerer like dårlig uansett... Lenke til kommentar
GeirGrusom Skrevet 29. september 2011 Del Skrevet 29. september 2011 Du vet du regner med flyttall, altså desimaltall? Er ikke sikker på om det er lov å bruke double som indeks til et array. Lenke til kommentar
sk1rty Skrevet 29. september 2011 Forfatter Del Skrevet 29. september 2011 Slik du tenker? Public Class Form1 Private divisjon(9, 9) As Integer Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim tall1 As Double Dim tall2 As Double Dim ut As Double For tall1 = 1 To 9 For tall2 = 1 To 9 divisjon(tall1, tall2) = tall1 / tall2 Next tall2 Next tall1 For ut = 1 To 9 ListBox1.Items.Add(divisjon(ut, ut) & vbTab) Next ut End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ListBox1.Items.Clear() End Sub End Class Lenke til kommentar
GeirGrusom Skrevet 29. september 2011 Del Skrevet 29. september 2011 [/code]Public Class Form1 Private divisjon(9, 9) As Double Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click For tall1 As Integer = 1 To 9 For tall2 As Integer = 1 To 9 divisjon(tall1, tall2) = CDbl(tall1) / CDbl(tall2) Next tall2 Next tall1 For ut As Integer = 1 To 9 ListBox1.Items.Add(CStr(divisjon(ut, ut)) & vbTab) Next ut End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ListBox1.Items.Clear() End Sub End Class[/code] Dersom desimaltall ut er ønskelig, hvis ikke: Public Class Form1 Private divisjon(9, 9) As Integer Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click For tall1 As Integer = 1 To 9 For tall2 As Integer = 1 To 9 divisjon(tall1, tall2) = tall1 \ tall2 Next tall2 Next tall1 For ut As Integer = 1 To 9 ListBox1.Items.Add(CStr(divisjon(ut, ut)) & vbTab) Next ut End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ListBox1.Items.Clear() End Sub End Class Lenke til kommentar
sk1rty Skrevet 29. september 2011 Forfatter Del Skrevet 29. september 2011 Med begge kodene dine får jeg akkurat samme som jeg har hatt siden jeg fikk problemer. Altså output med ni 1-tall nedover i listboksen. Lenke til kommentar
GeirGrusom Skrevet 29. september 2011 Del Skrevet 29. september 2011 Med begge kodene dine får jeg akkurat samme som jeg har hatt siden jeg fikk problemer. Altså output med ni 1-tall nedover i listboksen. Er det så rart da? Les ut løkken din en gang til Lenke til kommentar
sk1rty Skrevet 5. oktober 2011 Forfatter Del Skrevet 5. oktober 2011 Fant etter hvert ut at mye av koden var feil og hodet mitt ikke klarte å tenke klart. Kom frem til dette etter noen dager: Public Class Form1 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim rad, kolonne As Integer Dim i, j As Integer Dim tall As Single Dim tab As String Dim divisjon(8, 8) For rad = 0 To 8 For kolonne = 0 To 8 divisjon(rad, kolonne) = (rad + 1) / (kolonne + 1) Next kolonne Next rad tab = vbTab For i = 1 To 9 tab = tab & i & vbTab Next i ListBox1.Items.Add(tab) For i = 0 To 8 tab = i + 1 & ":" & vbTab For j = 0 To 8 tall = divisjon(i, j) tab = tab & Format(tall, "#0.00") & vbTab Next j ListBox1.Items.Add(tab) Next i End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ListBox1.Items.Clear() End Sub End Class Som ble temmelig bra Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå