Helpmij.nl
Helpmij.nl
Helpmij.nl
Steun Helpmij.nl! Klik hier     Computerprobleem? Klik hier!

Quote

Pagina 1 van 5 1 2 3 ... LaatsteLaatste
Weergeven resultaten 1 tot 20 van 96

Onderwerp: Cijfers sorteren in VB.net

  • Vraag is opgelost
  1. #1
    Senior Member Scandax's avatar
    Geregistreerd
    1 februari 2011
    Locatie
    Roermond
    Afstand tot server
    ±103 km

    Cijfers sorteren in VB.net

    Beste leden,

    Voor school moet ik een programmaatje schrijven dat cijfers op volgorde zet van groot naar klein. Deze cijfers zullen na het sorteren, weer gegeven moeten worden in een tabel. Ik heb gelezen dat je cijfers kunt sorteren met een array.sort functie. Hieronder mijn begin van de array:

    Code:
    Public Class Form1
    
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            Dim getallen As Integer() = {3, 6, 5, 9, 1} // in plaats van deze door mij ingevulde getallen, moet de gebruiker de getallen zelf kunnen invullen
            Array.Sort(getallen)
    
        End Sub
    End Class
    Nu vraag ik me alleen af hoe ik zoiets in een tabel moet laten weergeven? Heb zelf al een aantal kleine dingetjes gedaan in VB.net, maar cijfers sorteren staat niet in dat rijtje.

    Als extra opdracht bij deze opdracht moet je dit ook met letters doen, maar dat is nu nog niet aan de orde. Als ik dit eenmaal snap, zal ik dat met de letters ook wel snappen
    Heb zelf ook al gezocht, maar het probleem ligt 'm bij het weergeven in een tabel.

    Bij voorbaat dank voor alle hulp,
    Scandax
    Laatst aangepast door Scandax : 19 maart 2012 om 15:55 Reden: Spelfout :P
    Met de vriendelijke groeten van Scandax
    "Do not worry about your difficulties in Mathematics. I can assure you mine are still greater." - Albert Einstein
    Twitter: @TheEijk

  2. #2
    Giga Senior JoZ1's avatar
    Geregistreerd
    17 december 2010
    Locatie
    Nieuwegein
    Afstand tot server
    ±90 km
    In een tabel weergeven? Hoe moet die tabel eruit zien dan?




    "Microsoft is not the answer. Microsoft is the question. NO is the answer."- E. Naggum

  3. #3
    Senior Member MartinJM's avatar
    Geregistreerd
    9 november 2008
    Locatie
    A'dam
    Als je het in een listbox wilt zetten dan kan dat zo:
    Code:
            Dim getallen As Integer() = {3, 6, 5, 9, 1}
            Array.Sort(getallen)
    
            For Each i As Integer In getallen
                ListBox1.Items.Add(i)
            Next
    Als je het in een listview wil zetten kan dat zo:
    Code:
            Dim getallen As Integer() = {3, 6, 5, 9, 1}
            Array.Sort(getallen)
    
            For Each i As Integer In getallen
                ListView1.Items.Add(i)
            Next

    Dan over de letters:
    Ieder teken heeft een ASCII code: http://nl.wikipedia.org/wiki/ASCII_%28tekenset%29
    Zoals je in die link kan zien, zijn dat eigenlijk gewoon getallen... De ASCII codes van de tekens kan je dus gewoon hetzelfde behandelen als getallen. Let wel op dat het waarschijnlijk niet de bedoeling is dat getallen en letters door elkaar komen......

    Ok, ASCII is dus een manier om dat te doen. Visual Basic heeft een (goede) support voor het maken van ASCII codes en het terughalen van de tekens.
    Om een ASCII code te maken van een teken gebruik je dit:
    Code:
    Dim A As Integer = Asc("A")
    Om daarvan dan weer een A te krijgen gebruik je dit:
    Code:
    Dim B As String = Chr(A)
    A moet hierin dan dus een getal bevatten.



    Ik hoop dat je hiermee al een eind komt.

    Succes!
    MartinJM

  4. #4
    Senior Member Scandax's avatar
    Geregistreerd
    1 februari 2011
    Locatie
    Roermond
    Afstand tot server
    ±103 km
    Hartelijk dank voor de enorm goede uitleg. Zal morgen eens Proberen, als ik tijd heb. Uiterlijk donderdag zal ik Antwoorden.
    Met de vriendelijke groeten van Scandax
    "Do not worry about your difficulties in Mathematics. I can assure you mine are still greater." - Albert Einstein
    Twitter: @TheEijk

  5. #5
    Senior Member Scandax's avatar
    Geregistreerd
    1 februari 2011
    Locatie
    Roermond
    Afstand tot server
    ±103 km
    Heb een enorm drukke week deze week, en heb helaas nog steeds geen tijd gehad om dit te proberen. Morgenmiddag heb ik (zoals het er nu naar uitziet) tijd genoeg om hieraan te werken en zal ik vertellen hoe het gegaan is.

    Scandax
    Met de vriendelijke groeten van Scandax
    "Do not worry about your difficulties in Mathematics. I can assure you mine are still greater." - Albert Einstein
    Twitter: @TheEijk

  6. #6
    Senior Member Scandax's avatar
    Geregistreerd
    1 februari 2011
    Locatie
    Roermond
    Afstand tot server
    ±103 km
    Heb net geprobeerd en ik snap wat er gedaan word. Nu heb ik 10 textboxen, en de invoer in de textboxen moeten worden gesorteerd. Nu rest mij de enige vraag: Hoe kan ik ervoor zorgen dat die getallen in de textbox worden gesorteerd?

    Scandax

    Edit: Zie net dat ik 3 posts achter elkaar heb geplaatst, sorry...
    Laatst aangepast door Scandax : 23 maart 2012 om 16:02
    Met de vriendelijke groeten van Scandax
    "Do not worry about your difficulties in Mathematics. I can assure you mine are still greater." - Albert Einstein
    Twitter: @TheEijk

  7. #7
    Senior Member MartinJM's avatar
    Geregistreerd
    9 november 2008
    Locatie
    A'dam
    Ok, plaats een panel op je form met daarin het aantal textboxen wat je wilt hebben. In de code die ik heb gemaakt moeten dat er evenveel (of minder) zijn dan het aantal nummers...
    In het panel mogen alleen die textboxen zitten, anders kan het fout gaan!!!

    De code is dan:
    Code:
            Dim getallen As Integer() = {3, 6, 5, 9, 1}
            Array.Sort(getallen)
    
            Dim teller As Integer = 0
    
            For i As Integer = 0 To getallen.Length - 1 Step 1
                CType(Panel1.Controls(teller), TextBox).Text = getallen(i)
                teller += 1
            Next
    Misschien zie je het meteen, maar ik heb nog een klein beetje meer aangepast: "For i As Integer = 0 To getallen.Length - 1 Step 1" omdat ik daar eerst een error bij kreeg...


    Succes!



    *EDIT*
    Nog een klein stukje code gemaakt:
    Code:
                If teller = Panel1.Controls.Count Or teller > Panel1.Controls.Count Then
                    Exit For
                End If
    Als je dit direct onder "teller += 1" zet, dan zou de array volgens mij groter kunnen zijn dan het aantal textboxen.

    Succes!
    Laatst aangepast door MartinJM : 23 maart 2012 om 16:15 Reden: Klein foutje in de 2e code: 2x "- 1" weggehaald

  8. #8
    Giga Senior JoZ1's avatar
    Geregistreerd
    17 december 2010
    Locatie
    Nieuwegein
    Afstand tot server
    ±90 km
    @MartinJM: Je kan controleren of het control een textbox is

    CPP Code:
    1
    2
    3
    
    For Each item As Control In Panel.Controls
       If TypeOf item Is TextBox Then ....
    Next

    Edit:
    Kan zelfs nog makkelijker:

    CPP Code:
    1
    2
    3
    
    For Each item As TextBox In Panel.Controls
       ''//code
    Next
    Laatst aangepast door JoZ1 : 23 maart 2012 om 16:40




    "Microsoft is not the answer. Microsoft is the question. NO is the answer."- E. Naggum

  9. #9
    Senior Member MartinJM's avatar
    Geregistreerd
    9 november 2008
    Locatie
    A'dam
    Ok, dankje! Die kende ik nog niet... Ik heb het zelf wel eens anders gedaan: met een try-catch blok, maar dat is natuurlijk niet echt handig....

  10. #10
    Senior Member Scandax's avatar
    Geregistreerd
    1 februari 2011
    Locatie
    Roermond
    Afstand tot server
    ±103 km
    Bij deze line gaat het mis:
    CType(Panel1.Controls(teller), TextBox).Text = getallen(i)
    Error:
    Index0 is out of range
    Parameter: Index0

    @JoZ1

    Zal ik zo eens proberen Best handige code.
    Laatst aangepast door Scandax : 23 maart 2012 om 16:22
    Met de vriendelijke groeten van Scandax
    "Do not worry about your difficulties in Mathematics. I can assure you mine are still greater." - Albert Einstein
    Twitter: @TheEijk

  11. #11
    Senior Member MartinJM's avatar
    Geregistreerd
    9 november 2008
    Locatie
    A'dam
    Ok, raar, even een paar vraagjes:


    Heb je het 2e stukje code ook gebruikt, of heb je alleen het eerste stukje code gebruikt??

    Hoeveel textboxen gebruik je nu en hoeveel getallen staan er in de array?

    Wat is de waarde van i en wat is de waarde van teller ten tijde van de error?
    Laatst aangepast door MartinJM : 23 maart 2012 om 16:30

  12. #12
    Senior Member Scandax's avatar
    Geregistreerd
    1 februari 2011
    Locatie
    Roermond
    Afstand tot server
    ±103 km
    Niet gezien dat er een 2e stukje code was bijgekomen, teveel gefocust op het sorteren denk ik. Heb 10 textboxen, en ik snap de code niet
    Als de waarde van i een cijfer uit een textbox is, dan zijn dat alle cijfers tussen de 0 en de 10 (incl. 0).
    En, als ik het eerste stuk code heb gebruikt, hoe gebruik ik dan het 2e stukje?
    Met de vriendelijke groeten van Scandax
    "Do not worry about your difficulties in Mathematics. I can assure you mine are still greater." - Albert Einstein
    Twitter: @TheEijk

  13. #13
    Senior Member MartinJM's avatar
    Geregistreerd
    9 november 2008
    Locatie
    A'dam
    Code:
            Dim getallen As Integer() = {3, 6, 5, 9, 1, 3}
            Array.Sort(getallen)
    
            Dim teller As Integer = 0
    
            For i As Integer = 0 To getallen.Length - 1 Step 1
                CType(Panel1.Controls(teller), TextBox).Text = getallen(i)
                teller += 1
    
                If teller = Panel1.Controls.Count Or teller > Panel1.Controls.Count Then
                    Exit For
                End If
            Next

  14. #14
    Senior Member Scandax's avatar
    Geregistreerd
    1 februari 2011
    Locatie
    Roermond
    Afstand tot server
    ±103 km
    Error.PNG
    Ik krijg een foutmelding. Zie bijlage.
    De code die ik heb:

    Code:
    Public Class Form1
    
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    
        End Sub
    
        Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
            Application.Exit()
        End Sub
    
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    
    
        End Sub
    
        Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
            Dim getallen As Integer() = {3, 6, 5, 9, 1, 3}
            Array.Sort(getallen)
    
            Dim teller As Integer = 0
    
            For i As Integer = 0 To getallen.Length - 1 Step 1
                CType(Panel1.Controls(teller), TextBox).Text = getallen(i)
                teller += 1
    
                If teller = Panel1.Controls.Count Or teller > Panel1.Controls.Count Then
                    Exit For
                End If
            Next
        End Sub
    End Class
    Veel lege plekken, maar denk niet dat de invloed hebben op de "sorteer-code".
    Met de vriendelijke groeten van Scandax
    "Do not worry about your difficulties in Mathematics. I can assure you mine are still greater." - Albert Einstein
    Twitter: @TheEijk

  15. #15
    Senior Member MartinJM's avatar
    Geregistreerd
    9 november 2008
    Locatie
    A'dam
    Vul deze code eens in bij b.v button1_click:
    Code:
    MsgBox(Panel1.Controls.Count)
    Start dan je programmaatje en druk op button1. Er zal dan een popup komen waarin een getal staat. Plaats dat dan hier online.

  16. #16
    Senior Member Scandax's avatar
    Geregistreerd
    1 februari 2011
    Locatie
    Roermond
    Afstand tot server
    ±103 km
    Daar komt het getal 0 uit.

    Edit: Als ik het goed begrijp heeft het panel dus geen inhoud .., Heb het Panel in de hele form gedocked (dock in parent container).
    Laatst aangepast door Scandax : 23 maart 2012 om 16:50
    Met de vriendelijke groeten van Scandax
    "Do not worry about your difficulties in Mathematics. I can assure you mine are still greater." - Albert Einstein
    Twitter: @TheEijk

  17. #17
    Senior Member MartinJM's avatar
    Geregistreerd
    9 november 2008
    Locatie
    A'dam
    Jep, zorg ervoor dat de textboxen echt in de panel staan. Ze mogen ook niet uitsteken. Ik zou ze dus ook een beetje uit de rand van de panel houden.
    Daarna zou het moeten werken...

  18. #18
    Senior Member Scandax's avatar
    Geregistreerd
    1 februari 2011
    Locatie
    Roermond
    Afstand tot server
    ±103 km
    Heb op "Dock panel in parent conatiner" geklikt, maar er blijft 0 uit komen. Niets steekt uit.
    Met de vriendelijke groeten van Scandax
    "Do not worry about your difficulties in Mathematics. I can assure you mine are still greater." - Albert Einstein
    Twitter: @TheEijk

  19. #19
    Giga Senior JoZ1's avatar
    Geregistreerd
    17 december 2010
    Locatie
    Nieuwegein
    Afstand tot server
    ±90 km
    Screenshot?




    "Microsoft is not the answer. Microsoft is the question. NO is the answer."- E. Naggum

  20. #20
    Senior Member Scandax's avatar
    Geregistreerd
    1 februari 2011
    Locatie
    Roermond
    Afstand tot server
    ±103 km
    Screenshot van mijn form zit in de bijlage: error2.jpg
    Screenshot van mijn code, mocht het nodig zijn: error3.PNG
    Laatst aangepast door Scandax : 23 maart 2012 om 16:56
    Met de vriendelijke groeten van Scandax
    "Do not worry about your difficulties in Mathematics. I can assure you mine are still greater." - Albert Einstein
    Twitter: @TheEijk

Pagina 1 van 5 1 2 3 ... LaatsteLaatste

Berichtenregels

  • U mag geen nieuwe discussies starten.
  • U mag niet reageren op berichten.
  • U mag geen bijlagen versturen.
  • Umag niet uw berichten bewerken.
  •  
Helpmij.nl
Helpmij.nl

Helpmij.nl en business

Partners
Sponsoren
Linkpartners
Aanbiedingen