Prøve IT2 - Kapittel 3,4 og 5

Løsningsskisser

26.01.15

1.

Deklarer en tabell-variabel (array) med navn navne_tabell som inneholder navnene:

Ferkenberg, Woxholdt, Snytenstrup, Hattek og Dusterud.

 

var navne_tabell: Array = 
   ["Ferkenberg", "Woxholdt", "Snytenstrup", "Hattek", "Dusterud"];

2.

Skriv instruksjonen som sorterer tabellen i oppgave 1 alfabetisk.

 

navne_tabell.sort();
(Obs: Hvis numerisk må vi bruke ...sort(Array.NUMERIC); )

3.

En tabell med navn temperaturer inneholder måledata med datatype Number.

Skriv kode som finner gjennomsnittsverdien av måleverdiene i tabellen og legger resultatet
i en variabel med navn gjennomsnittstemperatur.

 

var sum: Number = 0.0;

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

   sum += temperaturer[i];

}//for

gjennomsnittstemperatur = sum/temperaturer.length;

4.

Lag kode med for-løkke som skriver ut dette mønsteret i Output-dialogen i Flash:

1

2 2

3 3 3

4 4 4 4

5 5 5 5 5

 

var s: String = "";

for(var i: int = 1; i <= 5; i++) {

	s = "";

	for(var j:int = 1; j <= i; j++){

		s += i + " ";

	}// for j

	trace(s);

}//for i

5.

I en quiz-applikasjon har vi en tabell (array),

var svar_tabell: Array = [true, true, false, ..., true];

tabellen svar_tabell inneholder Boolske verdier som angir om en bruker har svart riktig eller ikke
på et spørsmålsnummer.
(Første element i tabellen gjelder første spørsmål, andre element i tabellen gjelder andre spørsmål, osv.)

Skriv kode som er nødvendig for å finne ut hvor mange riktige svar en bruker har ut fra en slik tabell
og legg antall riktige svar i en variabel med navn antall_riktige.

 

var sum: int = 0;

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

   if( svar_tabell[i] ) { 

      sum++;

   }// if

}// for
antall_riktige = sum;
Kommentar:

Ser litt klønete ut å skrive:
	if (svar_tabell[i]==true) {...

 

6.

Skriv en while-løkke som multipliserer alle like tall (partall) fra og med 2 til og med 1000 med hverandre
og skriver ut resultatet med trace()-kommandoen.

 

// Bruker Number, da produktet fort blir større enn int.MAX_VALUE:

var produkt: Number = 1;	// Må være 1, ikke 0!

var partall: uint = 2;
// Bruker 100, da 1000 gir produkt større enn Number.MAX_VALUE:

while( partall <= 100) { 

	produkt *= partall;

	partall += 2;

}// while
trace(produkt);		// Gir verdien: 3.42 e+79 !

7.

Gitt tabellen

var bruktbiler: Array =

	[ { merke: "Volvo", farve: "Blå", pris: 110},

	  { merke: "Fiat" , farve: "Rød", pris: 160},

	  { merke: "Lada" , farve: "Rustrød", pris: 68},

	  { merke: "Renault", farve: "Hvit", pris: 100} ];

Skriv kode som endrer prisen på Lada-en til 55.

Skriv kode som sorterer denne tabellen alfabetisk på merkenavn.

Skriv kode som finner samlet verdi av alle bilene i en slik tabell

 

a) bruktbiler[2]["pris"] = 55;	
	Eller: bruktbiler[2].pris = 55;
b) bruktbiler.sortOn("merke");
c) 
var verdi: int = 0;

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

   verdi += bruktbiler[i]["pris"];  

          // eller: verdi += bruktbiler[i].pris;

}//for
trace(verdi);	// gir: 438 (etter endringen i a) )

8.

Gitt en todimensjonal avstandstabell:

0 22 41 71 113
22 0 21 51 93
41 21 0 30 72
71 51 30 0 43
113 93 72 43 0

og en endimensjonal tabell:

   var sted: Array = ["arendal", "grimstad", "lillesand", "kristiansand","mandal"];

