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()