Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: Array-probleema

Sivun loppuun

Firia [13.12.2009 12:39:07]

#

Hei!

Tarkoitus olisi saada aikaan ohjelma, joka sisältää kaksi taulukkoa. Toisessa on tuotteiden nimiä ja toisessa niiden hinnat.

Olen tehnyt taulukon samaan tyyliin kuin alla oleva esimerkki

'kahden taulukon akkostus, "nimet pelinumeron mukaisesti"
        Joukkue(0) = "Simo" : Joukkue(1) = "Matti" : Joukkue(2) = "Litti"
        Dim Pelinumero() As Integer = {12, 16, 10}

Ohjelma kysyy InputBoxin avulla, minkä tuotteet hintaa käyttäjä haluaa etsiä. Ongelmana on, miten saan etsittyä tuotteelle oikean hinnan toisesta taulukosta?

vehkis91 [13.12.2009 16:32:49]

#

Huom tekemäni esimerkit on tehty VB.nettiä käyttäen!!

Tuossatapauksessa näin

Dim luku As Integer

luku = InputBox("Anna luku:");

MsgBox("Henkilön " & joukkue(luku) & " pelinumero on " & Pelinumero(luku))

' Jos luku muuttujan arvo on 1, niin ohjelman pitäisi tulostaa: "Henkilön Matti pelinumero on 16"

Huom en ole testannut koodia!!!

Itse tosin loisin oman luokan, joka sisältää tuotteen nimen ja hinnan ja lisäisin olioina yhteen taulukkoon ne.

Tässä vielä esimerkki tuosta tapauksesta, vaatii yhden buttonin formille

Option Explicit On

Public Structure Tuote
    'Jäsenet
    Public Nimi As String
    Public id As Integer
    Public Hinta As Double
End Structure


Public Class Form1

    '3 tuotetta sisältävä taulukko
    Dim tuotteet(3) As Tuote


    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Laitetaan tuotteille arvot
        tuotteet(0).id = 1
        tuotteet(0).Nimi = "CD-levy"
        tuotteet(0).Hinta = 10

        tuotteet(1).id = 2
        tuotteet(1).Nimi = "DVD-levy"
        tuotteet(1).Hinta = 13

        tuotteet(2).id = 3
        tuotteet(2).Nimi = "BluRay-levy"
        tuotteet(2).Hinta = 20

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim luku As Integer

        luku = InputBox("Tuotteen numero: ")

        MsgBox("Tuotteen " & tuotteet(luku).Nimi & " id on " & tuotteet(luku).id & " ja Hinta on " & tuotteet(luku).Hinta)

    End Sub
End Class

Metabolix [13.12.2009 17:02:38]

#

Jos on tarkoitus etsiä esimerkiksi nimen mukaan, käy for-silmukalla listaa läpi ja oikean arvon kohdalla ota indeksi talteen ja lopeta silmukka.

kohta = -1
For i As Integer = alku To loppu Do
    If Joukkue(i) = haettava Then
        kohta = i
        Exit For
    End If
Next i
If kohta = -1 Then
    ' Ei löytynyt!
Else
    ' Joukkue(kohta), Pelinumero(kohta)
End If

Firia [13.12.2009 21:15:23]

#

Kiitos, täytyy kokeilla kummin saan toimimaan helpommin!

vehkis91 [13.12.2009 21:20:03]

#

Etuna tuossa structuren käytössä on se, että et tarvitse kuin yhden taulukon ja dataa on helpompi lisätä myöhemmin, lisäämällä vain uuden muuttujan struktuuriin.

groovyb [15.12.2009 16:20:31]

#

http://www.beansoftware.com/ASP.NET-Tutorials/Linq-Objects-Collections-Arrays.aspx

Linq:iä kehiin

Firia [15.12.2009 19:28:25]

#

Käytän VB2008:aa, en VB.Nettiä...
Kiitos Vehkis ja Metabolix, molemmilla tavoilla toimii hyvin!

vehkis91 [15.12.2009 19:46:37]

#

VB2008 = vb.net. Niin ainakin olen ymmärtänyt.

groovyb [15.12.2009 20:51:44]

#

kyllä käytät Firia .net frameworkkia vaikka et ehkä sitä tiedä :)


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta