webForumDet fria alternativet

Sortera en array...

9 svar · 351 visningar · startad av LeonL

LeonLMedlem sedan dec. 20025 871 inlägg
#1

Det går att sortera detta:

arr = Array("E5","E1","E3","E2","E4")
continue = true
Do While continue = true
continue = false
  For i = 0 To Ubound(arr)
    If i = Ubound(arr) Then Exit For
    If arr(i) > arr(i+1) Then
      temp = arr(i)
      arr(i) = arr(i+1)
      arr(i+1) = temp
      continue = true
    End If
  Next
Loop 
strCoords = Join(arr)
Response.Write(strCoords)
Response.End

Men inte detta:

x = 0
strCoords = ""
For Each str In Request.Form
 If Request.Form(str) = 1 then
   strCoords = strCoords & "," & str
   x = x+1 
 End If
Next
strCoords = Mid(strCoords,2)

arr = Array(strCoords)
continue = true
Do While continue = true
continue = false
  For i = 0 To Ubound(arr)
    If i = Ubound(arr) Then Exit For
    If arr(i) > arr(i+1) Then
      temp = arr(i)
      arr(i) = arr(i+1)
      arr(i+1) = temp
      continue = true
    End If
  Next
Loop 
strCoords = Join(arr)
Response.Write(strCoords)
Response.End

Det funkar helt enkelt inte... värdena hamnar i oordning i allafall. Men det gör det inte på den första koden. Varför?
str innehåller en bokstav (A-J) och ett tal (1-10) :q :q :q

solbulleMedlem sedan mars 20015 287 inlägg
#2

Den första koden knasar för mig, (oändlig loop) sen fattar jag fortfarande inte varför ni väljer att göra på det där sättet. :)

@ndersMedlem sedan juni 200032 969 inlägg
#3
arr = Array(strCoords)

Borde väl vara:

arr = Split(strCoords, ",")

? Annars skaffar du ju dig en array med en enda "post", som innehåller en kommaseparerad lista.

Mvh

LeonLMedlem sedan dec. 20025 871 inlägg
#4

Ursäkta mig :p
Det blev fel.. men nu har jag ändrat det och det lär itne bli någon oändlig loop...

btw, finns det andra sätt?

solbulleMedlem sedan mars 20015 287 inlägg
#5

Detta ger ju dig en "array" med de fält som är ikryssade:

For Each str In Request.Form
 If Request.Form(str) = 1 then
   strCoords = strCoords & "," & str
   x = x+1 
 End If
Next

Problemet är att de inte står i rätt ordning, så du vill sortera dom? Stämmer det?

Varför då inte göra så här:

<%
arrNum = Array("A1","A2","A3","A4","A5","A6","A7","A8","A9","A10","B1","B2","B3","B4","B5","B6","B7","B8","B9","B10","C1","C2","C3","C4","C5","C6","C7","C8","C9","C10","D1","D2","D3","D4","D5","D6","D7","D8","D9","D10","E1","E2","E3","E4","E5","E6","E7","E8","E9","E10","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","G1","G2","G3","G4","G5","G6","G7","G8","G9","G10","H1","H2","H3","H4","H5","H6","H7","H8","H9","H10","I1","I2","I3","I4","I5","I6","I7","I8","I9","I10","J1","J2","J3","J4","J5","J6","J7","J8","J9","J10")

For koll = 0 to ubound(arrNum)
	str = arrNum(koll)

	If Request.Form(str) = 1 then
		strCoords = strCoords & "," & str
		x = x+1 
	End If
Next
%>

Visst banne mig får du då ut en "array" där fälten står i rätt följd?

LeonLMedlem sedan dec. 20025 871 inlägg
#6

@nders skrev:

arr = Array(strCoords)

Borde väl vara:

arr = Split(strCoords, ",")

? Annars skaffar du ju dig en array med en enda "post", som innehåller en kommaseparerad lista.

Mvh

Hehe... :p :p :r

Tack :r

LeonLMedlem sedan dec. 20025 871 inlägg
#7

Solbulle: ditt sätt funkar också! :P Tack ! :P

LeonLMedlem sedan dec. 20025 871 inlägg
#8

Glömde säga: Ni är bäst! :birp

solbulleMedlem sedan mars 20015 287 inlägg
#9

Förklara det för Sebbe. ;)

LeonLMedlem sedan dec. 20025 871 inlägg
#10

Han är inte online, han tittar på buffy :P:P:P:P

133 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)