Registreer FAQ Ledenlijst Berichten van vandaag


Ga terug   Scholieren.com forum / School & Studie / Huiswerkvragen: Exacte vakken
Reageren
 
Topictools Zoek in deze topic
Oud 11-12-2001, 16:16
mick
mick is offline
Opdracht : getallen sorteren

Getallen sorteren met behulp van de computer kan op allerlei manieren. Er wordt steeds gezocht naar nog snellere manieren. Zo zijn er supersnelle methodes die zo ingewikkeld zijn dat alleen wiskundigen precies begrijpen hoe ze werken. Daarom gaan we in deze opdracht een sorteerprogramma maken dat een eenvoudige sorteermethode gebruikt die goed aansluit bij wat een mens doet als hij getallen moet sorteren.
In paragraaf 4.9 van het theoriedeel van deze programmeermodule is deze sorteermethode al gedeeltelijk besproken. In deze opdracht ga je het Visual Basic programma schrijven waarmee je een reeks getallen kunt laten sorteren. In deze opdracht wordt ook geoefend hoe je een zelfgemaakte functie maakt en aanroept. Uiteraard zijn er in Visual Basic wel handiger sorteertrucjes aanwezig, maar er zelf een maken is een goede oefening.


proces
sorteren van reeks getallen
input ongesorteerde getallenreeks
output van klein naar groot gesorteerde getallenreeks
opm. - Gebruik de methode die besproken is in paragraaf 4.9 van de module. Het gaat bij deze opdracht niet om de meest efficiënte sorteermethode, maar om een begrijpbare sorteermethode met gebruik van zelf gemaakte functies.
- Het is gebruikersvriendelijk om de getallen te laten invoeren als een lange String in een TextBox met bijvoorbeeld puntkomma's ertussen, dan hoeft de gebruiker niet steeds met de muis naar een ander invulvakje. Met de functie Split(..) wordt de lange String in afzonderlijke getallen gesplitst en met de functie UBound(..) kan het aantal getallen bepaald worden. Een deel van de code hiervoor wordt verderop gegeven.
- De gesorteerde getallenreeks moet weer in dezelfde TextBox worden getoond.
- Geen waarschuwingen bij onjuiste invoer nodig.



a) Maak een interface met o.a. een TextBox (maak hem groot genoeg om een flinke reeks getallen te kunnen bevatten) en een knop om het sorteren te starten. Geef alle andere objecten geschikte namen en sla het project/formulier op onder een geschikte naam op je eigen diskette.

Voorbeeld bij de functie Split en UBound

Dim AantalGetallen As Integer
Dim strGetallenReeks As String
Dim strGetal() As String

strGetallenReeks = "12 ; -1 ; 6 ; 18"
strGetal() = Split(strGetallenReeks, ";", -1)
AantalGetallen = UBound(Getal())
Dit levert op :
strGetal(0) = "12"
strGetal(1) = "-1"
strGetal(2) = "6"
strGetal(3) = "18"
AantalGetallen = 3

Opm :
- het array strGetal wordt dus genummerd vanaf index = 0
- de upper boundary (UBound = hoogste index) van het array is dus 3
- de functie Join doet het omgekeerde van Split, maar de &-operator is ook geschikt
- meer informatie bij de Help-functie


b) - Maak een structuurdiagram.
- Voeg de code toe.
Tip : kijk bij het tweede voorbeeld van paragraaf 4.9, deel 9 van de projectopdracht en gebruik de functie Trim(..) om per ongeluk toegevoegde spaties te verwijderen.
- Test de werking van het programma.

c) Voorzie het programma van het benodigde commentaar en verzamel alle trucjes/methodes bij die van de andere opdrachten.

heeft iemand hier zo een cod voor met uitleg aub
Met citaat reageren
Advertentie
Oud 11-12-2001, 21:14
Markieman
Markieman is offline
Verklaar me voor gek en wees me eeuwig dankbaar:

BUBBLESORT


Dim intAantalGetallen As Integer
Dim strGetallenReeks As String
Dim strGetal() As String

Dim bSorterenKlaar As Boolean
Dim i As Long
Dim j As Long
Dim strTmp As String

'Input: Uit textbox halen
strGetallenReeks = "12 ; -1 ; 6 ; 18"
strGetal() = Split(strGetallenReeks, ";", -1)
intAantalGetallen = UBound(strGetal())

'Weghalen van onnodige spaties
For i = 0 To intAantalGetallen
strGetal(i) = Trim(strGetal(i))
Next i

'Initializatie
bSorterenKlaar = False

'Starten BubbleSort... overbekende sortingmethode zoek zelf maar uit hoe die werkt
For i = intAantalGetallen To 1 Step -1
If bSorterenKlaar = True Then Exit For
bSorterenKlaar = True
For j = 0 To i - 1
If Val(strGetal(j)) > Val(strGetal(j + 1)) Then
strTmp = strGetal(j)
strGetal(j) = strGetal(j + 1)
strGetal(j + 1) = strTmp
bSorterenKlaar = False
End If
Next j
Next i

'Omzetten van getallen array naar tekenreeks (string)
strGetallenReeks = ""
For i = 0 To intAantalGetallen
strGetallenReeks = strGetallenReeks & strGetal(i)
If i < intAantalGetallen Then
strGetallenReeks = strGetallenReeks + " ; "
End If
Next i

'Weergeven (kan ook naar textbox. vb: text1.text = strGetallenReeks)
MsgBox strGetallenReeks
__________________
Greetz, Mark
Met citaat reageren
Oud 12-12-2001, 14:05
mick
mick is offline
hartstikke bedankt maar nog 1 vraag:
hoe wordt de code als je willekeurige getallen intikt zoals 4;6;8;0;2;3 of 2;5;7;3;8;9
en je wilt deze sorteren hoe wordt de cod dan
Met citaat reageren
Oud 12-12-2001, 14:35
mick
mick is offline
laat maar ik heb het al heb er dit van gemaakt en doet het nu:
invoer = txtSorteer.Text
strGetallenReeks = invoer
strGetal() = Split(strGetallenReeks, ";", -1)
intAantalGetallen = UBound(strGetal())
hartstikke bedankt
Met citaat reageren
Oud 14-12-2001, 09:55
Markieman
Markieman is offline
Waarom niet gelijk dit:

strGetallenReeks = txtSorteer.Text

in plaats van:

invoer = txtSorteer.Text
strGetallenReeks = invoer
__________________
Greetz, Mark
Met citaat reageren
Advertentie
Reageren


Regels voor berichten
Je mag geen nieuwe topics starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit

Spring naar


Alle tijden zijn GMT +1. Het is nu 19:36.