Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  7 1382
Hei,

Jeg skal lage en todimensjonal divisjonstabell i Visual Basic, jeg skal ha to knapper som utfører 2 forskjellige prosedyrer:

1. Den første subprosedyren skal legge inn selve divisjonstabellen i en matrise.
2. Den andre subprosedyren skal hente ut hele tabellens innhold, og vise denne i en listeboks.

Her er koden:

Public Class Form1
Private ut As String
Private tall1(8), tall2(8) As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim rad As Integer

For rad = 0 To 8
tall1(rad) = (rad + 1)
Next

For rad = 0 To 8
tall2(rad) = (rad + 1)
Next rad
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

For rad = 0 To 8
ut = ""
For kolonne = 0 To 8
ut = (ut & tall1(rad) / tall2(kolonne) & vbTab)
Next kolonne
ListBox1.Items.Add(ut)
Next rad
End Sub
End Class

Jeg har problemer med å få redusert antallet desimaler til 2. Har prøvd uendelig mange forskjellige metoder, uten å få det til..

Håper noen kan hjelpe med dette!

Fikk forresten følgende hint: Det er ikke så fint med tall med mange desimaler: 0.3333333333…. Her får du litt
kodehjelp: TextBox1.Text = Format(8274.33333333, "0.00"
Har du prøvd
ListBox1.Items.Add(Format(ut,"0.00"))

Hvorfor lærer du VB istedenfor C# forresten?
Takk for svar.

Jeg har prøv det, men får bare 0.00 nedover i en kolonne da..

Det er ikke jeg som bestemmer innholdet i studiet dessverre.
Sist endret av xenosparx; 7. oktober 2011 kl. 16:14.
Ah Problemet ditt er at du har initiert ut som string
erstatt
Private ut As String
med
Private ut as Double

så vil alt fungere mye bedre


Var jeg deg ville jeg sett litt på C#, det er både enklere og mer brukbart i jobbsammenheng
Takk for nok et svar, har prøvd dette også, men får da problemer med andre deler av koden.
Andre tips?
ut = Format(ut & tall1(rad) / tall2(kolonne) & vbTab, "0.00")
Du har benyttet to endimensjonale tabeller, ikke en todimensjonal en. Jeg tror også du har misforstått litt hva det var meningen at de to prosedyrene skulle gjøre, eventuelt så har du rotet deg bort litt ^^,

Prosedyre 1 skal fylle opp en todimensjonal tabell med den lille divisjonstabellen, prosedyre to skal ta innholdet av denne tabellen og få det ut i en listbox. Divisjonstabellen skal altså kunne eksistere uavhengig av om den er blitt vist frem i listboxen.

At du deklarer divisjonstabellen som en privat variabel er en god start, da den skal benyttes av begge prosedyrene. Husk dog at Integer er synonymt med heltall, og du vil naturligvis ende opp med en del desimaltall om du skal lage en divisjonstabell.

Kode

 Private divisjonstabell(9, 9) As Double
Prosedyre 1. Her benyttes to nøstede løkker for å fylle tabellen med innhold. Merk at vi enda ikke vil gjøre noe med antall desimaler:

Kode

 Private Sub lagdivisjostabell()
        Dim rad, kolonne As Double

        For rad = 1 To 9
            For kolonne = 1 To 9
                divisjonstabell(rad, kolonne) = (rad / kolonne)
            Next kolonne
        Next rad

    End Sub
Prosedyre 2. Tar denne tabellen og slenger den inn i en listbox:


Kode

  
Private Sub slengeTabellenInnIListBox1()
        Dim ut As String

        For rad = 1 To 9
            ut = ""
            For kolonne = 1 To 9
                ut = ut & Format(divisjonstabell(rad, kolonne), "0.00") & vbTab
            Next kolonne
            ListBox1.Items.Add(ut)
        Next rad
    End Sub
Husk at du også har en veldig kjekk studieveileder du kan sende meldinger til på ItsLearning, om du lurer på noe.
Takk for tilbakemeldinger, fikk det til til slutt =)

*Var ikke klar over at vi hadde studieveiledere som hjalp oss med slik :P