Avatar billede virtualdurran Nybegynder
03. juni 2006 - 17:05 Der er 18 kommentarer og
1 løsning

Retuner rest ved division

Jeg skal bruge en kode som giver mig en rest når jeg dividerer.
eks:
Hvis jeg dividerer 20 med 7, skal den give mig tallet 4.
Vil også gerne have et eksempel på hvordan jeg skal skrive det. Resten skal gemmes i en variabel der hedder Tid.

På forhånd tak
Avatar billede Spotgun Seniormester
03. juni 2006 - 17:14 #1
Hvordan regner du dig frem til at 20 / 7 skal gi' en rest på 4? Jeg kan ikke helt få det til at passe ind nogen steder...
Avatar billede michael_stim Ekspert
03. juni 2006 - 17:15 #2
Du kan vel bruge modulus.
20 mod 7 = 2
2 * 7 = 14
20 - 14 = 6
Avatar billede michael_stim Ekspert
03. juni 2006 - 17:17 #3
Hvordan syntaxen ser ud, ved du nok bedre end jeg da jeg ikke har rørt VB i 6-7 år.
Men det kan ikke være så svært ;o)
Avatar billede virtualdurran Nybegynder
03. juni 2006 - 17:22 #4
Der var lige en lille skrivefejl. Det var selvfølgelig 6 den skulle retunere. Og det var nøjagtig modulus jeg ledte efter. Kunne huske funktionen fra delphi, men havde glemt hvad den hed. Takker. Smid et svar, så får du point :)
Avatar billede michael_stim Ekspert
03. juni 2006 - 17:24 #5
Jo tak, men max 30. Resten kan du beholde ;o)
Avatar billede pidgeot Nybegynder
03. juni 2006 - 17:26 #6
Jeg bør måske lige pointere at modulus netop ER divisionsrest, og ikke heltalsdivision :)
Avatar billede michael_stim Ekspert
03. juni 2006 - 17:27 #7
Function rest(var1, var2)
var1 MOD var2 = var3
var3 * var2 = var4
var1 - var4 = returVar
return returVar
end function

Og så med den rigtige syntax ;o)
Avatar billede michael_stim Ekspert
03. juni 2006 - 17:29 #8
Nåja.
det har du så ret i ;o)
Avatar billede virtualdurran Nybegynder
03. juni 2006 - 17:31 #9
Lige et udvidende spørgsmål. Kender du så også en kode som altid runder ned?

Jeg har en timer som tæller sekunder, som jeg dividere med 60, for at få det i minutter, men allerede når den når over 30, retunere den jo et 1-tal. Kan du hjælpe der?
Avatar billede michael_stim Ekspert
03. juni 2006 - 17:31 #10
ciel og floor
Hedder det på de fleste sprog. Men er ikke sikker i VB
Avatar billede virtualdurran Nybegynder
03. juni 2006 - 17:34 #11
Min kode ser sådan her ud. Nok den nemmeste måde jeg lige kunne se at lave den på:

Timer = I / 3600
Tid = I Mod 3600
Minutter = Tid / 60
Text2.Text = Timer
Text3.Text = Minutter
Avatar billede michael_stim Ekspert
03. juni 2006 - 17:35 #12
Så bliver det jo noget enklere. Ved ikke hvad jeg tænkte på:
Function rest(var1, var2)
var1 MOD var2 = returVar
return returVar
end function
Avatar billede virtualdurran Nybegynder
03. juni 2006 - 17:40 #13
Micheal_stim >> WHAT? Ciel og floor? Den strøg direkte hen over hovedet på mig. Kan du uddybe det svar lidt?
Avatar billede michael_stim Ekspert
03. juni 2006 - 17:42 #14
Nedrunding til nærmeste 10 kan du lave sådan:
tal = Int(tal/10)*10

Oprunding ligedan
tal = (Int(tal/10)+1)*10

Der eksister ikke sådanne afrundingsfunktioner i VB læste jeg mig lige til, men ovenstående skulle løse det
Avatar billede michael_stim Ekspert
03. juni 2006 - 17:45 #15
fix(tal)
runder den ned? Har ikke mulighed for at teste.
Avatar billede michael_stim Ekspert
03. juni 2006 - 17:48 #16
Iflg min bog skulle både int(tal) og fix(tal) runde ned.
Avatar billede virtualdurran Nybegynder
03. juni 2006 - 17:48 #17
Det virker fint nok med 10 minutter og det kan godt gå til det program jeg laver lige nu, da jeg egentlig kun behøver kvarter, men det der virker ikke med nedrunding til 1 minut.
Avatar billede virtualdurran Nybegynder
03. juni 2006 - 17:55 #18
Hmm...det ser ik rigtig ud til at hverken Int eller Fix runder ned. Har prøver med:

Minutter = 48/60
Minutter = Fix(Minutter)

Der er minutter 1 og den burde jo være 0.
Avatar billede virtualdurran Nybegynder
03. juni 2006 - 17:58 #19
Det var da mig der glemte at tænke der. Idet jeg skriver Minutter = 48/60, runder den allerede der op til 1, så når jeg bagefter skriver Minutter = Int(Minutter), står der jo allerede et 1-tal i variablen minutter. Har lavet det om nu, og nu virker det. koden er således:

Minutter = Fix(Tid / 60).
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