Avatar billede jakwag Nybegynder
03. august 2004 - 10:15 Der er 25 kommentarer og
1 løsning

lidt matematik

Hej

Jeg har to tal. En konstant 25 og et tal der kan variere.

hvis den variable er 10 vil jeg gerne have returneret 10 hvis den er 20 skal den give 20. 25 skal give 25. okay, så langt kan jeg godt selv :D

hvis den får 30 skal den give 5. Det vil sige den skal loope rundt om 25. Så 70 vil give 20.

Den skal osse virke negativt så - 35 giver 15 (25-10).

Er der en matematisk hjerne derude der hurtigt kan lave en sådan function? Min den blev lidt for vild...

: ) Jakob
Avatar billede jakwag Nybegynder
03. august 2004 - 10:17 #1
den må aldrig give 0 kun tallene 1-25
Avatar billede jpvj Nybegynder
03. august 2004 - 10:24 #2
Du bruger følgende (pseudo kode)

const k = 25
inv v = 35  // din variabel
int i = v mod (k+1)
if i == 0 then i = 1
Avatar billede larsholmgaard_dk Nybegynder
03. august 2004 - 10:25 #3
Et andet forslag:

konstant = 25;
variabel = -35;
rest = Math.abs(variabel)%konstant;
trace(rest);

Hvorfor må funktionen ikke give nul, hvis nu variablen er 25?
Avatar billede jpvj Nybegynder
03. august 2004 - 10:26 #4
Hvis der er problemer med negative tal, så sig til - lidt afh. af sprog, bliver negative tal behandlet forsk.
Avatar billede erikjacobsen Ekspert
03. august 2004 - 10:26 #5
Måske:

  function f(tal) {
    tal%=25;
    if (tal<0) tal+=25
    if (tal==0) tal=25;
    return tal;
  }
Avatar billede jpvj Nybegynder
03. august 2004 - 10:27 #6
larsholmgaard> Den virker ikke. Den vil returnere 0 for variabel = 25...

variabel = -35;
rest = Math.abs(variabel)%(konstant+1);
if rest=0 then rest=1; // syntax er måske forkert - kender ikke flash
trace(rest);
Avatar billede jpvj Nybegynder
03. august 2004 - 10:29 #7
erikjacobsen> He-he... ja den er faktisk lidt pænere.

Men

if (tal<0) tal+=25

Bør nok være (hvis overhovedet nødv.)
while (tal<=0) tal+=25;
Avatar billede erikjacobsen Ekspert
03. august 2004 - 10:31 #8
Det klares i linien efter. Min version sparer et kode-tegn på denne måde ;))
Avatar billede erikjacobsen Ekspert
03. august 2004 - 10:32 #9
Nå du mener:

function f(tal) {
    tal%=25;
    if (tal<=0) tal+=25
    return tal;
  }

whilen er ikke nødvendig.
Avatar billede larsholmgaard_dk Nybegynder
03. august 2004 - 10:36 #10
jpvj, nej det var netop derfor jeg spurgte om, hvorfor funktionen skal lave en matematisk undtagelse, hvis variablen er 25 og der dermed ingen rest er. Men, det er måske et spørgsmål om en frame, den skal gå til og dermed må den ikke være nul...?
Avatar billede jakwag Nybegynder
03. august 2004 - 10:37 #11
Tak for alle de hurtige svar. Desværre  må jeg være en hård dommer og sige af pointene går til erikjacobsen. Men tak til jer andre aligevel.

erikjacobsen kom med et svar
Avatar billede erikjacobsen Ekspert
03. august 2004 - 10:39 #12
Mange tak, men jeg samler slet ikke på point.
Avatar billede jpvj Nybegynder
03. august 2004 - 10:39 #13
lars> Min kommentar var fordi dit svar ser ud som om besvarer spm. og efterfølgende spørger om det overhovedet er nødvendigt...

erikjacobsen> Hvad hvis variablen er -72 ? :-)
Avatar billede jakwag Nybegynder
03. august 2004 - 10:39 #14
functionen må ikke give nul, da det er frames som skal skippes imellem. Det var osse der jeg fik problemmer selv. :D
Avatar billede jpvj Nybegynder
03. august 2004 - 10:41 #15
Som jeg skrev i et tidligt indlæg, så ved jeg ikke hvordan Flash håndterer negative tal og modulo (%) funktionen.

Dette er dog let at efterprøve. jakwag kan ex. prøve -40 mod 25 og se om det giver 15 (som jeg antager han vil have).

Hvis det virker ok, så er der ingen grund til at tage hånd om negative tal i funktionen.
Avatar billede larsholmgaard_dk Nybegynder
03. august 2004 - 10:41 #16
jpvj, nå - ja, bevares.
Avatar billede erikjacobsen Ekspert
03. august 2004 - 10:43 #17
-72? Så giver den da 3. Prøv selv, jpvj
Avatar billede jakwag Nybegynder
03. august 2004 - 10:45 #18
erikjacobsen > men hvem faen sgu jeg ellers give dem til?? Læg et svar..!
Avatar billede larsholmgaard_dk Nybegynder
03. august 2004 - 10:46 #19
AARGH!! Sorry!! Jeg havde helt overset det spørgeren skrev:  "25 skal give 25."

My fault...
Avatar billede erikjacobsen Ekspert
03. august 2004 - 10:46 #20
Jeg samler ikke på point. Hvis du ikke mener andre har fortjent dem, så svar
selv, og accepter eget svar.
Avatar billede jpvj Nybegynder
03. august 2004 - 10:46 #21
Ups... havde lige fået byttet om på 2 linier. Havde "set" den som stående før linien med %.

Det er lidt svært at teste, når jeg ikke har flash :-)

Men når jeg nu har lært at se, vil jeg tilslutte mig at din funktion er den optimale løsning.
Avatar billede erikjacobsen Ekspert
03. august 2004 - 10:50 #22
Test det bare i JavaScript, det er stort set det samme. Det gør jeg - jeg
kender intet til Flash.
Avatar billede jakwag Nybegynder
03. august 2004 - 11:07 #23
... :| hvis i andre vil have point for deltajelse så læg et svar igen...

erikjacobsen > du har fået karma istedet, det slipper du ikke for :D
Avatar billede nikolajdu Nybegynder
03. august 2004 - 11:12 #24
Det er Erik vidst heller ikke interesseret i ;-)
Avatar billede larsholmgaard_dk Nybegynder
03. august 2004 - 11:13 #25
Bare snup dem selv, nu hvor erikjacobsen ikke vil have dem... det er helt fint med mig.
Avatar billede jakwag Nybegynder
03. august 2004 - 12:05 #26
: | Utroligt man ikke engang kan få lov at give point... Men så er lukker jeg. Tak for hjælpen.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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