Gå til innhold

Skrive variabler i synkende rekkefølge ++


Anbefalte innlegg

Hei!

Jeg holder på å lage ett relativt avansert script.

Jeg har en drøss med variabler med tallverdier, og vil at disse skal skrives ut på skjermen i rekkefølge, med det laveste tallet først.

Jeg vil også finne gjennomsnittet.

 

Noen som skjønner hva jeg mener, og vet om en måte å gjøre det på?

Takker MASSE for svar! :)

Lenke til kommentar
Videoannonse
Annonse
More Input.. need more input!

Litt utydelig.. har du noe kode du har skrevet allerede som vi kan ta en titt på?

Koden er altfor stor for at jeg kan poste den her, over 500 linjer... :p

Skal prøve å forklare det litt bedre:

Jeg har en masse variabler med forskjellige tallverdier.

Alle disse variablene skal skrives ut på skjermen, med en variabelen som har lavest verdi først.

Så skal den som har nest størst verdi skrives ut, så den med 3. størst verdi, osv....

I tillegg vil jeg gjerne vite hvordan jeg kan finne gjennomsnittet til alle variablene.

Håper at det ble litt lettere å forstå nå! :smile:

Lenke til kommentar

Hvis du har navnsatt all variablene dine slik du har indikert kan du gjøre noe slikt:

 




 <SCRIPT LANGUAGE='javascript'>



 var testVariabel1 = "13";

 var testVariabel2 = "11";

 var testVariabel3 = "23";





 //Funksjon som kopierer variabelverdier inn i array

 function fncConvert(strVarNameBase, intCount)

 {

     var int_Array = new Array();

     for(var i=0; i<intCount;i++)

     {

         var strVarName = strVarNameBase + (i+1);

         int_Array[i] = eval(strVarName);

     }



     int_Array.sort();

     return int_Array;

 }



 //Bruk



 var data = fncConvert("testVariabel",3);

 var sum = 0;

 var intCount = data.length;

 for(var i=intCount-1;i>=0;i--)

 {

    document.write ('Verdi av testVariabel' + (i+1) + ':' + data[i] + '<br>');

    sum += 1.0*data[i];

 }



 document.write('Gjennomsnitt:' +  sum/intCount );



 </SCRIPT>



 

 

Edit: glemte sorteringen :)

BIW

Lenke til kommentar
Takk.

Får ikke testa den akkurat nå, men den funker sikkert.

Viser denne koden bare gjennomsnittet, eller skriver den også variablene ut i rekkefølge?

 

Skriver ut variablene i rekkefølge og gjennomsnitt.

 

Jeg ser jeg leste litt feil og har skrevet ut verdiene i synkende rekkefølge (største verdi først). Hvis du ha minste verdi først, bytter du bare for-løkken til:

 

for(var i=0;i<lngCount;i++)

{

  ...

}

 

 

BIW

Lenke til kommentar

Takk takk.

Testet scriptet, og gjennomsnittgreia funket.

Men det gjorde ikke den biten som skulle skrive ut variablene i rekkefølge.

Med noen tall så funket den, men andre ganger så funket den ikke.

Og variablene heter heller ikke Testvariabel1, testvariabel2 osv, det var bare for å vise hvordan jeg har lagret de.

 

Vet du (eller andre) om noen andre måter å gjøre det på?

Lenke til kommentar

Veldig vanskelig å svare deg på generell basis...

Det hadde vært en fordel om du kunne vist til ihvertfall deler av koden din.

 

Relle eksempler på navnsetting for eksempel? Inneholder noen av variablene dine strenger? Arrays?

 

 

Testet scriptet, og gjennomsnittgreia funket.

Men det gjorde ikke den biten som skulle skrive ut variablene i rekkefølge

 

Det her gir ikke mening. Hvordan kan gjennomsnittet regnes ut riktig, hvis delsummene er feilaktige? Da må det i tilfelle være utskriving til skjerm som feiler.

 

Hvis variablene dine ikke er navnsatt i rekkefølge kan du opprette en array med alle navnene og hente dem derfra istedet for å generere navn dynamisk.

 

 

Jeg vil gjerne vite litt mer om problemstillingen, før jeg evt skriver om koden til å fungere slik.

 

 

 

BIW

Lenke til kommentar

Hvorfor må jeg egentlig lagre variablene som en array?

 

Navnene på variablene er helt forskjellig, de innholder kun engelske tegn, og _.

Foreksempel Test_variabel.

 

Det eneste jeg trenger er en funksjon som viser den variabelen med høyest tallverdi først, så den med nest størst osv.

Det burde jo egentlig ikke være så sabla vanskelig! :D

Lenke til kommentar
Hvorfor må jeg egentlig lagre variablene som en array?

 

Navnene på variablene er helt forskjellig, de innholder kun engelske tegn, og _.

Foreksempel Test_variabel.

 

Det eneste jeg trenger er en funksjon som viser den variabelen med høyest tallverdi først, så den med nest størst osv.

Det burde jo egentlig ikke være så sabla vanskelig! :D

 

:D *sukk*

 

Array'en må du ha for å kunne skrive ut verdier gjentatte ganger i en for-løkke. Alternativet blir å skrive ut variablene én for én.

 

Alternativt må en liste over deklarerte variable i dokumentet hentes via scriptmotoren eller noe. Tror ikke det er mulig i javascript.

Lenke til kommentar

Nå funker det første scriptet du ga meg!

Jeg var nok bare litt trøtt når jeg testet det (selv om klokka var ti på halv 4 :D ).

 

for(var i=0;i<lngCount;i++) 

{ 

  ... 

} 

 

Dette fikk jeg ikke til å funke.

Gidder du å poste hele koden på nytt, med den kodesnutten inne i?

Lenke til kommentar

Her er koden med utskrift for både stigende og avtagende rekkefølge.

 

 <SCRIPT LANGUAGE='javascript'>



 var testVariabel1 = "13";

 var testVariabel2 = "11";

 var testVariabel3 = "23";





 //Funksjon som kopierer variabelverdier inn i array

 function fncConvert(strVarNameBase, intCount)

 {

     var int_Array = new Array();

     for(var i=0; i<intCount;i++)

     {

         var strVarName = strVarNameBase + (i+1);

         int_Array[i] = eval(strVarName);

     }



     int_Array.sort();

     return int_Array;

 }



 //Bruk

 var data = fncConvert("testVariabel",3);

 var sum = 0;

 var intCount = data.length;



 //Data i avtagende rekkefølge

 document.write('Avtagende:<BR>');

 for(var i=intCount-1;i>=0;i--)

 {

    document.write ('Verdi av testVariabel' + (i+1) + ':' + data[i] + '<br>');

    sum += 1.0*data[i];

 }



 //Data i Stigende rekkefølge

 document.write('<BR>');

 document.write('Stigende:<BR>');

 for(var i=0;i<intCount;i++)

 {

    document.write ('Verdi av testVariabel' + (i+1) + ':' + data[i] + '<br>');

    sum += 1.0*data[i];

 }





 document.write('<BR>');

 document.write('Gjennomsnitt:' +  sum/intCount );



 </SCRIPT>

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...