/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
soter et array
Fra : pepss


Dato : 26-09-04 21:36

hejsa ng

jeg har et array med nogle tal som jeg gerne vil ha sorteret efter styrelse.
f.eks. 5,9,1,6,7,4 skal blive til 1,4,5,6,7,9
hvordan gør man det?

--
Pepss
Den ordblinde der prøver at blive webdesigner
Fræk frækkere www.cafe-flirt.dk
De frække noveller www.novelle.cafe-flirt.dk



 
 
terje (27-09-2004)
Kommentar
Fra : terje


Dato : 27-09-04 00:57

pepss wrote
> hejsa ng
>
> jeg har et array med nogle tal som jeg gerne vil ha sorteret efter styrelse.
> f.eks. 5,9,1,6,7,4 skal blive til 1,4,5,6,7,9
> hvordan gør man det?

For eksempel:

Dim arr, returnArr, i
arr = Array(1, 2, 7, 4, 5, 11)
'arr = Array("a", "b", "å", "d", "t", "s")
returnArr = BubbleSort(arr)

For i = 0 To UBound(returnArr)
Response.Write returnArr(i) & "<br>"
Next


Function BubbleSort(arr)
Dim i, j, iLow, iMax, iTmp

iLow = LBound(arr)
iMax = UBound(arr)

For i = iLow To iMax - 1
For j = iLow To iMax - i - 1

If arr(j) > arr(j + 1) Then
iTmp = arr(j)
arr(j) = arr(j + 1)
arr(j + 1) = iTmp
End If

Next
Next

BubbleSort = arr
End Function

pepss (27-09-2004)
Kommentar
Fra : pepss


Dato : 27-09-04 20:30


"terje" skrev
> pepss wrote

> > jeg har et array med nogle tal som jeg gerne vil ha sorteret efter
styrelse.
> > f.eks. 5,9,1,6,7,4 skal blive til 1,4,5,6,7,9
> > hvordan gør man det?
>
> For eksempel:

[snip kode]

rigtig mange tak! det virker fint ny skal jeg bare finde ud af hvorfor


--
Pepss
Den ordblinde der prøver at blive webdesigner
Fræk frækkere www.cafe-flirt.dk
De frække noveller www.novelle.cafe-flirt.dk



pepss (27-09-2004)
Kommentar
Fra : pepss


Dato : 27-09-04 21:18


"terje" skrev

[snip noget kode]

> arr = Array(1, 2, 7, 4, 5, 11)

jeg falt lige over denn her... jeg kan godt for stå meningen med
Array(noget) men hvad er det lige helt den gør?

--
Pepss
Den ordblinde der prøver at blive webdesigner
Fræk frækkere www.cafe-flirt.dk
De frække noveller www.novelle.cafe-flirt.dk



terje (28-09-2004)
Kommentar
Fra : terje


Dato : 28-09-04 01:02

pepss wrote

>>arr = Array(1, 2, 7, 4, 5, 11)
>
>
> jeg falt lige over denn her... jeg kan godt for stå meningen med
> Array(noget) men hvad er det lige helt den gør?

Mener du hva funksjonen Array gjør? Den ganske enkelt sier at en liste
med verdier er å oppfatte som datatypen array. I vbscript gir Array
funksjonen deg en endimensjonal liste med Varianter som henger sammen i
fastsatt rekkefølge og som du kan fylle med hvilken datatype du vil.

Les mer om dette i VBScript Language Reference:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsfctarray.asp
http://www.devguru.com/Technologies/vbscript/quickref/array.html

Men normalt vil du ønske å bruke en dynamisk array, altså en som ikke
har en fastsatt lengde og der dataene hele tiden skifter, slik de gjør i
en database. Dette er en array av en helt annen type enn den som
Array-funksjonen gir deg. Du kan f. eks. bruke GetRows metoden som
returnerer en fiks ferdig todimensjonal recordset array (og som er
veldig rask) omtrent slik:

Dim arr, i, j
arr = rs.GetRows()