der "arendal" har indeks 0, "grimstad" har indeks 1 osv. i avstandstabellen. (Helt likt eksemplet i kapittel 5 Arrayer i læreboken.)

Skriv kode som finner avstanden mellom to av disse stedene, der stedsnavnene er hentet fra brukergrensesnittet og ligger i
variabler med navn fra_sted og til_sted

var fra_indeks: int = sted.indexOf(fra_sted);

var til_indeks: int = sted.indexOf(til_sted);

var avstand: int = 0;
if ( (fra_indeks >= 0) && (til_indeks >= 0) ){ //Bør sjekke litt...

   avstand = avstandstabell[fra_indeks][til_indeks];

} else {

   avstand = -1;

}//if

Del 2 - Praktisk

Leveres i It's Learning-mappen "Prøve 26.01.15 - Praktisk" - Alle hjelpemidler

Sjakk-entusiastene Ferkenberg, Woxholdt og Snytenstrup har hatt en sjakk-turnering
og IT-entusiasten Ferkenberg har laget et Flashprogram der resultatene ligger i tabellen:

var resultater: Array = [ [ "","H","R"],

                          ["S","","S"],

                          ["S","R",""] ];

Som figur:

"" "H" "R"
"S" "" "S"
"S" "R" ""

og navnene i tabellen:

var deltagere: Array = ["Ferkenberg", "Woxholdt", "Snytenstrup" ];

Eksempelvis betyr første raden i tabellen resultater at:

Ferkenberg har hatt hvite brikker mot Woxholdt og Snytenstrup og har
vunnet mot Woxholdt og spilt remis (uavgjort) mot Snytenstrup.

Andre raden betyr at:

Woxholdt har hatt hvite brikker mot Ferkenberg og Snytenstrup og har
tapt mot begge.

Lag et program med grensesnitt omtrent som i figuren:

hvor brukeren oppgir navnet på spiller med hvite brikker, spiller med sorte
brikker og resultatet.
Når brukeren trykker knappen "Legg inn", skal programmet legge resultatet
inn i tabellen resultater.

Hvis du rekker det kan du også skrive kode som regner sammen poengsummene
til en av spillerne, der spilleren får 0 for tap, 1 for remis (uavgjort) og 2 for seier.

/*

   GUI:

      hvit_tf, sort_tf, resultat_tf : TextField

      legg_inn_btn: Button

*/
/// --- GUI --- ///
legg_inn_btn.addEventListener(MouseEvent.CLICK, legg_inn_btn_Trykket); 
function legg_inn_btn_Trykket(evt: MouseEvent):void {

   var spiller_hvit: String = hvit_tf.text;

   var spiller_sort: STring = sort_tf.text;
   var hvit_indeks: int = deltagere.indexOf(spiller_hvit);

   var sort_indeks: int = deltagere.indexOf(spiller_sort);
   resultater[hvit_indeks][sort_indeks] = resultat_tf.text;
   trace(resultater);
}//legg_inn_btn_Trykket()
/// --- Datastruktur --- ///
var resultater: Array = 

      [[ "", "H", "R"],

       ["S", "", "S"],

       ["S", "R", ""]];
var deltagere: Array = 

      ["Ferkenberg", "Woxholdt", "Snytenstrup"];
Utregning av poengsum: (Legger dette i en funksjon, siden vi for tiden holder på med funksjoner)
function finnPoeng(spiller: String): int {

   var poeng: int = 0;

   var spiller_indeks = deltagere.indexOf(spiller);
   // Poeng som hvit:

   for(var kol: int = 0; kol < resultater[spiller_indeks].length;kol++) { 
      if(resultater[spiller_indeks][kol]=="H") {

         poeng+=2;

      }else if(resultater[spiller_indeks][kol]=="R") {

         poeng+=1;

      }// if
   }// for kolonner/motspillere med svart
   // Poeng som sort:

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

      if(resultater[rad][spiller_indeks]=="S") {

         poeng+=2;

      }else if(resultater[rad][spiller_indeks]=="R") {

         poeng+=1;

      }// if

   }// for rader/motspillere med hvit
   return poeng;
}// finnPoeng()