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

Quote

Pagina 3 van 5 EersteEerste 1 2 3 4 5 LaatsteLaatste
Weergeven resultaten 41 tot 60 van 96

Onderwerp: Cijfers sorteren in VB.net

  • Vraag is opgelost
  1. #41
    Senior Member MartinJM's avatar
    Geregistreerd
    9 november 2008
    Locatie
    A'dam
    Als jij denkt dat dat makkelijker is, dan kan dat. Maakt voor ons (volgens mij) niet zoveel uit.... Wel weer extra werk...

  2. #42
    Senior Member Scandax's avatar
    Geregistreerd
    1 februari 2011
    Locatie
    Roermond
    Afstand tot server
    ±103 km
    xP. Ik heb geen idee of het makkelijker is, maar volgens Joz1 wel .
    Maar wat denk jij dat ik nu het beste kan doen?
    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

  3. #43
    Senior Member MartinJM's avatar
    Geregistreerd
    9 november 2008
    Locatie
    A'dam
    Aangezien het met het panel eerst niet helemaal goed ging en je van plan bent nu een listbox te gaan gebruiken, zou ik zeggen dat het wel loont om het opnieuw te bouwen... Maar als er nog veel andere controls op het oude form staan, dan is het misschien niet zo handig...

    Maar uiteindelijk is het jouw keuze...

  4. #44
    Senior Member Scandax's avatar
    Geregistreerd
    1 februari 2011
    Locatie
    Roermond
    Afstand tot server
    ±103 km
    Ben net een nieuw project begonnen, en heb jouw code gebruikt:

    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
    Nu rest mij eigenlijk alleen de vraag, hoe zorg ik ervoor dat
    Code:
    Dim getallen As Integer() = {3, 6, 5, 9, 1}
    de getallen (de reeds ingevoerde 3, 6, 5, 9, 1) veranderen naar de inhoud van de 10 textboxen? Want die inhoud zal uiteindelijk gesorteerd moeten worden. Er mogen geen letters instaan, en enkele mogen ook leeg ingevuld worden.

    Scandax

    !!! EDIT:

    Heb de volgende code gemaakt, en het werkt redelijk:

    Code:
            Dim getallen As String() = {TextBox1.Text, TextBox2.Text, TextBox3.Text, TextBox4.Text, TextBox5.Text, TextBox6.Text, TextBox7.Text, TextBox8.Text, TextBox9.Text, TextBox10.Text}
            Array.Sort(getallen)
    
            For Each i As String In getallen
                ListBox1.Items.Add(i)
            Next
    De bovenstaande 'actie' gebeurd wanneer je op button 1 klikt.
    Nieuwe vraag: Als ik het cijfer 10 intype in een van de textboxen, komt de 10 1 rang boven de 1 te staan terwijl dit het grootste cijfer is. Hoe zorg ik ervoor dat de computer hem als laatste plaatst? Het is natuurlijk de bedoeling dat ze van groot naar klein worden gerangschikt.

    Scandax
    Laatst aangepast door Scandax : 2 april 2012 om 19:28
    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. #45
    Giga Senior JoZ1's avatar
    Geregistreerd
    17 december 2010
    Locatie
    Nieuwegein
    Afstand tot server
    ±90 km
    Dat kun je beter zo doen:

    CPP Code:
    1
    2
    3
    4
    5
    6
    7
    
    Dim nummers As New ArrayList
            For Each ctrl As Control In Me.Controls
                If TypeOf ctrl Is TextBox Then nummers.Add(ctrl.Text)
            Next
            nummers.Sort()
     
            For Each item As String In nummers : ListBox1.Items.Add(item) : Next





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

  6. #46
    Senior Member MartinJM's avatar
    Geregistreerd
    9 november 2008
    Locatie
    A'dam
    Ik neem aan dat alle textboxen in een panel staan:
    Code:
            Dim getallen(Panel1.Controls.Count) As Integer
            Dim teller As Integer = 0
    
            For Each Txtbox As TextBox In Panel1.Controls
                If Not Txtbox.Text = Nothing Then
                    If IsNumeric(Txtbox.Text) Then
                        getallen(teller) = Txtbox.Text
                        teller += 1
                    End If
                End If
            Next
    De code werkt niet helemaal, aangezien er ook nog een aantal overbodige nullen bij komen te staan als er een textbox leeg is.... Dat is vast wel op te lossen, maar daar heb ik nu niet zoveel tijd voor...


    Succes!



    Toch nog even een verbetering:
    Code:
            Dim getallen(Panel1.Controls.Count) As Integer
            Dim teller As Integer = 0
    
            For Each Txtbox As TextBox In Panel1.Controls
                If Not Txtbox.Text = Nothing Then
                    If IsNumeric(Txtbox.Text) Then
                        getallen(teller) = Txtbox.Text
                        teller += 1
                    End If
                End If
            Next
    
            ReDim Preserve getallen(teller - 1)
    Hierbij verdwijnen de extra nullen. Wat me nu wel was opgevallen, was dat de textboxen (bij mij) van onder naar boven werden uitgelezen. Als je alsnog de sort functie gebruikt, zal je daar geen last van hebben.



    *EDIT*
    Oeps, een paar posts van Joz gemist....
    Laatst aangepast door MartinJM : 2 april 2012 om 19:35

  7. #47
    Giga Senior JoZ1's avatar
    Geregistreerd
    17 december 2010
    Locatie
    Nieuwegein
    Afstand tot server
    ±90 km
    Als het inderdaad in een panel staat, dan is mijn code zo:


    CPP Code:
    1
    2
    3
    4
    5
    6
    7
    
    Dim nummers As New ArrayList
            For Each ctrl As Control In Panel1.Controls
                If TypeOf ctrl Is TextBox Then nummers.Add(ctrl.Text)
            Next
            nummers.Sort()
     
            For Each item As String In nummers : ListBox1.Items.Add(item) : Next




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

  8. #48
    Senior Member Scandax's avatar
    Geregistreerd
    1 februari 2011
    Locatie
    Roermond
    Afstand tot server
    ±103 km
    Ook bij mij word er van onder naar boven gelezen. Op zich komen alle codes op hetzelfde neer, en zie ik als gebruiker geen verschil. Als een textbox leeg is, kun je gewoon ze gewoon de waarde 0 geven als je op button1 klikt (correct me if I'm wrong).

    Die 10 blijft tussen de 1 en 2 staan. Hoe haal ik die daar weg? Of iemand moet mij vertellen dat een 10 een kleiner getal is dan 2...
    Laatst aangepast door Scandax : 2 april 2012 om 19: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

  9. #49
    Senior Member Scandax's avatar
    Geregistreerd
    1 februari 2011
    Locatie
    Roermond
    Afstand tot server
    ±103 km
    Ik moet nu ook gaan. Dank voor de alweer uitstekende hulp.
    Thumbs up

    Edit:

    Ben net verder gegaan. Heb geen panel gebruikt deze keer. Hier mijn code:

    Code:
      If TextBox1.Text = "" Or TextBox2.Text = "" Or TextBox3.Text = "" Or TextBox4.Text = "" Or TextBox5.Text = "" Or TextBox5.Text = "" Or TextBox6.Text = "" Or TextBox7.Text = "" Or TextBox8.Text = "" Or TextBox9.Text = "" Or TextBox10.Text = "" Then
                MsgBox("Een of meerdere velden zijn leeg. Voer a.u.b. cijfers (tussen de 0 en 10) in.")
            Else
                If Not IsNumeric(TextBox1.Text) Or Not IsNumeric(TextBox2.Text) Or Not IsNumeric(TextBox3.Text) Or Not IsNumeric(TextBox4.Text) Or Not IsNumeric(TextBox5.Text) Or Not IsNumeric(TextBox6.Text) Or Not IsNumeric(TextBox7.Text) Or Not IsNumeric(TextBox8.Text) Or Not IsNumeric(TextBox9.Text) Or Not IsNumeric(TextBox10.Text) Then
                    MsgBox("Alleen getallen kunnen worden gesorteerd. Voer a.u.b. alleen getallen in.", vbInformation)
                Else
                    Dim getallen As String() = {TextBox1.Text, TextBox2.Text, TextBox3.Text, TextBox4.Text, TextBox5.Text, TextBox6.Text, TextBox7.Text, TextBox8.Text, TextBox9.Text, TextBox10.Text}
                    Array.Sort(getallen)
    
                    For Each i As String In getallen
                        ListBox1.Items.Add(i)
                    Next
                    Button1.Enabled = False
                    Button2.Enabled = True
                End If
            End If
    Nu controleert hij of textbox1.text numeriek is. Is het ook mogelijk om hem alle textboxen in een keer te laten controleren? Als je alles op deze manier moet gaan uitleggen aan je pc, word je code wel heel erg lang.

    Edit: Nieuwe code, zie hierboven Past er alleen niet helemaal in zie ik...
    Hiermee zijn ook de meeste problemen opgelost, alleen mag de inhoud van een textbox niet kleiner zijn dan 0 en niet groter zijn dan 10. Hoe doe ik dat???
    Laatst aangepast door Scandax : 3 april 2012 om 11:55
    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

  10. #50
    Senior Member MartinJM's avatar
    Geregistreerd
    9 november 2008
    Locatie
    A'dam
    Wat je nu aan het doen is is volgens mij veel te veel werk. We hebben je al eerder voorbeelden gegeven van loops die alle textboxen afgaan... Die loops kan je natuurlijk aanpassen zodat je ze hier handig kan gebruiken...
    Ook voor als je textboxen niet in een panel staan, is er al minstens 1 code gegeven. Die kan je dan zelf ook aanpassen.

    Wat ik bedoel is: Het is overbodig veel werk om op deze manier alle textboxen langs te gaan. Met een eerder gegeven loop gaat dat veel sneller (het maken v/d code). Als het je niet lukt om die te gebruiken, geef dan aan waar dat verkeert gaat, dan kunnen wij je daarbij helpen.

    Succes!

  11. #51
    Senior Member Scandax's avatar
    Geregistreerd
    1 februari 2011
    Locatie
    Roermond
    Afstand tot server
    ±103 km
    Zal eens kijken naar de loops
    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

  12. #52
    Senior Member Scandax's avatar
    Geregistreerd
    1 februari 2011
    Locatie
    Roermond
    Afstand tot server
    ±103 km
    Een loop is inderdaad veel makkelijker. Heb de code gebruikt zoals JoZ1 hem heeft geschreven. De enige problemen waar ik tegenaan loop is dat de 10 tussen de 1 en 2 staat (er wordt alleen gekeken naar het eerste cijfer, denk ik) en de invoer mag niet kleiner zijn dan 0 en niet groter zijn dan 10.

    Edit:
    Heb ervoor kunnen zorgen dat alleen cijfer tussen -1 en 11 kunnen worden ingevoerd, maar als -0,5 word ingevoerd wordt deze natuurlijk wel gesorteerd. Hoe kan ik in de code zeggen dat alleen getallen tussen de 0,0000001 en 10,0000000000001 mogen?

    Klein stukje:
    Code:
    CInt(TextBox1.Text) > -1 And CInt(TextBox1.Text) < 11
    Als ik van die -1 -0,000001 of -0.000001 maak dan doet hij het niet. Zelfde geld voor de 11.
    Laatst aangepast door Scandax : 3 april 2012 om 15:42
    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. #53
    Senior Member MartinJM's avatar
    Geregistreerd
    9 november 2008
    Locatie
    A'dam
    Decimalen hebben geen zin in een integer: http://msdn.microsoft.com/en-us/library/06bkb8w2.aspx.
    Dus daar moet je even op letten.

    Dan voor de 10 die tussen de 1 en de 2 komt te staan: Als het alleen de 10 is, dan kan je die er ook makkelijk 'handmatig' uit halen. Met bv. een if-statement...


    Succes!


    Als je decimalen wilt, dan kan je hier even kijken welk datatype je dan het beste kan nemen: http://msdn.microsoft.com/en-us/library/47zceaw7.aspx
    Laatst aangepast door MartinJM : 3 april 2012 om 16:38

  14. #54
    Senior Member Scandax's avatar
    Geregistreerd
    1 februari 2011
    Locatie
    Roermond
    Afstand tot server
    ±103 km
    Dank, zal hier morgen naar kijken. Met en if statement is dat inderdaad mogelijk, maar dacht dat er misschien een kortere weg was. Aangezien het alleen de 10 betreft, is het ook mogelijk dit handmatig te doen maar ik had gehoopt dat hierbook ergens een kortere weg was.
    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. #55
    Senior Member Scandax's avatar
    Geregistreerd
    1 februari 2011
    Locatie
    Roermond
    Afstand tot server
    ±103 km
    Heb Het volgende neergezet:

    Code:
    If CDec(TextBox1.Text) > -0.000000001 And CInt(TextBox1.Text) < 10.00000000001 Then
    ...
    CInt veranderd naar CDec. Nu werkt het zoals het hoort.
    Weet alleen niet goed hoe ik die 10 weg moet werken? Heb een variable gemaakt voor die textboxen (genaamd 'getallen'), en die worden dan gesorteerd (reeds bekende koek). Hoe zorg ik ervoor dat als een of meerdere getallen 10 zijn, deze niet worden gesorteerd maar later worden toegevoegd?

    Vrijdag a.s. is trouwens de deadline.

    M.v.gr.,
    Scandax

    Edit: Als ik 10,05 invul in een van de velden, wordt die wel mee gesorteerd terwijl dat eigenlijk niet zou moeten kunnen (zie de code hierboven).
    Laatst aangepast door Scandax : 4 april 2012 om 18:48
    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

  16. #56
    Senior Member MartinJM's avatar
    Geregistreerd
    9 november 2008
    Locatie
    A'dam
    Er staat nog steeds een CInt in je code...

    En voor het andere probleem:
    Je kan weer met een loop checken of een van de getallen in de array een 10 is. Die kan je er dan (tijdelijk) uithalen om hem vervolgens achteraan neer te zetten.


    Succes!

  17. #57
    Senior Member Scandax's avatar
    Geregistreerd
    1 februari 2011
    Locatie
    Roermond
    Afstand tot server
    ±103 km
    Voor de CInt:
    omg, slordig...

    En voor die 10:
    Ik heb eerst eens zo gedaan:
    Code:
    If TextBox1.Text = ("10") Then
                            Dim tien As Integer = 10
                            ListBox1.Items.Remove(tien)
                            ListBox1.Items.Add(tien)
    Die variabele is overbodig... Alleen, hij verwijderd de 10 niet maar voegt wel een 10 toe? Dat vind ik best raar, aangezien het om dezelfde variabele gaat...
    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

  18. #58
    Senior Member MartinJM's avatar
    Geregistreerd
    9 november 2008
    Locatie
    A'dam
    Code:
    Listbox1.items.remove(##)
    Je moet even kijken wat er op de plaats van de 2 hekjes (##) moet komen... Daarin zit namelijk de fout...

    MartinJM
    Laatst aangepast door MartinJM : 4 april 2012 om 20:07

  19. #59
    Senior Member Scandax's avatar
    Geregistreerd
    1 februari 2011
    Locatie
    Roermond
    Afstand tot server
    ±103 km
    Dank, heb het gevonden. Het lag aan de "-tekentjes. Hieronder de code:

    Code:
    Listbox1.items.remove("10")
    Ook weer slordig van mij...
    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

  20. #60
    Senior Member Scandax's avatar
    Geregistreerd
    1 februari 2011
    Locatie
    Roermond
    Afstand tot server
    ±103 km
    Nu, het allerlaatste probleem denk ik: Ik heb iets nodig voor in VB dat in de spreektaal en/of betekend. Lastig om zo uit te leggen, zie de code:

    Code:
    If TextBox1.Text = ("10") Or TextBox2.Text = ("10") Or TextBox3.Text = ("10") Then
    ...
    Als ik nu twee keer een 10 in vul, komt een 10 tussen de 1 en 2 te staan en de andere op het einde. Ik heb dus iets nodig wat die Or kan vervangen en en/of betekend... Als je snapt wat ik bedoel :S

    Maar moet nu gaan.., dank voor de hulp (again)
    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 3 van 5 EersteEerste 1 2 3 4 5 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