Avatar billede mikoalngelo Nybegynder
04. maj 2003 - 16:34 Der er 19 kommentarer og
1 løsning

Mest for Harry Potter Fans: Lommeregner

Jeg er lige kørt fast i at lave en lommeregner, der regner med talsystemet i Harry Potters valuta (Der går 29 Knut på et SølvSejl (Sol), og der går 17 Sølvsejl (Sol) på en Galleon (Gal).
Men den virker ikke.

Hjælp, be'om...
Avatar billede roenving Novice
04. maj 2003 - 16:41 #1
Vise, hvad du har lavet, jeg kan ikke gætte hvad dit problem er ...
Avatar billede mikoalngelo Nybegynder
04. maj 2003 - 16:43 #2
Undskyld, glemte jeg lige. Her:

<!-- Minus AutoDato -->
<FORM NAME="Formen">

<INPUT TYPE="button" VALUE="Regn det ud" NAME="RegnUd" onclick="Calculate();">
<br>
<INPUT TYPE="text" NAME="L1">
<INPUT TYPE="text" NAME="L2">

</FORM>

<SCRIPT TYPE="text/javascript">
/*
R = Resultat
A = Antal på den valuta over
P = Plus
L = Liste over
*/

function Calculate(){
    var Gal, Gal2, Sol, Sol2, Knut, Knut2;
    var RGal, RSol, RKnut;
    var ASol = 17, AKnut = 29;
    var PSol = 0, PGal = 0;
    var LR;
   
    DefineVars();        Debugger("DefineVars();");
    Corrigate1();        Debugger("Corrigate1();");
    Calc();                    Debugger("Calc();");
//    Corrigate2();        Debugger("Corrigate2();");
    SetVar();                Debugger("SetVar();");

    function Corrigate1(){
        if (RKnut >= AKnut){
            RKnut    = RKnut%AKnut;
        }
        if (RSol >= ASol){
            RSol    = RSol%ASol;
        }
    }
    function Corrigate2(){
        if (RKnut >= AKnut){
            RKnut    = RKnut%AKnut;
            PSol    = Math.ceil(RKnut/AKnut);
        }
        if (RSol >= ASol){
            RSol    = (RSol%ASol)+PSol;
            PGal    = Math.ceil(RSol/ASol)+PSol;
        }
    }
    function DefineVars(){
        L1    = document.Formen.L1.value;
        L2    = document.Formen.L2.value;
        L1    = L1.split(",");
        L2    = L2.split(",");
        Gal        = Number(L1[0], 10);
        Gal2    = Number(L2[0], 10);
        Sol        = Number(L1[1], 10);
        Sol2    = Number(L2[1], 10);
        Knut    = Number(L1[2], 10);
        Knut2    = Number(L2[2], 10);
    }
    function SetVar(){
        LR    =    RGal + ", " + RSol + ", " + RKnut;
    }
    function Calc(){
        RKnut    = Knut + Knut2;
    Corrigate2();        Debugger("Corrigate2();");
        RSol    =    Sol + Sol2 + PSol;
    Corrigate2();        Debugger("Corrigate2();");
        RGal     = Gal + Gal2 + PGal;
    Corrigate2();        Debugger("Corrigate2();");
    }
    function Debugger(Func){
        document.write("<B>" + Func + "</B><BR>L1 = " + L1 + "<BR>L2 = " + L2 + "<BR>PGal = " + PGal + "<BR>PSol = " + PSol + "<BR>RKnut%AKnut = " + RKnut%AKnut + "<BR>(RSol%ASol)+PSol = " + ((RSol%ASol)+PSol) + "<BR>RGal = " + RGal + "<BR>RSol = " + RSol + "<BR>RKnut = " + RKnut + "<BR>LR = " + LR + "<BR>Gal = " + Gal + "<BR>Gal2 = " + Gal2 + "<BR>Sol = " + Sol + "<BR>Sol2 = " + Sol2 + "<BR>Knut = " + Knut + "<BR>Knut2 = " + Knut2 + "<P>--<P>");
    }
    document.write(LR);
}
</SCRIPT>

Grund til, at der er så meget er, at jeg har gjort den så overskuelig som muligt... (Forhåbenligt...)
Avatar billede roenving Novice
04. maj 2003 - 16:49 #3
Jeg ville beregne det hele i Knut'er, og så vise resultatet ved heltalsdivision med hhv. 493 og 29.

På den måde kan du lave nogle helt generelle procedurer, på den måde du har lavet det skal du bruge mange kræfter på at holde hovedet lige.

hth
jes
Avatar billede roenving Novice
04. maj 2003 - 16:57 #4
function DefineVars(){
        L1    = document.Formen.L1.value;
        L2    = document.Formen.L2.value;
        L1    = L1.split(",");
        L2    = L2.split(",");
        Gal        = Number(L1[0], 10);
        Gal2    = Number(L2[0], 10);
        Sol        = Number(L1[1], 10);
        Sol2    = Number(L2[1], 10);
        Knut    = Number(L1[2], 10) + (29 * Sol) + (493 * Gal);
        Knut2    = Number(L2[2], 10) + (29 * Sol2) + (493 * Gal2);
    }

Og så kun een Corrigate:

    function Corrigate(){
        RGal = RKnut%493;
        RSol = (RKnut - (RGal*493))%17;
        RKnut = RKnut - (RGal*493) - (RSol*17);
    }

mvh
jes
Avatar billede roenving Novice
04. maj 2003 - 17:00 #5
Undskyld, selvfølgelig:

    function Corrigate(){
        RGal = Math.floor(RKnut/493);
        RSol = Math.floor((RKnut - (RGal*493))/17);
        RKnut = RKnut - (RGal*493) - (RSol*17);
    }
Avatar billede mikoalngelo Nybegynder
04. maj 2003 - 17:10 #6
Jeg accepterer hvis du lige vil være så venlig at skrive hele scriptet, for jeg kan ikke rigtigt få det flettet ind...
Avatar billede roenving Novice
04. maj 2003 - 17:20 #7
<FORM NAME="Formen">

<INPUT TYPE="button" VALUE="Regn det ud" NAME="RegnUd" onclick="Calculate();">
<br>
<INPUT TYPE="text" NAME="L1">
<INPUT TYPE="text" NAME="L2">

</FORM>

<SCRIPT TYPE="text/javascript">
/*
R = Resultat
A = Antal på den valuta over
P = Plus
L = Liste over
*/

function Calculate(){
    var Gal, Gal2, Sol, Sol2, Knut, Knut2;
    var RGal, RSol, RKnut;
    var ASol = 17, AKnut = 29;
    var PSol = 0, PGal = 0;
    var LR;
   
    DefineVars();        Debugger("DefineVars();");
    Calc();                    Debugger("Calc();");
    SetVar();                Debugger("SetVar();");


    function Corrigate(){
        RGal = Math.floor(RKnut/493);
        RSol = Math.floor((RKnut - (RGal*493))/17);
        RKnut = RKnut - (RGal*493) - (RSol*17);
    }
    function DefineVars(){
        L1    = document.Formen.L1.value;
        L2    = document.Formen.L2.value;
        L1    = L1.split(",");
        L2    = L2.split(",");
        Gal        = Number(L1[0], 10);
        Gal2    = Number(L2[0], 10);
        Sol        = Number(L1[1], 10);
        Sol2    = Number(L2[1], 10);
        Knut    = Number(L1[2], 10) + (29 * Sol) + (493 * Gal);
        Knut2    = Number(L2[2], 10) + (29 * Sol2) + (493 * Gal2);
    }

    function SetVar(){
        LR    =    RGal + ", " + RSol + ", " + RKnut;
    }
    function Calc(){
        RKnut    = Knut + Knut2;
    Corrigate();        Debugger("Corrigate();");
    }
    function Debugger(Func){
        document.write("<B>" + Func + "</B><BR>L1 = " + L1 + "<BR>L2 = " + L2 + "<BR>PGal = " + PGal + "<BR>PSol = " + PSol + "<BR>RKnut%AKnut = " + RKnut%AKnut + "<BR>(RSol%ASol)+PSol = " + ((RSol%ASol)+PSol) + "<BR>RGal = " + RGal + "<BR>RSol = " + RSol + "<BR>RKnut = " + RKnut + "<BR>LR = " + LR + "<BR>Gal = " + Gal + "<BR>Gal2 = " + Gal2 + "<BR>Sol = " + Sol + "<BR>Sol2 = " + Sol2 + "<BR>Knut = " + Knut + "<BR>Knut2 = " + Knut2 + "<P>--<P>");
    }
    document.write(LR);
}
</SCRIPT>

Kiggede på det gennem svar-ruden, så ...
Avatar billede roenving Novice
04. maj 2003 - 17:22 #8
Overskueligheden steg også en anelse, hva'

Kan ikke lige se fejl ved langsom debugging ...
Avatar billede mikoalngelo Nybegynder
04. maj 2003 - 17:25 #9
Du skal vist lave noget mere Onscreen-scripting, for det virker ikke (Prøv at skrive "1,1,1" og "1,1,1".
Jeg afviser indtil videre, men bare bliv ved...
Avatar billede roenving Novice
04. maj 2003 - 17:35 #10
function Corrigate(){
        RGal = Math.floor(RKnut/493);
        RSol = Math.floor((RKnut - (RGal*493))/29);
        RKnut = RKnut - (RGal*493) - (RSol*29);
    }

Det var jo Knut'er på Sol'er, så en bedre ville være

<SCRIPT TYPE="text/javascript">
/*
R = Resultat
A = Antal på den valuta over
P = Plus
L = Liste over
*/

function Calculate(){
    var Gal, Gal2, Sol, Sol2, Knut, Knut2;
    var RGal, RSol, RKnut;
    var ASol = 17, AKnut = 29;
    var PSol = 0, PGal = 0;
    var LR;
   
    DefineVars();        Debugger("DefineVars();");
    Calc();                    Debugger("Calc();");
    SetVar();                Debugger("SetVar();");


    function Corrigate(){
        RGal = Math.floor(RKnut/(ASol*AKnut));
        RSol = Math.floor((RKnut - (RGal*ASol*AKnut))/AKnut);
        RKnut = RKnut - (RGal*ASol*AKnut) - (RSol*AKnut);
    }
    function DefineVars(){
        L1    = document.Formen.L1.value;
        L2    = document.Formen.L2.value;
        L1    = L1.split(",");
        L2    = L2.split(",");
        Gal        = Number(L1[0], 10);
        Gal2    = Number(L2[0], 10);
        Sol        = Number(L1[1], 10);
        Sol2    = Number(L2[1], 10);
        Knut    = Number(L1[2], 10) + (AKnut * Sol) + (ASOL * AKnut * Gal);
        Knut2    = Number(L2[2], 10) + (AKnut * Sol2) + (ASOL * AKnut * Gal2);
    }

    function SetVar(){
        LR    =    RGal + ", " + RSol + ", " + RKnut;
    }
    function Calc(){
        RKnut    = Knut + Knut2;
    Corrigate();        Debugger("Corrigate();");
    }
    function Debugger(Func){
        document.write("<B>" + Func + "</B><BR>L1 = " + L1 + "<BR>L2 = " + L2 + "<BR>PGal = " + PGal + "<BR>PSol = " + PSol + "<BR>RKnut%AKnut = " + RKnut%AKnut + "<BR>(RSol%ASol)+PSol = " + ((RSol%ASol)+PSol) + "<BR>RGal = " + RGal + "<BR>RSol = " + RSol + "<BR>RKnut = " + RKnut + "<BR>LR = " + LR + "<BR>Gal = " + Gal + "<BR>Gal2 = " + Gal2 + "<BR>Sol = " + Sol + "<BR>Sol2 = " + Sol2 + "<BR>Knut = " + Knut + "<BR>Knut2 = " + Knut2 + "<P>--<P>");
    }
    document.write(LR);
}
</SCRIPT>
Avatar billede mikoalngelo Nybegynder
04. maj 2003 - 17:45 #11
Smukt mand.
Never has on man done so much for another man.
Avatar billede roenving Novice
04. maj 2003 - 17:46 #12
Takker for points ;~}
Avatar billede mikoalngelo Nybegynder
04. maj 2003 - 17:48 #13
Ur wælcåm!
Avatar billede soren1990 Nybegynder
25. juni 2003 - 15:47 #14
Kom den til at virke eller hva?
Avatar billede roenving Novice
25. juni 2003 - 15:50 #15
-- selve scriptet fungerede ihvertfald upåklageligt *-)
Avatar billede soren1990 Nybegynder
25. juni 2003 - 15:52 #16
Hvem har rettighederne til denne lommeregner?
Jeg er ved at starte en potter fanside og er der muglig hed for at ligge den ud på dette site?
Avatar billede roenving Novice
25. juni 2003 - 15:55 #17
Rettigheden til scriptet har Ekspertens brugere, så du er ganske velkommen til at bruge det ...
Avatar billede soren1990 Nybegynder
25. juni 2003 - 15:57 #18
Nogen der kan forklare hvordan jeg kan indsætter sådan en?
Avatar billede roenving Novice
25. juni 2003 - 15:59 #19
Jeg testede med to tekst-boxe, men ville nok vælge noget med nogle knapper, som kunne både lægge til, trække fra og sådan noget ...
Avatar billede soren1990 Nybegynder
25. juni 2003 - 16:00 #20
:S.... okay jeg må hellere droppe iden... Jeg fatter det ik:)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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