For i = 0 To UBound(arr, 2)
For j = 0 To UBound(arr, 1)
Response.Write arr(j, i) & vbCrLf
Next
Next



terje

pepss (28-09-2004)
Kommentar
Fra : pepss


Dato : 28-09-04 08:43


"terje" skrev
> pepss wrote
>
> >>arr = Array(1, 2, 7, 4, 5, 11)
> >
> >
> > jeg falt lige over denn her... jeg kan godt for stå meningen med
> > Array(noget) men hvad er det lige helt den gør?
>
> Mener du hva funksjonen Array gjør? Den ganske enkelt sier at en liste
> med verdier er å oppfatte som datatypen array. I vbscript gir Array
> funksjonen deg en endimensjonal liste med Varianter som henger sammen i
> fastsatt rekkefølge og som du kan fylle med hvilken datatype du vil.

som jeg forstår skulle det være det samme som:
tal = 1 & "," & 2 & "," & 3 & "," & 4 & "," & 5
arrtal = Split(tal,",")

eller er det mig det ikke helt forstår det?

når jeg prøver den kode jeg fik af dig virker det fint men jeg kan ikke få
det til at virke sammen med min anden kode.

altså det jeg er ved at lave er et poker spil. til det har jeg en Function
som finder nogle tilfældige kort:

Function rndkort()
kort1 = int(4 * rnd) + 1 & int(13 * rnd) + 1
kort2 = int(4 * rnd) + 1 & int(13 * rnd) + 1
kort3 = int(4 * rnd) + 1 & int(13 * rnd) + 1
kort4 = int(4 * rnd) + 1 & int(13 * rnd) + 1
kort5 = int(4 * rnd) + 1 & int(13 * rnd) + 1
'plus noget mere som gør at man ikke kan få samme kort 2 gang
rndkort = kort1 & "," & kort2 & "," & kort3 & "," & kort4 & "," & kort5
End Function

så vil jeg gerne sortere kortene når de skal vises til spilleren. det prøver
jeg at gøre på denne måde:

arr = Array(rndkort())
returnArr = BubbleSort(arr)
For i = 0 To UBound(returnArr)
Response.Write returnArr(i)
Next

men det bliver de ikke sorteret af....?

p.s. for at gøre det mere besværligt er kortenes tal bygget op på denne
måde:
f.eks. 13 er hjerter 3 hvor 1 er = hjerter og 3 er så for en 3'er
312 er spar dame hvor 3 er spar og 12 er en dame
jeg vil så gerne have at de bliver Sorteret på den måde at der ikke bliver
taget hensyn til vilken farve de har.

håber det er til at forstå og jeg ikke spørger for meget


--
Pepss
Den ordblinde der prøver at blive webdesigner
Fræk frækkere www.cafe-flirt.dk
De frække noveller www.novelle.cafe-flirt.dk



terje (28-09-2004)
Kommentar
Fra : terje


Dato : 28-09-04 15:45

pepss wrote

> som jeg forstår skulle det være det samme som:
> tal = 1 & "," & 2 & "," & 3 & "," & 4 & "," & 5
> arrtal = Split(tal,",")
>
> eller er det mig det ikke helt forstår det?

Ja, her lager du i prinsippet den samme array uten å bruke Array
funksjonen. Det kan godt være at vbscript internt behandler dette på
forskjellige måter, men det trenger ikke vi bry oss om her. Det er en
string array, selv om du blander tall og stringer, og da er det greit å
gjøre dette eksplisitt:
arr = CStr(1 & "," & 2 & "," & 3 & "," & 4 & "," & 5)

> altså det jeg er ved at lave er et poker spil. til det har jeg en Function
> som finder nogle tilfældige kort:

[......]

> så vil jeg gerne sortere kortene når de skal vises til spilleren. det prøver
> jeg at gøre på denne måde:
>
> arr = Array(rndkort())
> returnArr = BubbleSort(arr)
> For i = 0 To UBound(returnArr)
> Response.Write returnArr(i)
> Next

