Skihopp - eksempel

Poengutregning, lagring av resultater og resultatliste i skihopp


Jeg forutsetter at poeng i skihopp fremdeles regnes ut på denne måten:

poeng = (lengde - kritisk_punkt)*meterverdi + summen av stilkarakterer - laveste stilkarakter - høyeste stilkarakter

Jeg tar her bare for meg funksjoner og tabeller, ikke brukergrensesnitt.

Forutsetter at man gjennom et brukergrensesnitt har lagt inn stilkarakterer, lengder osv. i en tabell med objekter (assosiativ tabell) som etter at alle deltagere har hoppet ser slik ut:
(Forenkler til bare å ha en omgang.)

/// --- Konstanter --- ///

const	meterverdi:    int = 1.4;

const   kritisk_punkt: int = 70;





/// --- Tabell etter innlegging fra brukergrensesnitt --- ///

/// Startnummer er indeksen i tabellen pluss 1

/// feltet poeng er ennu ikke regnet ut



var resultater: Array =     // Indeks er startnummer - 1

   [

      {navn: "Ferkenberg", lengde: 99, stilkarakterer: [15,16,14,15,17], poeng: 0 },

      {navn: "Woxholdt", lengde: 91, stilkarakterer: [14,15,14,15,15], poeng: 0 },

      {navn: "Snytenstrup", lengde: 101, stilkarakterer: [17,19,18,16,18], poeng: 0 }

   ];



/// --- Funksjon som summerer stilpoeng --- ///

	  

function stilpoeng(tabell:Array):int {

	tabell.sort(Array.NUMERIC);

	var sum:int = 0;

	for(var i:int = 1;i<tabell.length-1;i++) {

		sum += tabell[i];

	}// for

	return sum;

}//stilpoeng()



/// --- Funksjon som regner ut poeng og legger i feltet poeng --- ///



function regnUtPoeng(tabell: Array): void {

	var sk: Array;

	for(var i:int = 0; i< tabell.length;i++) {

		tabell[i].stilkarakterer.sort(Array.DESCENDING);   

		tabell[i].poeng = (tabell[i].lengde-kritisk_punkt)*meterverdi+

						   stilpoeng(tabell[i].stilkarakterer);

	}// for

}// regnUtPoeng()



/// --- Tester funksjonene --- ///



regnUtPoeng(resultater);



resultater.sortOn("poeng",Array.DESCENDING);



/// --- Skriver ut resultat-tabellen ---///

for(var i:int=0;i<resultater.length;i++) {

	trace("Deltager nr: " + (i+1));

	trace("    Navn:        " + resultater[i].navn);

	trace("    Poeng:       " + resultater[i].poeng);

}//for