Kommentarer til eksamen våren 2015

 


Eksempel på løsning av en som har løst det med JavaScript. (Legg merke til mengden med kode...)

 

Skisse av løsning på oppgave 3:

/* 

	Eksamen V 2015



   Skisse til løsning av Oppgave 3:



   GUI:

	askimCb, haldenCb, fredrikstadCb

	beregnBtn

*/





/// --- Data --- ///



var stedstabell: Array = ["Askim", "Halden", "Fredrikstad"];



var avstandstabell: Array = 

	[

		[ 0, 62.3, 58.8],

		[62.3,  0, 37.9],

		[58.8, 37.9,  0]

	];





// Tomt array til å lagre ruten

var rute: Array = [];

// Totalavstand rute

var totalavstand: Number = 0.0;





// Tellevariabel til alle for-løkker



var i: int = 0;



/// ---  Oppkobling av lytterfunksjoner: --- ///



// For å kunne koble og sjekke alle sjekkboksene i en for-løkke:

var chkboxtabell: Array = [askimCb, haldenCb, fredrikstadCb];



for(i=0;i<chkboxtabell.length;i++) {

	chkboxtabell[i].addEventListener(MouseEvent.CLICK,sjekkBoksEndret);

}//for



beregnBtn.addEventListener(MouseEvent.CLICK,beregnTrykket);



/// --- Lytterfunksjoner --- ///



// Lagrer/justerer ruten når sjekkbokser er endret:

function sjekkBoksEndret(evt: MouseEvent): void {

	var stedsindeks:int =chkboxtabell.indexOf(evt.target);

	var stedsnavn:String= stedstabell[stedsindeks];

	if(evt.target.selected) {	// Legg til i rute

		rute.push(stedsnavn);



	}else{				// Fjern fra rute

		var fjernindeks:int=rute.indexOf(stedsnavn);

		trace("fjernindeks var: "+fjernindeks);

		rute.splice(fjernindeks,1);



	}//if selected



}//sjekkBoksEndret()



// Beregner og rapporterer rute, lengde og tidsbruk

function beregnTrykket(evt:MouseEvent):void {

	rapportTa.text="";

	rapporterRute();

	rapporterLengde();

	rapporterTidsbruk();



}//beregnTrykket()



/// --- Andre funksjoner --- ///





function rapporterRute():void {

	for(i=0;i<rute.length;i++) {

		rapportTa.text=rapportTa.text+rute[i]+", ";



	}//for



}//rapporterRute()



function rapporterLengde():void {

	for(i=1;i<rute.length;i++){

		totalavstand+=finnAvstand(rute[i-1],rute[i]);

	}//for

	rapportTa.text=rapportTa.text+"\nLengde: "+totalavstand.toFixed(1);

}//rapporterLengde()



function rapporterTidsbruk():void {

	var tid: String = totalavstand/20;

	rapportTa.text=rapportTa.text+"\nTidsbruk: "+tid.toFixed(0);



}//rapporterTidsbruk()



function finnAvstand(fra: String, til: String):Number {

	var fraindeks:int = stedstabell.indexOf(fra);

	var tilindeks:int = stedstabell.indexOf(til);

	if( (fraindeks>=0) && (tilindeks>=0) ) {

		return avstandstabell[fraindeks][tilindeks];

	}else{

		return -1;

		trace("Fant ikke: "+fra+"eller "+til);

	}//if

}//finnAvstand()