Det som skjer her er at dine tall kun sorteres på første siffer, og når
tallene er f. eks. 1, 4, 11 så blir resultatet: 1, 11, 4

Disse sorteres så vidt jeg vet etter Decimal verdien til det *første*
tegnet. Husk at dette er en string array. Hva skjer dersom du
konverterer dette til f. eks. Integers? Se endringen i BubbleSort koden
under:



Dim i, arr

arr = rndkort
arr = Split(arr, ",")

arr = BubbleSort(arr)

For i = 0 To UBound(arr)
Response.Write arr(i) & "<br>"
Next



Function BubbleSort(arr)
Dim i, j, iLow, iMax, iTmp

iLow = LBound(arr)
iMax = UBound(arr)

For i = iLow To iMax - 1
For j = iLow To iMax - i - 1

If CInt(arr(j)) > CInt(arr(j + 1)) Then
iTmp = (arr(j))

arr(j) = arr(j + 1)
arr(j + 1) = iTmp
End If

Next
Next

BubbleSort = arr
End Function

Function rndkort()
Dim kort1, kort2, kort3, kort4, kort5

kort1 = Int(4 * Rnd) + 1 & Int(13 * Rnd) + 1
kort2 = Int(4 * Rnd) + 1 & Int(13 * Rnd) + 1
kort3 = Int(4 * Rnd) + 1 & Int(13 * Rnd) + 1
kort4 = Int(4 * Rnd) + 1 & Int(13 * Rnd) + 1
kort5 = Int(4 * Rnd) + 1 & Int(13 * Rnd) + 1
'plus noget mere som gør at man ikke kan få samme kort 2 gang
rndkort = CStr(kort1 & "," & kort2 & "," & kort3 & "," & kort4 &
"," & kort5)
End Function


Prøv dette

terje


pepss (29-09-2004)
Kommentar
Fra : pepss


Dato : 29-09-04 12:28


"terje" skrev

> pepss wrote
>
>> som jeg forstår skulle det være det samme som:
>> tal = 1 & "," & 2 & "," & 3 & "," & 4 & "," & 5
>> arrtal = Split(tal,",")
>>
>> eller er det mig det ikke helt forstår det?
>
> Ja, her lager du i prinsippet den samme array uten å bruke Array
> funksjonen. Det kan godt være at vbscript internt behandler dette på
> forskjellige måter, men det trenger ikke vi bry oss om her. Det er en
> string array, selv om du blander tall og stringer, og da er det greit å
> gjøre dette eksplisitt:
> arr = CStr(1 & "," & 2 & "," & 3 & "," & 4 & "," & 5)

okay det havde jeg ikke lige tænkt på!

>> altså det jeg er ved at lave er et poker spil. til det har jeg en
>> Function
>> som finder nogle tilfældige kort:
>
> [......]
>
>> så vil jeg gerne sortere kortene når de skal vises til spilleren. det
>> prøver
>> jeg at gøre på denne måde:
>>
>> arr = Array(rndkort())
>> returnArr = BubbleSort(arr)
>> For i = 0 To UBound(returnArr)
>> Response.Write returnArr(i)
>> Next
>
> Det som skjer her er at dine tall kun sorteres på første siffer, og når
> tallene er f. eks. 1, 4, 11 så blir resultatet: 1, 11, 4
>
> Disse sorteres så vidt jeg vet etter Decimal verdien til det *første*
> tegnet. Husk at dette er en string array. Hva skjer dersom du konverterer
> dette til f. eks. Integers? Se endringen i BubbleSort koden under:

rigtig mange tak skal du ha! nu begynder jeg også at forstå hvad der sker!


--
Pepss
Den ordblinde der prøver at blive webdesigner
Fræk frækkere www.cafe-flirt.dk
De frække noveller www.novelle.cafe-flirt.dk



Søg
Reklame
Statistik
Spørgsmål : 177548
Tips : 31968
Nyheder : 719565
Indlæg : 6408803
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste