dimitri rettig: Java-Script - EM Plan-Probleme....

Beitrag lesen

Hallo,

ich hätte folgenden Lösungsansatz: Man kann die Ergebnisse innerhalb einer quadratischen Matrix darstellen. Eine Tabelle könnte wie folgt aussehen:

| 1 2 3 4
------------
1 | 0 3 0 2
2 | 2 0 3 1
3 | 0 1 0 0
4 | 2 4 5 0

Das Element in der i-ten Zeile und in der j-ten Spalte gibt an, wieviele Tore die Mannschaft, die in der i-ten Zeile steht gegen die Mannschaft in der j-ten Spalte geschossen hat. Es bietet sich an, die Hauptdiagonale mit Nullen zu belegen. Um zu ermitteln, wie vile Punkte eine Mannschaft erkämpft hat, geht man die Zeile, in der die Mannschaft steht, durch und vergleicht die Werte mit den Werten, die in der der Mannschaft entsprechenden Spalte stehen und vergibt auch dementsprechend drei, einen oder null Punkte.

function auswerten(erg) {   // erg ist ein mehrdimensionales Array (4x4)
   var tab  = new Array(1, 2, 3, 4); // Tabelle
   var tor = new Array(4);  // Anzahl der Tore
   var pkt  = new Array(4); // Anzahl der Punkte

for (var z=0; z<3; z++) {      // z: Zeile
      for (var s=z+1; s<4; s++) { // s: Spalte
         tor[z] += erg[z][s];
         tor[s] += erg[s][z];

if (erg[z][s] > erg[s][z])
            pkt[z][s] += 3;
         elsif (erg[z][s] == erg[s][z]) {
            pkt[z][s]++;
            pkt[s][z]++;
         }
      }
   }
   // eine etwas abgewandelte Version von Insertion-Sort unter Beachtung von Punkten und Toren eignet sich ganz gut zum Sortieren von 4 Elementen
   for (var i=1; i<4; i++) {
      var pm = pkt[i];   // Punkte-Merker
      var gm = tor[i];   // Tore-Merker
      var tm = tab[i];   // Tabellenplatz-Merker
      var j = i-1;
      while (j>-1 && pkt[j] > pm) {
         pkt[j+1] = pkt[j];
         tor[j+1] = tor[j];
         tab[j+1] = tab[j];
         j--;
      }

if (pkt[j] == pm && tor[j] < gm) { // jetzt kommt es auf die Tore an
         pkt[j+1] = pkt[j]; pkt[j] = pm;
         tor[j+1] = tor[j]; tor[j] = gm;
         tab[j+1] = tab[j]; tab[j] = tm;
      }
      else {
         pkt[j+1] = pm;
         tor[j+1] = gm;
         tab[j+1] = tm;
      }
   }
   return tab;
}

Diese Funktion sollte die Reihenfolge der Mannschaften zurückgeben.

Mit freundlichen Grüßen
   Dimitri Rettig