Løsningsskisser


Oppgave 2 a

/* 
oppgave 2 a
   GUI:
      velgsted_cb		ComboBox
      rapport_ta  	TextArea
*/
/// --- Datastruktur --- ///
var plassering: Array =
   [   
      [ "A", "B" ],     // A og B på Torvet
      [ "C", "D" ],     // C og D på Schrøders plass
      [ "E", "F" ]      // E og F på Bryggeplassen
   ];
  
var stedsnavn: Array = 
   ["Torvet", "Schrøders plass", "Bryggeplassen"];
/// --- Programstruktur --- ///
velgsted_cb.addEventListener(Event.CHANGE, stedBleValgt);
function stedBleValgt(evt: Event): void {
   var stedsindeks: int = velgsted_cb.selectedIndex;
   rapport_ta.text = stedsnavn[stedsindeks] + ":\n" +
                     plassering[stedsindeks].length + "\n"+ 
                     plassering[stedsindeks];
}//stedblevalgt()

Oppgave 2 b

 

/*
   Oppgave 2 b
   Lage funksjon oppdatering()
*/
/// --- Datastruktur --- ///
var plassering: Array =
    [  [ "A", "B" ],          // A og B på Torvet
       [ "C", "D" ],          // C og D på Schrøders plass
       [ "E", "F" ]           // E og F på Bryggeplassen
   ];
var stedsnavn: Array = ["Torvet", "Schrøders plass", "Bryggeplassen"];
// Oppdater-funksjonen: 
function oppdater(sykkelnavn:String, nyttsted: String): void {
   var stedsindeks:   int = -1;
   var sykkelindeks:  int = -1;
   var nystedsindeks: int = stedsnavn.indexOf(nyttsted);
// Finn sted:  (Bør egentlig bruke while og stoppe når funnet)
   for(var i:int = 0; i < plassering.length; i++ ) {
      if( plassering[i].indexOf(sykkelnavn) >= 0 ) {
         stedsindeks = i; 
      }//if
   }// for alle steder
   if(stedsindeks >= 0) {
      sykkelindeks= plassering[stedsindeks].indexOf(sykkelnavn);
      plassering[stedsindeks].splice(sykkelindeks,1);   
      if(nystedsindeks >= 0) {
         plassering[nystedsindeks].push(sykkelnavn);
      }else {
         plassering[stedsindeks].push(sykkelnavn); //sett tilbake
      }//if
   }else{
      trace("Fant ikke sykkel...");
   }
}//oppdater()
/// --- Testkode: --- ///
function visplassering():void {
   for each(var linje in plassering) {
      trace(linje);
   };//for
   trace();
};
oppdater("A","Bryggeplassen");
visplassering();
oppdater("E","Schrøders plass");
visplassering();
oppdater("D","Schrøders plass");
visplassering();
oppdater("F","Schrøders plass");
visplassering();
oppdater("A","Torvet");
visplassering();
// test av feil:
oppdater("X", "Bryggeplassen");
visplassering();
oppdater("B", "Solhøyden");
visplassering();

Oppgave 3

 

import flash.events.Event;
/*
Oppgave 3:
   GUI:
      velgsted_cb	ComboBox
      velgsykkel_cb ComboBox
      flytt_btn
      rapport_ta  TextArea
*/
/// --- Datastruktur --- ///
var plassering: Array =
    [   [ "A", "B" ],          // A og B på Torvet
        [ "C", "D" ],          // C og D på Schrøders plass
        [ "E", "F" ]           // E og F på Bryggeplassen
   ];
var stedsnavn: Array =     ["Torvet", "Schrøders plass", "Bryggeplassen"];
var sykkelnavn: Array =    ["A","B","C","D","E","F"];
var kjorelengder: Array =  [0,0,0,0,0,0];
var avstander: Array =
   [
      [   0,  1.5,  1],
      [ 1.5,   0 ,  2],
      [   1,   2 ,  0]
   ];
/// --- Programstruktur --- ///
flytt_btn.addEventListener(MouseEvent.CLICK,flyttSykkel);
function flyttSykkel(evt: Event): void {
   var stedsindeks:int = -1;
   var sykkelindeks:int = velgsykkel_cb.selectedIndex;
   var sykkelnavn: String = sykkelnavn[sykkelindeks];
   var nystedsindeks:int  = velgsted_cb.selectedIndex;
   // Finn sted:  (burde vært egen funksjon og burde brukt while)
   for(var i:int = 0; i < plassering.length; i++ ) {
      if( plassering[i].indexOf(sykkelnavn) >= 0 ) {
         stedsindeks = i; 
      }//if
   }// for alle steder
   var kjorelengde: Number = 	
         3 * avstander[stedsindeks][nystedsindeks];
   kjorelengder[sykkelindeks] += kjorelengde;
   oppdater(sykkelnavn[sykkelindeks],stedsnavn[stedsindeks]);
   rapport_ta.text = sykkelnavn[sykkelindeks] + " har gått: \n" +
                     kjorelengder[sykkelindeks] + " km.";
   visplassering();
   trace(kjorelengder);
}//flyttSykkel()
// Fra oppgave 2b:
function oppdater(sykkelnavn:String, nyttsted: String): void {
   ... (se oppgave 2b.)   
}//oppdater()
/// --- Testkode --- ///
function visplassering():void {
   ... (se oppgave 2b.)
};