Eksempel på løsning av en som har løst det med JavaScript. (Legg merke til mengden med kode...)
/* 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() |