Avatar billede tommy_carstensen Nybegynder
28. juli 2004 - 11:50 Der er 4 kommentarer og
2 løsninger

Loop med betinget addition til variabel

Jeg vil gerne fortsætte et loop, indtil en variabel (t) når en bestemt størrelse. Der skal dog kun adderes til variablen under bestemte betingelser (ikke-weekend). Hvad er forkert i følgende kode?

t = 0
n = 0
Do Until t = days
received = DateSerial(yyyy,mm,dd+n)
If weekday(DateSerial(yyyy,mm,dd+n),2) = 6 or 7 then
t = t
else
t = t+1
end if
n = n+1
Loop

Se evt. også http://www.eksperten.dk/spm/523940 for en beskrivelse af projektet. På forhånd mange tak.
Avatar billede ldanielsen Nybegynder
28. juli 2004 - 11:52 #1
Du sætter aldrig days til at være noget
Avatar billede tommy_carstensen Nybegynder
28. juli 2004 - 11:54 #2
Ville ikke tage det hele med for at forvirre læseren, men koden starter med

boxes=Request.Form("boxes")
yyyy=Request.Form("year")
mm=Request.Form("month")
dd=Request.Form("day")

if boxes > 100 then
days = 20
else
days = 10
end if
Avatar billede ldanielsen Nybegynder
28. juli 2004 - 11:57 #3
ok nu har jeg den vist:

If weekday(DateSerial(yyyy,mm,dd+n),2) = 6 or 7 then

erstattes med

If weekday(received, 2) = 6 or weekday(received, 2) = 7 then

(DateSerial(yyyy,mm,dd+n) er jo allerede sat ind i variablen received)
Avatar billede tommy_carstensen Nybegynder
28. juli 2004 - 12:02 #4
Tak Idanielsen.
weekday(received, 2) = 6 or = 7
skulle lige præcis, som du siger, erstattes med
weekday(received, 2) = 6 or weekday(received, 2) = 7
Nu virker den del af det, og nu vil jeg sætte et array op med helligdage. Jeg håber ikke, at jeg også får brug for hjælp til dette. Mange tak for hjælpen.
Avatar billede hiks Nybegynder
28. juli 2004 - 12:54 #5
nu kiggede jeg lige forbi - dog lidt for sent men ang. helligdage i et array vil jeg bare lige knytte en kommentar, da disse dage jo oftest bevæger sig så derfor syntes jeg bare lige at du skulle kigge på denne funktion som kan fortælle om dagen er en helligdag eller ej.

http://www.eksperten.dk/spm/511179

/hiks
Avatar billede tommy_carstensen Nybegynder
28. juli 2004 - 12:56 #6
Hej hiks,

Det har jeg taget højde for. Min endelig kode kom til at se ud som følger:
<html>
<head>
<title>Calculation of deadline</title>
<head>
<body>

<form action="deadline.asp" method="post">
<table>
    <tr>
        <td>Boxes:</td>
        <td><input type="number" name="boxes"></td>
    </tr>
    <tr>
        <td><br>Year:</td>
        <td><input type="number" name="year"></td>
    </tr>
    <tr>
        <td>Month:</td>
        <td><input type="number" name="month"></td>
    </tr>
    <tr>
        <td>Day:</td>
        <td><input type="number" name="day"></td>
    </tr>
    <tr>
        <td colspan=2><input type="submit" value="Calculate deadline"></td>
    </tr>
</table>
</form>

<%

boxes=Request.Form("boxes")
yyyy=Request.Form("year")
mm=Request.Form("month")
dd=Request.Form("day")

if boxes > 100 then
days = 20
else
days = 10
end if

y1 = yyyy
y2 = y1+1

a1 = y1 mod 19
b1 = int(y1/100)
c1 = y1 mod 100
d1 = int(b1/4)
e1 = b1 mod 4
f1 = int((b1+8)/25)
g1 = int((b1-f1+1)/3)
h1 = (19*a1+b1-d1-g1+15) mod 30
i1 = int(c1/4)
j1 = c1 mod 4
k1 = (32+2*e1+2*i1-h1-j1) mod 7
l1 = int((a1+11*h1+22*k1)/451)
m1 = int((h1+k1-7*l1+114)/31)
n1 = (h1+k1-7*l1+114) mod 31
py1 = c1
pm1 = m1
pd1 = n1+1

a2 = y2 mod 19
b2 = int(y2/100)
c2 = y2 mod 100
d2 = int(b2/4)
e2 = b2 mod 4
f2 = int((b2+8)/25)
g2 = int((b2-f2+1)/3)
h2 = (19*a1+b1-d1-g1+15) mod 30
i2 = int(c2/4)
j2 = c2 mod 4
k2 = (32+2*e2+2*i2-h2-j2) mod 7
l2 = int((a2+11*h2+22*k2)/451)
m2 = int((h2+k2-7*l2+114)/31)
n2 = (h2+k2-7*l2+114) mod 31
py2 = c2
pm2 = m2
pd2 = n2+1

Paaskedag1 = DateSerial(py1,pm1,pd1)
Nytaarsdag1 = DateSerial(y1,1,1)
Skaertorsdag1 = DateSerial(py1,pm1,pd1-3)
Langfredag1 = DateSerial(py1,pm1,pd1-2)
secPaaskedag1 = DateSerial(py1,pm1,pd1+1)
Bededag1 = DateSerial(py1,pm1,pd1+3*7+5)
Himmelfart1 = DateSerial(py1,pm1,pd1+5*7+4)
secPinsedag1 = DateSerial(py1,pm1,pd1+7*7+1)
Juledag1 = DateSerial(y1,12,24+1)
secJuledag1 = DateSerial(y1,12,24+2)

Paaskedag2 = DateSerial(py2,pm2,pd2)
Nytaarsdag2 = DateSerial(y2,1,1)
Skaertorsdag2 = DateSerial(py2,pm2,pd2-3)
Langfredag2 = DateSerial(py2,pm2,pd2-2)
secPaaskedag2 = DateSerial(py2,pm2,pd2+1)
Bededag2 = DateSerial(py2,pm2,pd2+3*7+5)
Himmelfart2 = DateSerial(py2,pm2,pd2+5*7+4)
secPinsedag2 = DateSerial(py2,pm2,pd2+7*7+1)
Juledag2 = DateSerial(y2,12,24+1)
secJuledag2 = DateSerial(y2,12,24+2)

t = 0
n = 0
Do Until t = days
dato = DateSerial(yyyy,mm,dd+n)
If weekday(dato,2) = 6 or weekday(dato,2) = 7 or dato = Paaskedag1 or dato = Nytaarsdag1 or dato =

Skaertorsdag1 or dato = Langfredag1 or dato = secPaaskedag1 or dato = Bededag1 or dato = Himmelfart1 or

dato = secPinsedag1 or dato = Juledag1 or dato = secJuledag1 or dato = Paaskedag2 or dato = Nytaarsdag2

or dato = Skaertorsdag2 or dato = Langfredag2 or dato = secPaaskedag2 or dato = Bededag2 or dato =

Himmelfart2 or dato = secPinsedag2 or dato = Juledag2 or dato = secJuledag2 then
t = t
else
t = t+1
end if
n = n+1
Loop

Response.Write "Deadline:" & dato

%>

</body>
</html>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester