14. april 2006 - 16:04Der er
6 kommentarer og 1 løsning
Kodespørgsmål igen
I følgende kode, vil det så sige, at hvis der ikke er tre ens i nogle af tabellerne, så bliver iScore lig 11? Og hvilken værdi antager result alt efter, hvilken række/linie der er tre ens i?
function vundetellerej(iPos: 3x3): integer; //3x3 er en matrix var iScore : Integer; i : Integer; j : Integer; begin Result := -1;
//in rows? iScore := 0; for i := 1 to 3 do begin iScore := 0; Inc(Result); for j := 1 To 3 do Inc(iScore, iPos[i,j]); if iScore = 3 Then Exit end;//for i
//top-left bottom-right diagonal? iScore := 0; Inc(Result); for i := 1 to 3 do Inc(iScore, iPos[i,i]); if iScore = 3 then Exit;
//top-right bottom-left diagonal? iScore := 0; Inc(Result); for i := 1 to 3 do Inc(iScore, iPos[i,4-i]); if iScore = 3 then Exit;
//columns? for i := 1 to 3 do begin iScore := 0; Inc(Result); for j := 1 to 3 do Inc(iScore, iPos[j,i]); if iScore = 3 then Exit; end;//for i
Koden gennemgår arrayet vandret, diagonal fra venstre mod højre, diagonalt fra højre mod venstre og til sidst lodret. Finder den 3 1-taller bliver iScore=3 og funktionen forlades med værdien 0 Hvis den når hele vejen igennem uden at finde 3 1-taller forlades funktionen med værdien -1 I koden kan du altså finde ud af om der er 3 på stribe ved at se på værdien af funktionen VundetEllerEj. Er værdien 0 er der 3 på stribe. Er værdien -1 er der ikke 3 på stribe.
Du har lidt ret. Finder den 3 på stribe -vandret er funktionen 0,1 eller 2 alt efter hvilken række der er 3 på stribe -diagonalt fra venstre er funktionen 4 -diagonal fra højre er funktionen 5 -lodret er funktionen 6,7 eller 8 Hvis der ikke findes 3 på stribe sættes værdien til -1 i næstsidste linie i funktionen
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.