Avatar billede spykiller Nybegynder
09. september 2003 - 14:20 Der er 8 kommentarer og
1 løsning

Regne problem

Jeg har lavet et lille program som fortæller hvor lang tid der er til jeg skal rejse.

Det virker, men jeg synes det er lidt synd at min cpu skal køre alle de loop's der, er der ikke en bedere måde man kan regne det ud på?

Kode:

dim ftimer, fmin, fsek

fsek = datediff("s", now, "23-09-2003 19:50")

fmin = fsek / 60
ftimer = fmin / 60

do until fmin < 60
    fmin = fmin - 60   
loop
do until fsek < 60
    fsek = fsek - 60   
loop

msgbox clng(ftimer) & ":" & clng(fmin) & ":" & fsek
Avatar billede nmh Nybegynder
09. september 2003 - 14:27 #1
fmin=fsek\60
fsek=fsek-fmin*60
ftimer=fmin\60
fmin=fmin-ftimer*60
Avatar billede nmh Nybegynder
09. september 2003 - 14:42 #2
\ betyder heltalsdivision 17\3 er således 5 (rest 2, som smides bort)

eks.:1 time 10 min 10 sek =3600 + 600 +10 =4210 sek

fsek=4210
fmin=fsek\60=4210\60=70
fsek=4210-70*60=10 sek
ftimer=fmin\60=70\60=1
fmin=fmin-ftimer*60=10
altså 1 tim 10 min 10 sek
Avatar billede martin_moth Mester
09. september 2003 - 14:49 #3
Hvor skal du mon hen? (sorry, kunne ikke lade være med at spørge ;o)
Avatar billede driis Nybegynder
09. september 2003 - 15:00 #4
Som du selv siger, kan du udnytte heltalsdivision til at få hele timer og minutter:

dim ftimer, fmin, fsek as long
fsek = datediff("s", now, "23-09-2003 19:50")

ftimer = fsek / 3600
fsek = fsek - ( ftimer * 3600 )
fmin = fsek / 60
fsek = fsek - ( fmin * 60 )

msgbox cstr(ftimer) & ":" & cstr(fmin) & ":" & cstr(fsek)
Avatar billede driis Nybegynder
09. september 2003 - 15:01 #5
... jeg havde ikke set nmh's svar før jeg postede - han bør selvf. have points.
Avatar billede spykiller Nybegynder
09. september 2003 - 15:35 #6
Hvad gør jeg galt her?


dim ftimer, fmin, fsek

fsek = datediff("s", now, "23-09-2003 19:50")

ftimer = clng(fsek / 3600)
fsek = fsek - (ftimer * 3600)
fmin = clng(fsek / 60)
fsek = fsek - (fmin * 60)

msgbox clng(ftimer) & ":" & clng(fmin) & ":" & fsek

fsek går i minus efter 0 sek !
Avatar billede nmh Nybegynder
09. september 2003 - 16:07 #7
Clng(fsek/3600) der rundes op.
Clng(2,5) er 3.
Derfor bliver fsek negativ.
Du skal bruge heltalsdivision, som jeg skrev, og ikke den sædvanlige /. Altså dette tegn \.
ftimer=fsek\3600
fsek=fsek-ftimer*3600
fmin=fsek\60
fsek=fsek-fmin*60
så vil det virke.
Avatar billede spykiller Nybegynder
10. september 2003 - 10:35 #8
Tusinde tak.
Avatar billede nmh Nybegynder
10. september 2003 - 10:37 #9
selv tak, det var så lidt.
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