Om jag vill summera de tre högsta talen i en serie om fyra tal. Eftersom det handlar om så få tal så skulle jag nog loopa igenom arrayen (nedan kallad "varden") alla och sedan dra bort det lägsta talet. I annat fall hade man ju kunnat sortera först men det verkar vara overkill i detta läget : hmm fungerar ej, ?? samt att jag var tvungen att flytta ut den första lagsta=varden(i) utanför for satsen annars fick den fel värde hela tiden. la den utanför och gav den ett orimiligt högt startvärde. Före loopen ska du sätta lagsta till det första värdet i arrayen, dvs Så här vart den färdiga koden, används för att ta fram totalpoäng i en av sveriges största crosstävlingar. ca 250+ startande.VB-Script - Summering av tal
Kan man gör det på nått enkelt sätt. ?Sv: VB-Script - Summering av tal
<code>
summa=0
lagsta=varden(1)
for i=1 to 4
summa=summa+varden(i)
if varden(i)<lagsta then lagsta=varden(i)
next i
summa=summa-lagsta
</code>Sv: VB-Script - Summering av tal
vad kan vara fel. ?
<code>
dim varden(4)
varden(0) = 1
varden(1) = 3
varden(2) = 2
varden(3) = 0
varden(4) = 6
summa=0
lagsta=varden(i)
for x=1 to 5
summa=summa+varden(i)
if varden(i)<lagsta then lagsta=varden(i)
next
summa=summa-lagsta
</code>Sv: VB-Script - Summering av tal
Sv: VB-Script - Summering av tal
lagsta=varden(0) ' Ej: varden(i)
Sedan använder du x som loopvariabel men i överallt annars. Ändra till
For i=lbound(varden)+1 to ubound(varden)
Och glöm inte
Dim i As Integer
På detta sätt loopar du mellan alla värden utom det första, vilket inte behövs eftersom vi sätter lagsta till det första värdet.Sv: VB-Script - Summering av tal
<code>
dim varden(5)
DO While NOT RS.EOF
varden(0) = RS("k2")
varden(1) = RS("k22")
varden(2) = RS("s2")
varden(3) = RS("s22")
varden(4) = RS("n2")
varden(5) = RS("n22")
summa=0
lagsta=200
for i=0 to 5
summa=summa+varden(i)
if varden(i) < lagsta then lagsta=varden(i)
next
summa=summa-lagsta
</code>
Tack så mycket för er hjälp.
/Roger